diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index fd40455..e4452fc 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -38,7 +38,7 @@
 		{
 			for (int i = 0; i < MAX_INTERFACE_COMPONENTS; i++)
 			{
-				(*routine.inputs)[i] = Float4(0.0f);
+				routine.inputs[i] = Float4(0.0f);
 			}
 		}
 	}
@@ -148,14 +148,14 @@
 				{
 					if (input.Centroid)
 					{
-						(*routine.inputs)[interpolant] =
+						routine.inputs[interpolant] =
 								interpolateCentroid(XXXX, YYYY, rhwCentroid,
 													primitive + OFFSET(Primitive, V[interpolant]),
 													input.Flat, state.perspective);
 					}
 					else
 					{
-						(*routine.inputs)[interpolant] =
+						routine.inputs[interpolant] =
 								interpolate(xxxx, Dv[interpolant], rhw,
 											primitive + OFFSET(Primitive, V[interpolant]),
 											input.Flat, state.perspective, false);
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 4cb7c4c..f3fa5c9 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -676,7 +676,7 @@
 					VisitInterface(resultId,
 								   [&](Decorations const &d, AttribType type) {
 									   auto scalarSlot = d.Location << 2 | d.Component;
-									   dst[offset++] = (*routine->inputs)[scalarSlot];
+									   dst[offset++] = routine->inputs[scalarSlot];
 								   });
 				}
 				break;
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index 9fe4745..067f2a2 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -82,8 +82,8 @@
 
 		std::unordered_map<uint32_t, Intermediate> intermediates;
 
-		std::unique_ptr<Value> const inputs = std::unique_ptr<Value>(new Value(MAX_INTERFACE_COMPONENTS));
-		std::unique_ptr<Value> const outputs = std::unique_ptr<Value>(new Value(MAX_INTERFACE_COMPONENTS));
+		Value inputs = Value{MAX_INTERFACE_COMPONENTS};
+		Value outputs = Value{MAX_INTERFACE_COMPONENTS};
 
 		void createLvalue(uint32_t id, uint32_t size)
 		{
diff --git a/src/Pipeline/VertexRoutine.cpp b/src/Pipeline/VertexRoutine.cpp
index 6990c89..6254566 100644
--- a/src/Pipeline/VertexRoutine.cpp
+++ b/src/Pipeline/VertexRoutine.cpp
@@ -92,10 +92,10 @@
 				UInt stride = *Pointer<UInt>(data + OFFSET(DrawData, stride) + sizeof(unsigned int) * i);
 
 				auto value = readStream(input, stride, state.input[i], index);
-				(*routine.inputs)[i] = value.x;
-				(*routine.inputs)[i+1] = value.y;
-				(*routine.inputs)[i+2] = value.z;
-				(*routine.inputs)[i+3] = value.w;
+				routine.inputs[i] = value.x;
+				routine.inputs[i+1] = value.y;
+				routine.inputs[i+2] = value.z;
+				routine.inputs[i+3] = value.w;
 			}
 		}
 	}
@@ -615,10 +615,10 @@
 				spirvShader->outputs[i+2].Type != SpirvShader::ATTRIBTYPE_UNUSED ||
 				spirvShader->outputs[i+3].Type != SpirvShader::ATTRIBTYPE_UNUSED)
 			{
-				v.x = (*routine.outputs)[i];
-				v.y = (*routine.outputs)[i+1];
-				v.z = (*routine.outputs)[i+2];
-				v.w = (*routine.outputs)[i+3];
+				v.x = routine.outputs[i];
+				v.y = routine.outputs[i+1];
+				v.z = routine.outputs[i+2];
+				v.w = routine.outputs[i+3];
 
 				transpose4x4(v.x, v.y, v.z, v.w);
 
