diff --git a/assets/stls/parts/GIKEndPart.stl b/assets/stls/parts/GIKEndPart.stl
new file mode 100755
index 0000000000000000000000000000000000000000..69b0489036035262fcb258938a4ad7e57b4a0407
Binary files /dev/null and b/assets/stls/parts/GIKEndPart.stl differ
diff --git a/assets/stls/parts/GIKEndPartLowPoly.stl b/assets/stls/parts/GIKEndPartLowPoly.stl
new file mode 100755
index 0000000000000000000000000000000000000000..9034310b61f0d79fd989d06125f5b8eb0e2f3cf9
Binary files /dev/null and b/assets/stls/parts/GIKEndPartLowPoly.stl differ
diff --git a/assets/stls/parts/GIKPart.stl b/assets/stls/parts/GIKPart.stl
new file mode 100755
index 0000000000000000000000000000000000000000..1e6cce3510f4ab617d0719349379e559ea6c367f
Binary files /dev/null and b/assets/stls/parts/GIKPart.stl differ
diff --git a/assets/stls/parts/GIKPartLowPoly.stl b/assets/stls/parts/GIKPartLowPoly.stl
new file mode 100755
index 0000000000000000000000000000000000000000..caceba0652aade11784be73e9643bc827d839700
Binary files /dev/null and b/assets/stls/parts/GIKPartLowPoly.stl differ
diff --git a/js/fea/DmaCellOther.js b/js/fea/DmaCellOther.js
index 1e56869f8a07c678abf6cdc8016627cf122e83a7..b5a57326f3c47dfc063ba5289c4c499d312c7252 100644
--- a/js/fea/DmaCellOther.js
+++ b/js/fea/DmaCellOther.js
@@ -70,7 +70,9 @@ var cellMaterial = [new THREE.MeshNormalMaterial()];
     DMAGIKCell.prototype = Object.create(DMACubeCell.prototype);
 
     DMAGIKCell.prototype._buildCellMesh = function(){
-        return DMACell.prototype._buildCellMesh.call(this, cellMaterial);
+        var mesh = DMACell.prototype._buildCellMesh.call(this, cellMaterial);
+        if (this.indices.z%2 != 0) mesh.rotateZ(Math.PI/2);
+        return mesh;
     };
 
     DMAGIKCell.prototype._setCellMeshVisibility = function(visible){
diff --git a/js/fea/DmaPart.js b/js/fea/DmaPart.js
index 0675b710873753c387774d34e49edaa7f822c0de..2dc06eb6399e6d9f1d28b6c711427bfa6120fc87 100644
--- a/js/fea/DmaPart.js
+++ b/js/fea/DmaPart.js
@@ -231,7 +231,7 @@ var partMaterial = new THREE.MeshLambertMaterial({ color:0xffffff, shading: THRE
         unitPartGeo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
     });
 
-    function DMAGIKPart(type, parent){
+    function DMAGIKPart(type, parent, rotated){
         DMAPart.call(this, type, parent);
     }
     DMAGIKPart.prototype = Object.create(DMAPart.prototype);
@@ -263,16 +263,10 @@ var partMaterial = new THREE.MeshLambertMaterial({ color:0xffffff, shading: THRE
         unitPartGeo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
     });
 
-    function DMAGIKPartLowPoly(type, parent){
-        DMAPart.call(this, type, parent);
+    function DMAGIKPartLowPoly(type, parent, rotated){
+        DMAGIKPart.call(this, type, parent, rotated);
     }
-    DMAGIKPartLowPoly.prototype = Object.create(DMAPart.prototype);
-
-    DMAGIKPartLowPoly.prototype._makeMeshForType = function(){
-        var mesh = new THREE.Mesh(unitPartGeo, partMaterial);
-        mesh.myPart = this;//need a ref back to this part
-        return mesh;
-    };
+    DMAGIKPartLowPoly.prototype = Object.create(DMAGIKPart.prototype);
 
     self.DMAGIKPartLowPoly = DMAGIKPartLowPoly;