diff --git a/SMPStaticAnalyzer b/SMPStaticAnalyzer
index 152274cfbdc3fc428ea3583fa6311507e3aa7c9f..cd5de11609d4cb125396f7345365886fbdc0ced9 160000
--- a/SMPStaticAnalyzer
+++ b/SMPStaticAnalyzer
@@ -1 +1 @@
-Subproject commit 152274cfbdc3fc428ea3583fa6311507e3aa7c9f
+Subproject commit cd5de11609d4cb125396f7345365886fbdc0ced9
diff --git a/builtin_xforms/move_globals/mg.cpp b/builtin_xforms/move_globals/mg.cpp
index 9d2c2c78474f8c61275e254c39c75f9936c158a9..85d46769860a78cd5b9eddb06911b15e3fd4d5bc 100644
--- a/builtin_xforms/move_globals/mg.cpp
+++ b/builtin_xforms/move_globals/mg.cpp
@@ -21,10 +21,20 @@ using namespace EXEIO;
 
 #define ALLOF(s) begin(s), end(s)
 
+template <typename Fn, typename FirstArg>
+auto myBind1st(Fn fn, const FirstArg& first) {
+    return std::bind(fn, first, std::placeholders::_1);
+}
+
+template <typename Func, typename T>
+auto myBind2nd(Func func, const T& value) {
+    return std::bind(func, std::placeholders::_1, value);
+}
+
 
 
 // use this to determine whether a scoop has a given name.
-static struct ScoopFinder : binary_function<DataScoop_t*,string,bool>
+static struct ScoopFinder // : binary_function<DataScoop_t*,string,bool>
 {
 	// declare a simple scoop finder function that finds scoops by name
 	bool operator()(const DataScoop_t* scoop, const string word)  const
@@ -401,7 +411,7 @@ void MoveGlobals_t<T_Sym,T_Rela,T_Rel,T_Dyn,T_Extractor>::FilterScoops()
 		istream_iterator<string>(), [&](const string & word)
 	{
 		// find the scoop
-		auto it=find_if(ALLOF(moveable_scoops), bind2nd(finder, word));
+		auto it=find_if(ALLOF(moveable_scoops), myBind2nd(finder, word));
 		// if found, insert into the move_only set.
 		if(it!=moveable_scoops.end())
 		{
@@ -441,7 +451,7 @@ void MoveGlobals_t<T_Sym,T_Rela,T_Rel,T_Dyn,T_Extractor>::FilterScoops()
 		istream_iterator<string>(), [&](const string & word)
 	{
 		// find scoop by that name.
-		auto it=find_if(ALLOF(moveable_scoops), bind2nd(finder,word));
+		auto it=find_if(ALLOF(moveable_scoops), myBind2nd(finder,word));
 		if(it!=moveable_scoops.end())
 		{
 			moveable_scoops.erase(*it);
@@ -496,8 +506,8 @@ void MoveGlobals_t<T_Sym,T_Rela,T_Rel,T_Dyn,T_Extractor>::TieScoops()
 
 	for_each(ALLOF(scoop_pairs), [this](const scoop_pairs_t pair)
 	{
-		auto it1=find_if(ALLOF(moveable_scoops), bind2nd(finder,pair.first));
-		auto it2=find_if(ALLOF(moveable_scoops), bind2nd(finder,pair.second));
+		auto it1=find_if(ALLOF(moveable_scoops), myBind2nd(finder,pair.first));
+		auto it2=find_if(ALLOF(moveable_scoops), myBind2nd(finder,pair.second));
 
 		// both exist, tie together.
 		if(it1!=moveable_scoops.end() && it2!=moveable_scoops.end())
@@ -1809,7 +1819,7 @@ void MoveGlobals_t<T_Sym,T_Rela,T_Rel,T_Dyn,T_Extractor>::FilterAndCoalesceTiedS
 				".dynamic",
 				".jcr"
 			};
-			const auto a_binder = bind1st(finder, to_find);
+			const auto a_binder = myBind1st(finder, to_find);
 			const auto it=find_if(ALLOF(dont_coalesce_scoops), a_binder);
 
 			return (it!=end(dont_coalesce_scoops));
diff --git a/irdb-libs/dump_insns/SConscript b/irdb-libs/dump_insns/SConscript
index bdd98d4d4bfd2a20aa161fca24aaebcc980444f0..08948a1cc8a76fa954246549ae2ecd9971501d23 100644
--- a/irdb-libs/dump_insns/SConscript
+++ b/irdb-libs/dump_insns/SConscript
@@ -13,7 +13,7 @@ cpppath='''
 
 files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
 
-myenv.Append(CPPFLAGS="-std=c++14")
+myenv.Append(CPPFLAGS="-std=c++17")
 
 
 pgm="dump_insns.exe"
diff --git a/irdb-libs/dump_map/SConscript b/irdb-libs/dump_map/SConscript
index 31f7ac41ba5e13bc5c0c8f928475ab9f7f5463bc..9515e0384518242be83636d843a05f850ec215fc 100644
--- a/irdb-libs/dump_map/SConscript
+++ b/irdb-libs/dump_map/SConscript
@@ -11,7 +11,7 @@ cpppath='''
 	 $IRDB_SDK/include 
 	'''
 
-myenv.Append(CPPFLAGS="-std=c++14")
+myenv.Append(CPPFLAGS="-std=c++17")
 
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 LIBS=Split( " irdb-core irdb-cfg irdb-util irdb-transform ") 
diff --git a/irdb-libs/ir_builders/SConscript b/irdb-libs/ir_builders/SConscript
index 158efa768b2a74309da9f8d9727bdaebc5f018d3..42780e7cf6e3713351c1dba449811c138713bd2b 100644
--- a/irdb-libs/ir_builders/SConscript
+++ b/irdb-libs/ir_builders/SConscript
@@ -24,7 +24,7 @@ if 'build_tools' not in myenv or myenv['build_tools'] is None or int(myenv['buil
 
 	myenv=myenv.Clone(CPPPATH=Split(cpppath))
 
-	myenv.Append(CCFLAGS=" -std=c++14 -Wall")
+	myenv.Append(CCFLAGS=" -std=c++17 -Wall")
 
 	ehframe=myenv.SharedObject("read_ehframe.cpp");
 	split_eh_frame=myenv.SharedObject("split_eh_frame.cpp");
diff --git a/irdb-libs/ir_builders/fix_calls.cpp b/irdb-libs/ir_builders/fix_calls.cpp
index 22f253045323f293e591114c1803164a2a590ae4..2f117bec4b00ee39f065d85fe4206803c9418b60 100644
--- a/irdb-libs/ir_builders/fix_calls.cpp
+++ b/irdb-libs/ir_builders/fix_calls.cpp
@@ -698,7 +698,7 @@ class FixCalls_t : public TransformStep_t
 		}
 
 
-		template <class T> struct insn_less : binary_function <T,T,bool> 
+		template <class T> struct insn_less // : binary_function <T,T,bool> 
 		{
 			bool operator() (const T& x, const T& y) const 
 			{
diff --git a/irdb-libs/ir_builders/split_eh_frame.cpp b/irdb-libs/ir_builders/split_eh_frame.cpp
index 10a43cb49781d5cb0de960f6cb69405ab3ea954d..3416ba96a53034ed72ad93a00eb596330186e46f 100644
--- a/irdb-libs/ir_builders/split_eh_frame.cpp
+++ b/irdb-libs/ir_builders/split_eh_frame.cpp
@@ -263,7 +263,7 @@ void split_eh_frame_impl_t<ptrsize>::build_ir() const
 	auto reusedpgms=size_t(0);
 	struct EhProgramComparator_t 
 	{
-		bool operator() (const whole_pgm_t& lhs, const whole_pgm_t& rhs) 
+		bool operator() (const whole_pgm_t& lhs, const whole_pgm_t& rhs) const
 		{
 			const auto &a=(lhs.pgm);
 			const auto &b=(rhs.pgm);
diff --git a/irdb-libs/libEXEIO/src/SConscript b/irdb-libs/libEXEIO/src/SConscript
index 8655f2860650aae3706944c0280fce52963a76f9..2ae3a0b0af71e79c7c5041ee2df072d6110fd2c7 100644
--- a/irdb-libs/libEXEIO/src/SConscript
+++ b/irdb-libs/libEXEIO/src/SConscript
@@ -20,7 +20,7 @@ cpppath='''
 
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS=" -std=c++14 -Wall -Werror ")
+myenv.Append(CXXFLAGS=" -std=c++17 -Wall -Werror ")
 lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("irdb-core pebliss"), LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" )
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libEXEIO/test/SConscript b/irdb-libs/libEXEIO/test/SConscript
index e2df64a615d035464b279a559536da983bb921b6..3df481f7b7f843c68f35118d4c01d8cb9fff1705 100644
--- a/irdb-libs/libEXEIO/test/SConscript
+++ b/irdb-libs/libEXEIO/test/SConscript
@@ -30,7 +30,7 @@ if "CYGWIN" in sysname:
 	libs = libs + " iconv"
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath), LIBS=Split(libs), LIBPATH=Split(libpath))
-myenv.Append(CXXFLAGS=" -Wall -Werror -std=c++14 ")
+myenv.Append(CXXFLAGS=" -Wall -Werror -std=c++17 ")
 pgm=myenv.Program(libname, Split(files))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/bin/", pgm)
diff --git a/irdb-libs/libIRDB-cfg/src/SConscript b/irdb-libs/libIRDB-cfg/src/SConscript
index 0192688f58486e31da2b54684b31ef21565aacde..2ef427576af6c0bcdf5458a977bdf93f0f0db1d7 100644
--- a/irdb-libs/libIRDB-cfg/src/SConscript
+++ b/irdb-libs/libIRDB-cfg/src/SConscript
@@ -21,7 +21,7 @@ libpath='''
 	$SECURITY_TRANSFORMS_HOME/lib
 	'''
 
-myenv.Append(CCFLAGS=" -Wall -std=c++14 -fmax-errors=2 ")
+myenv.Append(CCFLAGS=" -Wall -std=c++17 -fmax-errors=2 ")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
 lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("irdb-core"), LIBPATH=Split(libpath))
diff --git a/irdb-libs/libIRDB-core/src/SConscript b/irdb-libs/libIRDB-core/src/SConscript
index de63795246c7d93dc4a5a826145358bd1799dd59..a62e7044368891e0d5179d447a74167d6d4d7242 100644
--- a/irdb-libs/libIRDB-core/src/SConscript
+++ b/irdb-libs/libIRDB-core/src/SConscript
@@ -56,7 +56,7 @@ libpath='''
 	$SECURITY_TRANSFORMS_HOME/lib
         '''
 
-myenv.Append(CCFLAGS=" -Wall -std=c++14 -fmax-errors=2")
+myenv.Append(CCFLAGS=" -Wall -std=c++17 -fmax-errors=2")
 myenv.Append(LIBPATH=libpath)
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
diff --git a/irdb-libs/libIRDB-deep/src/SConscript b/irdb-libs/libIRDB-deep/src/SConscript
index 86998c6cee410965797a382e4f3d64b98ee1a882..d980c8b97531bdf423ec979f67d3e50468ebaa89 100644
--- a/irdb-libs/libIRDB-deep/src/SConscript
+++ b/irdb-libs/libIRDB-deep/src/SConscript
@@ -20,7 +20,7 @@ cpppath='''
 #myenv.Append(CCFLAGS=" -Wall -W -Wextra -Wconversion ")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("irdb-core irdb-util irdb-transform stars MEDSannotation"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib"))
 
 install=env.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libIRDB-elfdep/src/SConscript b/irdb-libs/libIRDB-elfdep/src/SConscript
index 86fb9c1a4fbfb038a9aa5d314957351d81dd328c..635b6075ac62f9eb7705679149765f50048e985a 100644
--- a/irdb-libs/libIRDB-elfdep/src/SConscript
+++ b/irdb-libs/libIRDB-elfdep/src/SConscript
@@ -20,7 +20,7 @@ LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 LIBS=Split("irdb-core irdb-transform")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 
 lib=myenv.SharedLibrary("irdb-elfdep",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libIRDB-elfdep/src/elfdep.cpp b/irdb-libs/libIRDB-elfdep/src/elfdep.cpp
index f2546a430435ac32e321d74053916c7a380ff135..2eeb92f140dfe3d77cf03dad1ae864889f249542 100644
--- a/irdb-libs/libIRDB-elfdep/src/elfdep.cpp
+++ b/irdb-libs/libIRDB-elfdep/src/elfdep.cpp
@@ -29,6 +29,7 @@
 #include <libElfDep.hpp>
 #include <iterator>
 #include <algorithm>
+#include <functional>
 
 using namespace libIRDB;
 using namespace std;
@@ -52,7 +53,7 @@ auto myBind2nd(Func func, const T& value) {
 // static helpers
 
 // use this to determine whether a scoop has a given name.
-static struct ScoopFinder : binary_function<const IRDB_SDK::DataScoop_t*,const string,bool>
+static struct ScoopFinder // : binary_function<const IRDB_SDK::DataScoop_t*,const string,bool>
 {
 	// declare a simple scoop finder function that finds scoops by name
 	bool operator()(const IRDB_SDK::DataScoop_t* scoop, const string& name) const
diff --git a/irdb-libs/libIRDB-elfdep/test/SConscript b/irdb-libs/libIRDB-elfdep/test/SConscript
index ebd9ea15ebf57be79f9911ec4845d42567d7c6e3..38e8736186fe1c32081d2ee085d7e1eeb9229667 100644
--- a/irdb-libs/libIRDB-elfdep/test/SConscript
+++ b/irdb-libs/libIRDB-elfdep/test/SConscript
@@ -11,7 +11,7 @@ myenv.Replace(ZIPR_HOME=os.environ['ZIPR_HOME'])
 myenv.Replace(ZIPR_SDK=os.environ['ZIPR_SDK'])
 myenv.Replace(IRDB_SDK=os.environ['IRDB_SDK'])
 
-myenv.Replace(CXXFLAGS = " -g -std=c++14 -Wall ")
+myenv.Replace(CXXFLAGS = " -g -std=c++17 -Wall ")
 myenv.Append(LINKFLAGS = " -Wl,-unresolved-symbols=ignore-in-shared-libs ")
 
 cpppath=''' 
diff --git a/irdb-libs/libIRDB-syscall/include/syscall.hpp b/irdb-libs/libIRDB-syscall/include/syscall.hpp
index 9f3308e705cb7fef0f5123be00212d85c52ebd3f..91bec91179193229c04f06922e7604602ad716b9 100644
--- a/irdb-libs/libIRDB-syscall/include/syscall.hpp
+++ b/irdb-libs/libIRDB-syscall/include/syscall.hpp
@@ -47,7 +47,7 @@ namespace libIRDB
 
 
 			const IRDB_SDK::SyscallSiteSet_t& getSyscalls() const {return syscalls;}
-			IRDB_SDK::SyscallSiteSet_t getSyscalls() {return syscalls;}
+			IRDB_SDK::SyscallSiteSet_t& getSyscalls() {return syscalls;}
 
 		protected:
 			IRDB_SDK::SyscallNumber_t FindSystemCallNumber(IRDB_SDK::Instruction_t* insn, 
diff --git a/irdb-libs/libIRDB-syscall/src/SConscript b/irdb-libs/libIRDB-syscall/src/SConscript
index 4777121632738c8590953aa2d2dbbe541b3dbd87..f81c2c55769af3cb21999b01f7f93480d147a9b7 100644
--- a/irdb-libs/libIRDB-syscall/src/SConscript
+++ b/irdb-libs/libIRDB-syscall/src/SConscript
@@ -18,7 +18,7 @@ cpppath='''
 
 #myenv.Append(CCFLAGS=" -Wall -W -Wextra -Wconversion ")
 
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
diff --git a/irdb-libs/libIRDB-transform/src/SConscript b/irdb-libs/libIRDB-transform/src/SConscript
index 0bc20478438794a1b354c46a71504f86458ca9a9..49ae10447e7173777b6a8c0bfd095c110558d6f1 100644
--- a/irdb-libs/libIRDB-transform/src/SConscript
+++ b/irdb-libs/libIRDB-transform/src/SConscript
@@ -24,7 +24,7 @@ LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 LIBS=Split("irdb-core irdb-cfg irdb-util MEDSannotation capstone keystone")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 
 lib=myenv.SharedLibrary("irdb-transform",  Split(files), LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libIRDB-util/src/SConscript b/irdb-libs/libIRDB-util/src/SConscript
index c0bfa55eccf303289700c3534369f9d07830c010..1669589c1cdbca059688f1f58bc76ed2461d5a10 100644
--- a/irdb-libs/libIRDB-util/src/SConscript
+++ b/irdb-libs/libIRDB-util/src/SConscript
@@ -22,7 +22,7 @@ cpppath='''
 #myenv.Append(CCFLAGS=" -Wall -W -Wextra -Wconversion ")
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("irdb-core"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib"))
 
 install=env.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libMEDSannotation/SConscript b/irdb-libs/libMEDSannotation/SConscript
index f250ef67d68c59a4ff290e12099c3d1935d1b401..c93d70e1d0d3f9cf2cee70aad5acd226da951481 100644
--- a/irdb-libs/libMEDSannotation/SConscript
+++ b/irdb-libs/libMEDSannotation/SConscript
@@ -29,7 +29,7 @@ cpppath='''
 #CFLAGS="-fPIC  "
 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
-myenv.Append(CXXFLAGS=" -std=c++14 -Wall -Werror ")
+myenv.Append(CXXFLAGS=" -std=c++17 -Wall -Werror ")
 lib=myenv.SharedLibrary(lib, Split(files))
 
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib)
diff --git a/irdb-libs/libMEDSannotation/include/VirtualOffset.hpp b/irdb-libs/libMEDSannotation/include/VirtualOffset.hpp
index 21682725304eccb04d5260cd8e730392041e9be1..3f6bc547858f95c7a42aa43d8e75ca38a4fc4bd3 100644
--- a/irdb-libs/libMEDSannotation/include/VirtualOffset.hpp
+++ b/irdb-libs/libMEDSannotation/include/VirtualOffset.hpp
@@ -23,6 +23,7 @@
 
 #include <string>
 #include <sstream>
+#include <cstdint>
 
 namespace MEDS_Annotation
 {
diff --git a/irdb-libs/libehp b/irdb-libs/libehp
index 8dc3b9ad64d39d25ef7f3fb0dbd4a2a48356f2bd..559c0d71c3dda2067bfe757307655fad0f1c7d9f 160000
--- a/irdb-libs/libehp
+++ b/irdb-libs/libehp
@@ -1 +1 @@
-Subproject commit 8dc3b9ad64d39d25ef7f3fb0dbd4a2a48356f2bd
+Subproject commit 559c0d71c3dda2067bfe757307655fad0f1c7d9f
diff --git a/irdb-libs/meds2pdb/SConscript b/irdb-libs/meds2pdb/SConscript
index d830c12a0d753795dcfce8bffde2c2cbd067ca41..d3885fd3bd96063a6c29726cf6166f34351a676a 100644
--- a/irdb-libs/meds2pdb/SConscript
+++ b/irdb-libs/meds2pdb/SConscript
@@ -19,7 +19,7 @@ files=Glob( Dir('.').srcnode().abspath+"/*.cpp") + Glob(Dir('.').srcnode().abspa
 
 pgm="meds2pdb"
 
-myenv.Append(CXXFLAGS = " -std=c++14 ")
+myenv.Append(CXXFLAGS = " -std=c++17 ")
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 LIBS=Split(" irdb-cfg irdb-util irdb-transform EXEIO MEDSannotation pqxx "+env.subst('$BASE_IRDB_LIBS')) 
 myenv=myenv.Clone(CPPPATH=Split(cpppath))
diff --git a/irdb-libs/thanos/SConscript b/irdb-libs/thanos/SConscript
index 99bf343a684b454342630981b3a18334cde45703..5e9935985828fcf11d8af6675ba8521a4489e894 100644
--- a/irdb-libs/thanos/SConscript
+++ b/irdb-libs/thanos/SConscript
@@ -14,7 +14,7 @@ cpppath='''
 
 files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
 
-myenv.Append(CXXFLAGS = " -std=c++14 -Wall ")
+myenv.Append(CXXFLAGS = " -std=c++17 -Wall ")
 
 pgm="thanos.exe"
 
diff --git a/irdb-sdk b/irdb-sdk
index ceb1a16469ce55d6cacb6de9129dfc45c21419f4..5548b306e7440df78974e581c9cf20155f55e0a4 160000
--- a/irdb-sdk
+++ b/irdb-sdk
@@ -1 +1 @@
-Subproject commit ceb1a16469ce55d6cacb6de9129dfc45c21419f4
+Subproject commit 5548b306e7440df78974e581c9cf20155f55e0a4
diff --git a/zipr-sdk b/zipr-sdk
index 7104c04d3d156a1010ef2ce83cc22c5e17d4d5f5..93ceb364adfe484c6c34a3582f6e3cce036bf805 160000
--- a/zipr-sdk
+++ b/zipr-sdk
@@ -1 +1 @@
-Subproject commit 7104c04d3d156a1010ef2ce83cc22c5e17d4d5f5
+Subproject commit 93ceb364adfe484c6c34a3582f6e3cce036bf805
diff --git a/zipr/include/zipr_dollop.h b/zipr/include/zipr_dollop.h
index ccdd88084050de4f046631890db757f229e2c42e..528c4e07a68dd042b087310918a38ba31df6dde5 100644
--- a/zipr/include/zipr_dollop.h
+++ b/zipr/include/zipr_dollop.h
@@ -52,8 +52,8 @@ namespace zipr
 			Zipr_SDK::Dollop_t *getMemberOfDollop() const { return m_member_of_dollop; }
 			void MemberOfDollop(Zipr_SDK::Dollop_t *member_of) { m_member_of_dollop = member_of; }
 
-			bool operator==(const DollopEntry_t &);
-			bool operator!=(const DollopEntry_t &);
+			virtual bool operator==(const Zipr_SDK::DollopEntry_t &) const;
+			virtual bool operator!=(const Zipr_SDK::DollopEntry_t &) const;
 		private:
 			Instruction_t *m_instruction;
 			Zipr_SDK::Dollop_t *m_target_dollop, *m_member_of_dollop;
diff --git a/zipr/include/zipr_impl.h b/zipr/include/zipr_impl.h
index e53f9d74eda7e65d3c21e4ec651b733145e1b88d..c7316e8a14a4ac34834770dada2ca8fa84c8ae65 100644
--- a/zipr/include/zipr_impl.h
+++ b/zipr/include/zipr_impl.h
@@ -36,7 +36,7 @@ class Stats_t;
 class DataScoopByAddressComp_t 
 {
         public:
-        bool operator()(const IRDB_SDK::DataScoop_t *lhs, const IRDB_SDK::DataScoop_t *rhs) {
+        bool operator()(const IRDB_SDK::DataScoop_t *lhs, const IRDB_SDK::DataScoop_t *rhs) const {
 
                 if (!lhs ||
                     !rhs ||
@@ -57,7 +57,7 @@ using DataScoopByAddressSet_t = std::set<IRDB_SDK::DataScoop_t*, DataScoopByAddr
 class pin_sorter_t 
 {
 	public:
-		bool operator() (const UnresolvedPinned_t& p1, const UnresolvedPinned_t& p2)
+		bool operator() (const UnresolvedPinned_t& p1, const UnresolvedPinned_t& p2) const
 		{
 			assert(p1.getInstruction());
 			assert(p2.getInstruction());
diff --git a/zipr/src/dollop.cpp b/zipr/src/dollop.cpp
index b4157b45efe08d3f5a7f1cd96e5d2b6256e55a67..6dc78b4ac658f570a3830bd7e1b9e9bb222eefe0 100644
--- a/zipr/src/dollop.cpp
+++ b/zipr/src/dollop.cpp
@@ -5,14 +5,14 @@
 
 namespace Zipr_SDK
 {
-	bool DollopEntry_t::operator==(const  DollopEntry_t &comp) 
+	bool Zipr_SDK::DollopEntry_t::operator==(const Zipr_SDK::DollopEntry_t &comp)   const
 	{
 		return 
 			make_tuple(     getInstruction(),      getTargetDollop()) == 
 			make_tuple(comp.getInstruction(), comp.getTargetDollop()) ;
 	}
 
-	bool DollopEntry_t::operator!=(const Zipr_SDK::DollopEntry_t &comp) 
+	bool DollopEntry_t::operator!=(const DollopEntry_t &comp) const
 	{
 		return !operator==(comp);
 	}
@@ -216,8 +216,11 @@ namespace zipr
 		m_member_of_dollop = member_of;
 	}
 
-	bool DollopEntry_t::operator==(const  DollopEntry_t &comp) {
-		cout << "operator==s being invoked "
+	bool DollopEntry_t::operator==(const  Zipr_SDK::DollopEntry_t &sdk_comp) const {
+		const auto &comp = *dynamic_cast<const zipr::DollopEntry_t*>(&sdk_comp);
+
+		/*
+		cout << "operator== being invoked "
 		          << "(" << hex << m_instruction
 		          << ", " << hex << comp.m_instruction
 							<< ") "
@@ -225,11 +228,12 @@ namespace zipr
 		          << ", " << hex << comp.m_target_dollop
 							<< ") "
 							<< endl;
+							*/
 		return comp.m_instruction == m_instruction &&
 		       comp.m_target_dollop == m_target_dollop;
 	}
 
-	bool DollopEntry_t::operator!=(const DollopEntry_t &comp) {
+	bool DollopEntry_t::operator!=(const Zipr_SDK::DollopEntry_t &comp) const {
 		return !operator==(comp);
 	}
 
diff --git a/zipr/src/plugin_man.cpp b/zipr/src/plugin_man.cpp
index bddd12489a953603c5728064342907f6e549a80a..a71ae193e67a4c82e5119d583f9567a8da0a1399 100644
--- a/zipr/src/plugin_man.cpp
+++ b/zipr/src/plugin_man.cpp
@@ -149,7 +149,7 @@ RangeAddress_t ZiprPluginManager_t::PlaceScoopsEnd(const RangeAddress_t max_addr
 bool ZiprPluginManager_t::DoesPluginAddress(const Zipr_SDK::Dollop_t *dollop, const RangeAddress_t &source, Range_t &place, bool &coalesce, bool &fallthrough_allowed, DLFunctionHandle_t &placer)
 {
 	DLFunctionHandleSet_t::iterator it=m_handleList.begin();
-	for(m_handleList.begin();it!=m_handleList.end();++it)
+	for(;it!=m_handleList.end();++it)
 	{
 		ZiprPluginInterface_t* zpi=(ZiprPluginInterface_t*)*it;
 		if (Must == zpi->addressDollop(dollop, source, place, coalesce, fallthrough_allowed))
@@ -165,7 +165,7 @@ bool ZiprPluginManager_t::DoPluginsPlop(Instruction_t *insn, std::list<DLFunctio
 {
 	bool a_plugin_does_plop = false;
 	DLFunctionHandleSet_t::iterator it=m_handleList.begin();
-	for(m_handleList.begin();it!=m_handleList.end();++it)
+	for(;it!=m_handleList.end();++it)
 	{
 		ZiprPluginInterface_t* zpi=(ZiprPluginInterface_t*)*it;
 		if (zpi->willPluginPlop(insn))
@@ -180,7 +180,7 @@ bool ZiprPluginManager_t::DoPluginsPlop(Instruction_t *insn, std::list<DLFunctio
 bool ZiprPluginManager_t::DoesPluginRetargetCallback(const RangeAddress_t &callback_addr, const Zipr_SDK::DollopEntry_t *callback_entry, RangeAddress_t &target_address, DLFunctionHandle_t &patcher)
 {
 	DLFunctionHandleSet_t::iterator it=m_handleList.begin();
-	for(m_handleList.begin();it!=m_handleList.end();++it)
+	for(;it!=m_handleList.end();++it)
 	{
 		ZiprPluginInterface_t* zpi=(ZiprPluginInterface_t*)*it;
 		if(Must==zpi->retargetCallback(callback_addr,callback_entry,target_address))
diff --git a/zipr_push64_reloc_plugin/SConscript b/zipr_push64_reloc_plugin/SConscript
index 51ddc4029b635aa9398368a4f02bed6c56f37e9a..3244ef07b03fc67ccbaaee7bab8dbbd95c576c33 100644
--- a/zipr_push64_reloc_plugin/SConscript
+++ b/zipr_push64_reloc_plugin/SConscript
@@ -48,7 +48,7 @@ libpath='''
 if sysname != "SunOS":
 	myenv.Append(CCFLAGS=" -Wall -Werror -fmax-errors=2")
 
-myenv.Append(CXXFLAGS=" -std=c++14 ")
+myenv.Append(CXXFLAGS=" -std=c++17 ")
 myenv=myenv.Clone(CPPPATH=Split(cpppath), LIBS=Split(libs), LIBPATH=Split(libpath), SHLIBSUFFIX=".zpi", SHLIBPREFIX="")
 lib=myenv.SharedLibrary("push64_relocs", Split(files))
 
diff --git a/zipr_unpin_plugin/SConscript b/zipr_unpin_plugin/SConscript
index ce5a254321eeae701c613567e9d90f531a9ce526..ca757d073e2629bef68596e63efc0ffd58a2691c 100644
--- a/zipr_unpin_plugin/SConscript
+++ b/zipr_unpin_plugin/SConscript
@@ -50,7 +50,7 @@ libpath='''
 if sysname != "SunOS":
 	myenv.Append(CCFLAGS=" -Wall -Werror -fmax-errors=2")
 
-myenv.Append(CXXFLAGS=" -std=c++14 ")
+myenv.Append(CXXFLAGS=" -std=c++17 ")
 myenv=myenv.Clone(CPPPATH=Split(cpppath), LIBS=Split(libs), LIBPATH=Split(libpath), SHLIBSUFFIX=".zpi", SHLIBPREFIX="")
 lib=myenv.SharedLibrary("unpin", Split(files))