diff --git a/include/zipr_options.h b/include/zipr_options.h
index bcf1c6a466c02ae36cec4567133caec3d45a0db1..b070aa737c7eb96c9ef5acd6b10a718788c20cd8 100644
--- a/include/zipr_options.h
+++ b/include/zipr_options.h
@@ -35,6 +35,7 @@
 #include <unistd.h>
 #include <libIRDB-core.hpp>
 #include <iostream>
+#include <sstream>
 
 namespace Zipr_SDK
 {
@@ -50,6 +51,7 @@ enum ZiprOptionType {
 class ZiprOption_t 
 {
 	public:
+	/*
 		ZiprOption_t(ZiprOptionType type)
 			: m_key(""),
 			  m_untyped_value(""),
@@ -59,6 +61,7 @@ class ZiprOption_t
 				m_required(false),
 				m_set(false),
 				m_option_type(type) {};
+	*/
 		ZiprOption_t(ZiprOptionType type, std::string key, std::string value)
 			: m_key(key),
 			  m_untyped_value(value),
@@ -138,7 +141,10 @@ template <typename T>
 class ZiprTypedOption_t : public ZiprOption_t
 {
 	public:
-		using ZiprOption_t::ZiprOption_t;
+		ZiprTypedOption_t(ZiprOptionType type,
+			std::string key,
+			std::string value)
+			: ZiprOption_t(type, key, value) {}
 		void SetValue(const std::string &value) {
 			m_set = true;
 			m_untyped_value = value;
@@ -180,7 +186,10 @@ template <class T>
 class ZiprCompositeOption_t : public ZiprTypedOption_t<T>, public T
 {
 	public:
-		using ZiprTypedOption_t<T>::ZiprTypedOption_t;
+		ZiprCompositeOption_t(ZiprOptionType type,
+			std::string key,
+			std::string value)
+			: ZiprTypedOption_t<T>(type, key, value) {}
 		using ZiprTypedOption_t<T>::ConvertToTyped;
 		void SetValue(const std::string &value) {
 			ZiprTypedOption_t<T>::SetValue(value);
@@ -191,7 +200,6 @@ class ZiprCompositeOption_t : public ZiprTypedOption_t<T>, public T
 class ZiprStringOption_t : public ZiprCompositeOption_t<std::string>
 {
 	public:
-		using ZiprCompositeOption_t<std::string>::ZiprTypedOption_t;
 		ZiprStringOption_t(std::string key, std::string value = "")
 			: ZiprCompositeOption_t(ZiprStringOptionType, key, value) {
 			SetValue(value);
@@ -211,7 +219,6 @@ class ZiprStringOption_t : public ZiprCompositeOption_t<std::string>
 class ZiprBooleanOption_t : public ZiprTypedOption_t<bool>
 {
 	public:
-		using ZiprTypedOption_t<bool>::ZiprTypedOption_t;
 		ZiprBooleanOption_t(std::string key, std::string value = "")
 			: ZiprTypedOption_t(ZiprBooleanOptionType, key, value) {
 			m_key = key;
@@ -219,7 +226,7 @@ class ZiprBooleanOption_t : public ZiprTypedOption_t<bool>
 			m_needs_value = false;
 		}
 		ZiprBooleanOption_t(std::string key, bool value)
-			: ZiprBooleanOption_t(key) {
+			: ZiprTypedOption_t(ZiprBooleanOptionType, key, "") {
 			m_value = value;
 			m_untyped_value = ConvertToUntyped(value);
 		}
@@ -247,13 +254,12 @@ class ZiprBooleanOption_t : public ZiprTypedOption_t<bool>
 class ZiprIntegerOption_t : public ZiprTypedOption_t<int>
 {
 	public:
-		using ZiprTypedOption_t<int>::ZiprTypedOption_t;
 		ZiprIntegerOption_t(std::string key, std::string value = "")
 			: ZiprTypedOption_t(ZiprIntegerOptionType, key, value) {
 			m_value = ConvertToTyped(value);
 		}
 		ZiprIntegerOption_t(std::string key, int value)
-			: ZiprIntegerOption_t(key, "") {
+			: ZiprTypedOption_t(ZiprIntegerOptionType, key, "") {
 			m_value = value;
 			m_untyped_value = ConvertToUntyped(value);
 		}
@@ -263,20 +269,22 @@ class ZiprIntegerOption_t : public ZiprTypedOption_t<int>
 		}
 	private:
 		int ConvertToTyped(std::string value_to_convert) {
-			try {
-				return std::stoi(value_to_convert);
-			} catch (std::exception &e) {
+			int converted = 0;
+			char *endptr = NULL;
+			converted = strtol(value_to_convert.c_str(),
+			                   &endptr, 10);
+			if (*endptr != '\0')
+			{
 				m_set = false;
 				m_untyped_value = "";
 				return 0;
 			}
+			return converted;
 		}
 		std::string ConvertToUntyped(int value_to_convert) {
-			try {
-				return std::to_string(value_to_convert);
-			} catch (std::exception &e) {
-				return std::string("");
-			}
+			std::stringstream ss;
+			ss << value_to_convert;
+			return ss.str();
 		}
 		std::string TypeName() {
 			return "integer";
@@ -286,13 +294,12 @@ class ZiprIntegerOption_t : public ZiprTypedOption_t<int>
 class ZiprDoubleOption_t : public ZiprTypedOption_t<double>
 {
 	public:
-		using ZiprTypedOption_t<double>::ZiprTypedOption_t;
 		ZiprDoubleOption_t(std::string key, std::string value = "")
 			: ZiprTypedOption_t(ZiprDoubleOptionType, key, value) {
 			m_value = ConvertToTyped(value);
 		}
 		ZiprDoubleOption_t(std::string key, double value)
-			: ZiprDoubleOption_t(key, "") {
+			: ZiprTypedOption_t(ZiprDoubleOptionType, key, "") {
 			m_value = value;
 			m_untyped_value = ConvertToUntyped(value);
 		}
@@ -302,20 +309,22 @@ class ZiprDoubleOption_t : public ZiprTypedOption_t<double>
 		}
 	private:
 		double ConvertToTyped(std::string value_to_convert) {
-			try {
-				return (double)std::stof(value_to_convert);
-			} catch (std::exception &e) {
+			double converted = 0.;
+			char *endptr = NULL;
+			converted = strtof(value_to_convert.c_str(),
+			                   &endptr);
+			if (*endptr != '\0')
+			{
 				m_set = false;
 				m_untyped_value = "";
 				return 0;
 			}
+			return converted;
 		}
 		std::string ConvertToUntyped(double value_to_convert) {
-			try {
-				return std::to_string(value_to_convert);
-			} catch (std::exception &e) {
-				return std::string("");
-			}
+			std::stringstream ss;
+			ss << value_to_convert;
+			return ss.str();
 		}
 		std::string TypeName() {
 			return "double";
diff --git a/include/zipr_plugin.h b/include/zipr_plugin.h
index cda34659ecb6698a396766c3e2202d8387d05522..cf247d05c5d90655d744c174a4a74cd18bc18bfb 100644
--- a/include/zipr_plugin.h
+++ b/include/zipr_plugin.h
@@ -34,7 +34,7 @@ class ZiprPluginInterface_t
 		virtual ZiprPreference PlopAddress(
 			const RangeAddress_t &jump, const Dollop_t &dollop, Range_t &place)
 		{
-			return ZiprPreference::None;
+			return None;
 		}
 
 		virtual bool WillPluginPlop(libIRDB::Instruction_t*)