diff --git a/SDK/C++/private/system.cpp b/SDK/C++/private/system.cpp
index 27f598bb233f2fbea33fed24d8f1f27bf60d0b5a..3f25035dafd59dd81b9e2dad5609cac569b870c8 100644
--- a/SDK/C++/private/system.cpp
+++ b/SDK/C++/private/system.cpp
@@ -17,11 +17,11 @@ static bool g_isinit = false;
 #define EXTERN_DLL_EXPORT extern "C"
 #endif
 
-EXTERN_DLL_EXPORT std::shared_ptr<voltu::System> voltu_initialise()
+EXTERN_DLL_EXPORT voltu::System* voltu_initialise()
 {
 	if (!g_isinit)
 	{
-		return std::make_shared<SystemImpl>();
+		return new SystemImpl();
 	}
 	else
 	{
diff --git a/SDK/C++/public/CMakeLists.txt b/SDK/C++/public/CMakeLists.txt
index 47ea694e29808372fce538cbd6dddfcca5b7d0ab..ae8c7da08bfad909195d334e699fdbba5655e0bf 100644
--- a/SDK/C++/public/CMakeLists.txt
+++ b/SDK/C++/public/CMakeLists.txt
@@ -17,7 +17,7 @@ endif()
 if(WIN32)
 	add_definitions(-DWIN32)
 	set(CMAKE_GENERATOR_TOOLSET "host=x64")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2 /MP4 /std:c++11 /wd4996")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2 /MP4 /std:c++14 /wd4996")
 	set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DFTL_DEBUG /Wall")
 	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2")
 	set(OS_LIBS "")
diff --git a/SDK/C++/public/voltu.cpp b/SDK/C++/public/voltu.cpp
index 51d32a53239fb3f32754de08fd0ad15420699b0f..25b0f4019ccd8c5df7c3090b7c7ea3198162baef 100644
--- a/SDK/C++/public/voltu.cpp
+++ b/SDK/C++/public/voltu.cpp
@@ -60,13 +60,13 @@ std::shared_ptr<voltu::System> voltu::instance()
 
 	if (handle)
 	{
-		std::shared_ptr<voltu::System> (*init)();
-		init = (std::shared_ptr<voltu::System> (*)())getFunction(handle, "voltu_initialise");
+		voltu::System* (*init)();
+		init = (voltu::System* (*)())getFunction(handle, "voltu_initialise");
 
 		if (init)
 		{
 			g_init = true;
-			auto instance = init();
+			std::shared_ptr<voltu::System> instance(init());
 
 			if (!instance)
 			{