diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index fb1cf03..4069523 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -319,28 +319,28 @@
 		return V(&*args);
 	}
 
-	Value *Nucleus::createRetVoid()
+	void Nucleus::createRetVoid()
 	{
 		x86::emms();
 
-		return V(::builder->CreateRetVoid());
+		::builder->CreateRetVoid();
 	}
 
-	Value *Nucleus::createRet(Value *v)
+	void Nucleus::createRet(Value *v)
 	{
 		x86::emms();
 
-		return V(::builder->CreateRet(v));
+		::builder->CreateRet(v);
 	}
 
-	Value *Nucleus::createBr(BasicBlock *dest)
+	void Nucleus::createBr(BasicBlock *dest)
 	{
-		return V(::builder->CreateBr(dest));
+		::builder->CreateBr(dest);
 	}
 
-	Value *Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
+	void Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
 	{
-		return V(::builder->CreateCondBr(cond, ifTrue, ifFalse));
+		::builder->CreateCondBr(cond, ifTrue, ifFalse);
 	}
 
 	Value *Nucleus::createAdd(Value *lhs, Value *rhs)
@@ -683,9 +683,9 @@
 		reinterpret_cast<SwitchInst*>(Switch)->addCase(llvm::ConstantInt::get(Type::getInt32Ty(*::context), Case, true), Branch);
 	}
 
-	Value *Nucleus::createUnreachable()
+	void Nucleus::createUnreachable()
 	{
-		return V(::builder->CreateUnreachable());
+		::builder->CreateUnreachable();
 	}
 
 	Value *Nucleus::createSwizzle(Value *val, unsigned char select)
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index 47cb195..9483465 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -64,10 +64,10 @@
 		static Value *getArgument(unsigned int index);
 
 		// Terminators
-		static Value *createRetVoid();
-		static Value *createRet(Value *V);
-		static Value *createBr(BasicBlock *dest);
-		static Value *createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse);
+		static void createRetVoid();
+		static void createRet(Value *V);
+		static void createBr(BasicBlock *dest);
+		static void createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse);
 
 		// Binary operators
 		static Value *createAdd(Value *lhs, Value *rhs);
@@ -150,7 +150,7 @@
 		static Value *createSelect(Value *C, Value *ifTrue, Value *ifFalse);
 		static Value *createSwitch(Value *V, BasicBlock *Dest, unsigned NumCases);
 		static void addSwitchCase(Value *Switch, int Case, BasicBlock *Branch);
-		static Value *createUnreachable();
+		static void createUnreachable();
 
 		// Derived instructions
 		static Value *createSwizzle(Value *val, unsigned char select);
