diff --git a/SConscript b/SConscript
index 101e379d3f91b6603032800403378ad8f4d336be..448adf915eccb573ca059eac478839667efc2910 100644
--- a/SConscript
+++ b/SConscript
@@ -39,16 +39,17 @@ else:
     os.chdir(os.environ['SECURITY_TRANSFORMS_HOME'])
 
 
-env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO"
 
 pedi = Command( target = "./testoutput",
 		source = "./SConscript",
                 action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " )
 
+env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO"
+
 if sysname != "SunOS":
 	libPEBLISS=SConscript("pebliss/trunk/pe_lib/SConscript", variant_dir='scons_build/libPEBLISS')
 	# setup libraries needed for linking
-	env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO", "pebliss"
+	env['BASE_IRDB_LIBS']=env['BASE_IRDB_LIBS']+("pebliss",)
 	Depends(pedi,libPEBLISS)
 
 # pebliss requires iconv, which needs to be explicit on cygwin.
@@ -58,20 +59,21 @@ if "CYGWIN" in sysname:
 
 Export('env')
 
+libcapstone=env.Install("$SECURITY_TRANSFORMS_HOME/lib","$SECURITY_TRANSFORMS_HOME/libcapstone/libcapstone.so.4")
 libehp=env.SConscript("libehp/SConscript", variant_dir='scons_build/libehp')
 libehp=env.Install("$SECURITY_TRANSFORMS_HOME/lib", libehp);
-
 libtransform=SConscript("libtransform/SConscript", variant_dir='scons_build/libtransform')
 libEXEIO=SConscript("libEXEIO/SConscript", variant_dir='scons_build/libEXEIO')
-libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine')
+#libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine')
 libMEDSannotation=SConscript("libMEDSannotation/SConscript", variant_dir='scons_build/libMEDSannotation')
 libxform=SConscript("xform/SConscript", variant_dir='scons_build/libxform')
 libIRDB=SConscript("libIRDB/SConscript", variant_dir='scons_build/libIRDB')
+Depends(libIRDB,libcapstone)
 libStructDiv=SConscript("libStructDiv/SConscript", variant_dir='scons_build/libStructDiv')
 libElfDep=SConscript("libElfDep/SConscript", variant_dir='scons_build/libElfDep')
 
 
-Depends(pedi, (libehp,libtransform,libEXEIO,libbea,libMEDSannotation,libxform,libIRDB,libStructDiv,libElfDep))
+Depends(pedi, (libehp,libtransform,libEXEIO,libMEDSannotation,libxform,libIRDB,libStructDiv,libElfDep, libcapstone))
 
 tools=None
 if 'build_tools' not in env or env['build_tools'] is None or int(env['build_tools']) == 1:
diff --git a/SConstruct b/SConstruct
index 0180dbc4a74c660677d100a709a741b2dc842698..6804dccd1644ca53f7da2e2d48633c2e04450917 100644
--- a/SConstruct
+++ b/SConstruct
@@ -24,28 +24,20 @@ env.Replace(build_tools=ARGUMENTS.get("build_tools", 1))
 env.Replace(build_stars=ARGUMENTS.get("build_stars", 1))
 env.Replace(build_cgc=ARGUMENTS.get("build_cgc", 0))
 
+env.Append(LINKFLAGS=" -Wl,-unresolved-symbols=ignore-in-shared-libs ")
 
 if int(env['debug']) == 1:
         print "Setting debug mode"
         env.Append(CFLAGS=" -g ")
         env.Append(CXXFLAGS=" -g ")
-        env.Append(LINKFLAGS=" -g ")
+	env.Append(LINKFLAGS=" -g ")
+	env.Append(SHLINKFLAGS=" -g ")
 else:
         print "Setting release mode"
         env.Append(CFLAGS=" -O3 ")
         env.Append(CXXFLAGS=" -O3 ")
-        env.Append(LINKFLAGS=" -O3 ")
-
-if 'build_cgc' in env and int(env['build_cgc']) == 1:
-        print "Setting debug mode"
-        env.Append(CFLAGS=" -DCGC ")
-        env.Append(CXXFLAGS=" -DCGC ")
-        env.Append(LINKFLAGS=" -DCGC ")
-	print 'Turn off appfw as we are building CGC'
-	env['build_appfw'] = 0
-elif env['build_appfw'] is None: # by default, turn on build of appfw, unless cgc is on
-	env['build_appfw'] = 1
-
+        env.Append(LINKFLAGS=" -O3  ")
+        env.Append(SHLINKFLAGS=" -O3  ")
 
 # set 32/64 bit build properly
 print  "env[64bit]="+str(env['do_64bit_build'])
@@ -69,6 +61,7 @@ else:
 # add extra flag for solaris.
 if sysname == "SunOS":
         env.Append(LINKFLAGS=" -L/opt/csw/lib -DSOLARIS  ")
+        env.Append(SHLINKFLAGS=" -L/opt/csw/lib -DSOLARIS  ")
         env.Append(CFLAGS=" -I/opt/csw/include -DSOLARIS ")
         env.Append(CXXFLAGS=" -I/opt/csw/include -DSOLARIS  ")
 
diff --git a/libEXEIO/src/SConscript b/libEXEIO/src/SConscript
index 2082e8098785b66c926868216168447458aa1636..413aadb3a346d28327d1af0621ae11c140aa024a 100644
--- a/libEXEIO/src/SConscript
+++ b/libEXEIO/src/SConscript
@@ -21,7 +21,7 @@ cpppath='''
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS=" -std=c++11 -Wall -Werror ")
-lib=myenv.Library(libname, Split(files))
+lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core pebliss"), LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" )
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/libElfDep/src/SConscript b/libElfDep/src/SConscript
index 848a762e591eb9a29d5555a7a065f0a5c31a1d78..9da08bd9c97e3e28caa1f2c475ec161be03df536 100644
--- a/libElfDep/src/SConscript
+++ b/libElfDep/src/SConscript
@@ -23,7 +23,7 @@ LIBS=Split("IRDB-core transform")
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS = " -std=c++11 ")
 
-lib=myenv.Library("ElfDep",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
+lib=myenv.SharedLibrary("ElfDep",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
 
diff --git a/libIRDB/src/cfg/SConscript b/libIRDB/src/cfg/SConscript
index 327f3031ef7b3242ecc8a218ada63da15d5dd62b..c9e8e715cd9b968b23bf9134009c81d655192826 100644
--- a/libIRDB/src/cfg/SConscript
+++ b/libIRDB/src/cfg/SConscript
@@ -14,11 +14,14 @@ cpppath='''
 	$SECURITY_TRANSFORMS_HOME/include/
 	$SECURITY_TRANSFORMS_HOME/libIRDB/include/
 	'''
+libpath='''
+	$SECURITY_TRANSFORMS_HOME/lib
+	'''
 
 myenv.Append(CCFLAGS=" -Wall -std=c++11")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-lib=myenv.Library(libname, Split(files))
+lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core"), LIBPATH=Split(libpath))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/libIRDB/src/core/SConscript b/libIRDB/src/core/SConscript
index fc85c1a7d9e881bcd692407eb5eeb2c4e695ec90..b538b5836f21a88d19043920906a184377752fa9 100644
--- a/libIRDB/src/core/SConscript
+++ b/libIRDB/src/core/SConscript
@@ -42,15 +42,17 @@ cpppath='''
 	$SECURITY_TRANSFORMS_HOME/libIRDB/include/
 	$SECURITY_TRANSFORMS_HOME/libcapstone/include/capstone/
 	'''
-#	$SECURITY_TRANSFORMS_HOME/beaengine/include
-#	$SECURITY_TRANSFORMS_HOME/beaengine/beaengineSources/Includes/
+libpath='''
+	$SECURITY_TRANSFORMS_HOME/lib
+        '''
 
-globs=glob.glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/libcapstone/zipr_unpack/*.o')
+#globs=glob.glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/libcapstone/zipr_unpack/*.o')
 
 myenv.Append(CCFLAGS=" -Wall -std=c++11 ")
+myenv.Append(LIBPATH=libpath)
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-mylib=myenv.Library(libname, Split(files) + globs)
+mylib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("pqxx capstone"))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", mylib)
 Default(install)
diff --git a/libIRDB/src/core/fileir.cpp b/libIRDB/src/core/fileir.cpp
index a46336a57fde879856f47329b13de221500d134e..89f94dba2c1b48ca938056fb4144cdf551617726 100644
--- a/libIRDB/src/core/fileir.cpp
+++ b/libIRDB/src/core/fileir.cpp
@@ -869,27 +869,30 @@ void FileIR_t::WriteToDB()
 // eh css relocs
 	for(const auto& i : eh_css)
 	{
-		for(auto& reloc : i->GetRelocations())
+		const auto &relocs=i->GetRelocations();
+		for(auto& reloc : relocs)
 			W_reloc << reloc->WriteToDB(fileptr,i);
 	}
 
 // eh pgms relocs
 	for(const auto& i : eh_pgms)
 	{
-		string r="";
-		for(auto& reloc : i->GetRelocations())
+		const auto &relocs=i->GetRelocations();
+		for(auto& reloc : relocs)
 			W_reloc << reloc->WriteToDB(fileptr,i);
 	}
 // scoops relocs
 	for(const auto& i : scoops)
 	{
-		for(auto& reloc : i->GetRelocations())
+		const auto &relocs=i->GetRelocations();
+		for(auto& reloc : relocs)
 			W_reloc << reloc->WriteToDB(fileptr,i);
 	}
 // write out instruction's relocs
 	for(const auto& i : insns)
 	{
-		for(auto& reloc : i->GetRelocations())
+		const auto &relocs=i->GetRelocations();
+		for(auto& reloc : relocs)
 			W_reloc << reloc->WriteToDB(fileptr,i);
 	}
 	W_reloc.complete();
diff --git a/libIRDB/src/syscall/SConscript b/libIRDB/src/syscall/SConscript
index 358dafeb992a32b0b574f5a449c5d8cab3c566a2..2a5acdb1c9e4901dd7f686a81fadda160cbaa61f 100644
--- a/libIRDB/src/syscall/SConscript
+++ b/libIRDB/src/syscall/SConscript
@@ -20,7 +20,7 @@ myenv.Append(CXXFLAGS = " -std=c++11 ")
 
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-lib=myenv.Library(libname, Split(files))
+lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core IRDB-util"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib"))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/libIRDB/src/util/SConscript b/libIRDB/src/util/SConscript
index 202ea107ef42cee0a01befee0d72f5adedc9c452..2e773c30efd67175ad565c6105cf6ff741e239f7 100644
--- a/libIRDB/src/util/SConscript
+++ b/libIRDB/src/util/SConscript
@@ -20,7 +20,7 @@ cpppath='''
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS = " -std=c++11 ")
-lib=myenv.Library(libname, Split(files))
+lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib"))
 
 install=env.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/libMEDSannotation/SConscript b/libMEDSannotation/SConscript
index 31b5b9cea327e49ddcde3ed72f134038ddbfbb46..8ca4d129ed12299042ca4858702c025c6e8eb7f1 100644
--- a/libMEDSannotation/SConscript
+++ b/libMEDSannotation/SConscript
@@ -28,7 +28,7 @@ cpppath='''
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS=" -std=c++11 -Wall -Werror ")
-lib=myenv.Library(lib, Split(files))
+lib=myenv.SharedLibrary(lib, Split(files))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/libStructDiv/src/SConscript b/libStructDiv/src/SConscript
index 8971803762bfb7ec6f46aad3f083ceea0492c129..11fce4d5b8a15fa99b3a6044b971a5bbbd3616c2 100644
--- a/libStructDiv/src/SConscript
+++ b/libStructDiv/src/SConscript
@@ -17,7 +17,7 @@ LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS="-fPIC")
-lib=myenv.Library("StructDiv",  Split(files))
+lib=myenv.SharedLibrary("StructDiv",  Split(files))
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
 
diff --git a/libcapstone b/libcapstone
index 9408c0de4f3a4b2a3cc1cac3f22219301c561400..a6b87b7bc31499b9ec538701b438f7a60e9dda38 160000
--- a/libcapstone
+++ b/libcapstone
@@ -1 +1 @@
-Subproject commit 9408c0de4f3a4b2a3cc1cac3f22219301c561400
+Subproject commit a6b87b7bc31499b9ec538701b438f7a60e9dda38
diff --git a/libehp b/libehp
index b35d893a29ae39f9c8ecb01a2e489e73facee169..2de79bf5a1df8c8c899c9c63edee76cbb35bb2ed 160000
--- a/libehp
+++ b/libehp
@@ -1 +1 @@
-Subproject commit b35d893a29ae39f9c8ecb01a2e489e73facee169
+Subproject commit 2de79bf5a1df8c8c899c9c63edee76cbb35bb2ed
diff --git a/libtransform/src/SConscript b/libtransform/src/SConscript
index 81e16c5735b7682d28bbacab8ff27914dd7d59d4..d075920eb834ac1559db6c85db1387a88fd4111e 100644
--- a/libtransform/src/SConscript
+++ b/libtransform/src/SConscript
@@ -18,12 +18,12 @@ cpppath='''
 
 
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
-LIBS=Split("IRDB-core IRDB-cfg IRDB-util pqxx BeaEngine_s_d ")
+LIBS=Split("IRDB-core IRDB-cfg IRDB-util MEDSannotation")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CXXFLAGS = " -std=c++11 ")
 
-lib=myenv.Library("transform",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
+lib=myenv.SharedLibrary("transform",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
 Return('install')
diff --git a/manifest.txt b/manifest.txt
index 18453af13388ebde519038374dd4e714319f0f05..8895a37f73bef484562e70fb3dbe807084a69b06 100644
--- a/manifest.txt
+++ b/manifest.txt
@@ -1,4 +1,5 @@
 
 directory plugins_install ps
+directory lib ps
 directory bin ps
 
diff --git a/pebliss/trunk/pe_lib/SConscript b/pebliss/trunk/pe_lib/SConscript
index 3a8a79d46d771df76ac6a01f146b44962f38fb60..6e58fd457d33b83d2ba007cb49085106469b062f 100644
--- a/pebliss/trunk/pe_lib/SConscript
+++ b/pebliss/trunk/pe_lib/SConscript
@@ -52,7 +52,7 @@ cpppath='''
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CCFLAGS=" -w ")
-lib=myenv.Library(libname, Split(files))
+lib=myenv.SharedLibrary(libname, Split(files))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
 Default(install)
diff --git a/tools/hook_start/SConscript b/tools/hook_start/SConscript
index 58d5384d925f97cb476016d6bb682705c6042118..2018f047564baffef1abf48f20a47f131ac2068d 100644
--- a/tools/hook_start/SConscript
+++ b/tools/hook_start/SConscript
@@ -18,7 +18,7 @@ cpppath='''
 #	 $SECURITY_TRANSFORMS_HOME/libtransform/include 
 CPPFLAGS="--std=c++11"
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
-LIBS=Split( env.subst('$BASE_IRDB_LIBS')+ " IRDB-core IRDB-cfg IRDB-util pqxx BeaEngine_s_d transform MEDSannotation ")
+LIBS=Split( env.subst('$BASE_IRDB_LIBS')+ " IRDB-cfg IRDB-util transform MEDSannotation ")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 myenv.Append(CPPFLAGS=CPPFLAGS)
diff --git a/tools/selective_cfi/zest_cfi_runtime/SConscript64 b/tools/selective_cfi/zest_cfi_runtime/SConscript64
index 9b14c4ec798020a8934afbc7e71eb0b46c8125b6..650a83866f068718da6cea07883de22bed4b5cff 100644
--- a/tools/selective_cfi/zest_cfi_runtime/SConscript64
+++ b/tools/selective_cfi/zest_cfi_runtime/SConscript64
@@ -1,8 +1,7 @@
 import os
 
 
-Import('env')
-myenv=env.Clone()
+myenv=Environment()
 myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
 myenv.Replace(ZEST_RUNTIME=os.environ['ZEST_RUNTIME'])
 
diff --git a/xform/SConscript b/xform/SConscript
index 26e7d6fd697a7e9ea443ebe409a6d4d69b83b60f..e1af37fa9cd25ac1e18962acd38edb281d8f18b1 100644
--- a/xform/SConscript
+++ b/xform/SConscript
@@ -30,7 +30,7 @@ CFLAGS="-fPIC  -DUBUNTU"
 
 myenv=myenv.Clone(CC="$CXX", CPPPATH=Split(cpppath), CFLAGS=CFLAGS)
 myenv.Append(CXXFLAGS=" -std=c++11 ")
-lib=myenv.Library(lib, Split(files))
+lib=myenv.SharedLibrary(lib, Split(files), LIBS=Split("IRDB-core EXEIO"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib"))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)