diff --git a/src/GLES2/libGLESv2/libGLESv2.cbp b/src/GLES2/libGLESv2/libGLESv2.cbp
index 0807fe0..65008ed 100644
--- a/src/GLES2/libGLESv2/libGLESv2.cbp
+++ b/src/GLES2/libGLESv2/libGLESv2.cbp
@@ -293,6 +293,8 @@
 		<Unit filename="./../../Main/serialcommon.h" />
 		<Unit filename="./../../Main/serialvalid.cpp" />
 		<Unit filename="./../../Main/serialvalid.h" />
+		<Unit filename="./../../Reactor/Routine.cpp" />
+		<Unit filename="./../../Reactor/Routine.hpp" />
 		<Unit filename="./../../Reactor/RoutineManager.cpp" />
 		<Unit filename="./../../Reactor/RoutineManager.hpp" />
 		<Unit filename="./../../Reactor/Nucleus.cpp" />
diff --git a/src/Reactor/Nucleus.cpp b/src/Reactor/Nucleus.cpp
index 47f637c..4a819cb 100644
--- a/src/Reactor/Nucleus.cpp
+++ b/src/Reactor/Nucleus.cpp
@@ -26,6 +26,7 @@
 #include "llvm/Support/TargetSelect.h"
 #include "../lib/ExecutionEngine/JIT/JIT.h"
 
+#include "Routine.hpp"
 #include "RoutineManager.hpp"
 #include "x86.hpp"
 #include "CPUID.hpp"
@@ -70,83 +71,6 @@
 	{
 	};
 
-	Routine::Routine(int bufferSize) : bufferSize(bufferSize), dynamic(true)
-	{
-		void *memory = allocateExecutable(bufferSize);
-
-		buffer = memory;
-		entry = memory;
-		functionSize = bufferSize;   // Updated by RoutineManager::endFunctionBody
-
-		bindCount = 0;
-	}
-
-	Routine::Routine(void *memory, int bufferSize, int offset) : bufferSize(bufferSize), functionSize(bufferSize), dynamic(false)
-	{
-		buffer = (unsigned char*)memory - offset;
-		entry = memory;
-
-		bindCount = 0;
-	}
-
-	Routine::~Routine()
-	{
-		if(dynamic)
-		{
-			deallocateExecutable(buffer, bufferSize);
-		}
-	}
-
-	void Routine::setFunctionSize(int functionSize)
-	{
-		this->functionSize = functionSize;
-	}
-
-	const void *Routine::getBuffer()
-	{
-		return buffer;
-	}
-
-	const void *Routine::getEntry()
-	{
-		return entry;
-	}
-
-	int Routine::getBufferSize()
-	{
-		return bufferSize;
-	}
-
-	int Routine::getFunctionSize()
-	{
-		return functionSize;
-	}
-
-	int Routine::getCodeSize()
-	{
-		return functionSize - ((uintptr_t)entry - (uintptr_t)buffer);
-	}
-
-	bool Routine::isDynamic()
-	{
-		return dynamic;
-	}
-
-	void Routine::bind()
-	{
-		atomicIncrement(&bindCount);
-	}
-
-	void Routine::unbind()
-	{
-		long count = atomicDecrement(&bindCount);
-
-		if(count == 0)
-		{
-			delete this;
-		}
-	}
-
 	Nucleus::Nucleus()
 	{
 		InitializeNativeTarget();
@@ -243,14 +167,11 @@
 		}
 
 		void *entry = executionEngine->getPointerToFunction(function);
-
-		Routine *routine = routineManager->acquireRoutine();
-		routine->entry = entry;
-		markExecutable(routine->buffer, routine->bufferSize);
+		Routine *routine = routineManager->acquireRoutine(entry);
 
 		if(CodeAnalystLogJITCode)
 		{
-			CodeAnalystLogJITCode(routine->entry, routine->getCodeSize(), name);
+			CodeAnalystLogJITCode(routine->getEntry(), routine->getCodeSize(), name);
 		}
 
 		return routine;
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index b655d99..da2e0a3 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -61,41 +61,9 @@
 
 	extern Optimization optimization[10];
 
+	class Routine;
 	class RoutineManager;
 	class Builder;
-	class Nucleus;
-
-	class Routine
-	{
-		friend class Nucleus;
-
-	public:
-		Routine(int bufferSize);
-		Routine(void *memory, int bufferSize, int offset);
-
-		~Routine();
-
-		void setFunctionSize(int functionSize);
-
-		const void *getBuffer();
-		const void *getEntry();
-		int getBufferSize();
-		int getFunctionSize();   // Includes constants before the entry point
-		int getCodeSize();       // Executable code only
-		bool isDynamic();
-
-		void bind();
-		void unbind();
-
-	private:
-		void *buffer;
-		const void *entry;
-		int bufferSize;
-		int functionSize;
-
-		volatile int bindCount;
-		const bool dynamic;   // Generated or precompiled
-	};
 
 	class Nucleus
 	{
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index 8e37967..0e7538b 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -10,6 +10,7 @@
 //
 
 #include "Nucleus.hpp"
+#include "Routine.hpp"
 
 namespace sw
 {
diff --git a/src/Reactor/Reactor.vcxproj b/src/Reactor/Reactor.vcxproj
index 4312ba8..be56c44 100644
--- a/src/Reactor/Reactor.vcxproj
+++ b/src/Reactor/Reactor.vcxproj
@@ -262,12 +262,14 @@
   <ItemGroup>
     <ClCompile Include="DLL.cpp" />
     <ClCompile Include="Nucleus.cpp" />
+    <ClCompile Include="Routine.cpp" />
     <ClCompile Include="RoutineManager.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="DLL.hpp" />
     <ClInclude Include="Nucleus.hpp" />
     <ClInclude Include="Reactor.hpp" />
+    <ClInclude Include="Routine.hpp" />
     <ClInclude Include="RoutineManager.hpp" />
     <ClInclude Include="x86.hpp" />
   </ItemGroup>
diff --git a/src/Reactor/Reactor.vcxproj.filters b/src/Reactor/Reactor.vcxproj.filters
index d4629a8..e2d2f68 100644
--- a/src/Reactor/Reactor.vcxproj.filters
+++ b/src/Reactor/Reactor.vcxproj.filters
@@ -24,6 +24,9 @@
     <ClCompile Include="RoutineManager.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Routine.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="DLL.hpp">
@@ -41,5 +44,8 @@
     <ClInclude Include="RoutineManager.hpp">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Routine.hpp">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/Reactor/Routine.cpp b/src/Reactor/Routine.cpp
new file mode 100644
index 0000000..1671abe
--- /dev/null
+++ b/src/Reactor/Routine.cpp
@@ -0,0 +1,85 @@
+#include "Routine.hpp"
+
+#include "../Common/Memory.hpp"
+#include "../Common/Thread.hpp"
+#include "../Common/Types.hpp"
+
+namespace sw
+{
+	Routine::Routine(int bufferSize) : bufferSize(bufferSize), dynamic(true)
+	{
+		void *memory = allocateExecutable(bufferSize);
+
+		buffer = memory;
+		entry = memory;
+		functionSize = bufferSize;   // Updated by RoutineManager::endFunctionBody
+
+		bindCount = 0;
+	}
+
+	Routine::Routine(void *memory, int bufferSize, int offset) : bufferSize(bufferSize), functionSize(bufferSize), dynamic(false)
+	{
+		buffer = (unsigned char*)memory - offset;
+		entry = memory;
+
+		bindCount = 0;
+	}
+
+	Routine::~Routine()
+	{
+		if(dynamic)
+		{
+			deallocateExecutable(buffer, bufferSize);
+		}
+	}
+
+	void Routine::setFunctionSize(int functionSize)
+	{
+		this->functionSize = functionSize;
+	}
+
+	const void *Routine::getBuffer()
+	{
+		return buffer;
+	}
+
+	const void *Routine::getEntry()
+	{
+		return entry;
+	}
+
+	int Routine::getBufferSize()
+	{
+		return bufferSize;
+	}
+
+	int Routine::getFunctionSize()
+	{
+		return functionSize;
+	}
+
+	int Routine::getCodeSize()
+	{
+		return functionSize - ((uintptr_t)entry - (uintptr_t)buffer);
+	}
+
+	bool Routine::isDynamic()
+	{
+		return dynamic;
+	}
+
+	void Routine::bind()
+	{
+		atomicIncrement(&bindCount);
+	}
+
+	void Routine::unbind()
+	{
+		long count = atomicDecrement(&bindCount);
+
+		if(count == 0)
+		{
+			delete this;
+		}
+	}
+}
diff --git a/src/Reactor/Routine.hpp b/src/Reactor/Routine.hpp
new file mode 100644
index 0000000..6cdc6bc
--- /dev/null
+++ b/src/Reactor/Routine.hpp
@@ -0,0 +1,41 @@
+#ifndef sw_Routine_hpp
+#define sw_Routine_hpp
+
+namespace sw
+{
+	class RoutineManager;
+
+	class Routine
+	{
+		friend class RoutineManager;
+
+	public:
+		Routine(int bufferSize);
+		Routine(void *memory, int bufferSize, int offset);
+
+		~Routine();
+
+		void setFunctionSize(int functionSize);
+
+		const void *getBuffer();
+		const void *getEntry();
+		int getBufferSize();
+		int getFunctionSize();   // Includes constants before the entry point
+		int getCodeSize();       // Executable code only
+		bool isDynamic();
+
+		void bind();
+		void unbind();
+
+	private:
+		void *buffer;
+		const void *entry;
+		int bufferSize;
+		int functionSize;
+
+		volatile int bindCount;
+		const bool dynamic;   // Generated or precompiled
+	};
+}
+
+#endif   // sw_Routine_hpp
diff --git a/src/Reactor/RoutineManager.cpp b/src/Reactor/RoutineManager.cpp
index b0d5703..441db8d 100644
--- a/src/Reactor/RoutineManager.cpp
+++ b/src/Reactor/RoutineManager.cpp
@@ -11,7 +11,7 @@
 
 #include "RoutineManager.hpp"
 
-#include "Nucleus.hpp"
+#include "Routine.hpp"
 #include "llvm/Function.h"
 #include "../Common/Memory.hpp"
 #include "../Common/Thread.hpp"
@@ -117,16 +117,18 @@
 
 	void RoutineManager::setMemoryExecutable()
 	{
+		markExecutable(routine->buffer, routine->bufferSize);
 	}
 
 	void RoutineManager::setPoisonMemory(bool poison)
 	{
 	}
 
-	Routine *RoutineManager::acquireRoutine()
+	Routine *RoutineManager::acquireRoutine(void *entry)
 	{
-		Routine *result = routine;
+		routine->entry = entry;
 
+		Routine *result = routine;
 		routine = 0;
 
 		return result;
diff --git a/src/Reactor/RoutineManager.hpp b/src/Reactor/RoutineManager.hpp
index 342be7c..3c813b4 100644
--- a/src/Reactor/RoutineManager.hpp
+++ b/src/Reactor/RoutineManager.hpp
@@ -42,7 +42,7 @@
 		virtual void setMemoryExecutable();
 		virtual void setPoisonMemory(bool poison);
 
-		Routine *acquireRoutine();
+		Routine *acquireRoutine(void *entry);
 
 	private:
 		Routine *routine;
