diff --git a/assets/stls/parts/KennyTeqPart.stl b/assets/stls/parts/KennyTeqPart.stl
index 40ca3198b63cd714c64d3098fd26ae7ba5827a98..47baebcb3c62f2ea96c239360b9db69df6888499 100644
Binary files a/assets/stls/parts/KennyTeqPart.stl and b/assets/stls/parts/KennyTeqPart.stl differ
diff --git a/assets/stls/parts/KennyTeqPartHighRes.stl b/assets/stls/parts/KennyTeqPartHighRes.stl
new file mode 100644
index 0000000000000000000000000000000000000000..40ca3198b63cd714c64d3098fd26ae7ba5827a98
Binary files /dev/null and b/assets/stls/parts/KennyTeqPartHighRes.stl differ
diff --git a/assets/stls/parts/SamTeqPart.stl b/assets/stls/parts/SamTeqPart.stl
new file mode 100644
index 0000000000000000000000000000000000000000..be518a5c14f8aa61b0c6687367359a723d042957
Binary files /dev/null and b/assets/stls/parts/SamTeqPart.stl differ
diff --git a/js/cells/DMACell.js b/js/cells/DMACell.js
index a389c5e7db1632cfdcf1c467cd55b2663aa17acc..1cd5112840a6008eb2d280b03cf7d34c5e7d1383 100644
--- a/js/cells/DMACell.js
+++ b/js/cells/DMACell.js
@@ -284,11 +284,12 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'globals', '
                 if (child.name == "object3D") return;
                 child.visible = visible && (child.name == mode);
             });
-
+            console.log(self.object3D.children);
             if (callback) {
                 callback();
                 return;
             }
+
             if (!self.superCell) three.conditionalRender();
         }
     };
diff --git a/js/cells/OctaVertexCell.js b/js/cells/OctaVertexCell.js
index 791a80ddd92d84747223f292074dca5ed852b6e2..93bd88688e11c4fb2df7bd5b2538a9454f766696 100644
--- a/js/cells/OctaVertexCell.js
+++ b/js/cells/OctaVertexCell.js
@@ -19,11 +19,7 @@ define(['underscore', 'three', 'threeModel', 'lattice', 'appState', 'cell'],
 
     OctaVertexCell.prototype._initParts = function(callback){
         var self = this;
-        var type = lattice.get("partType");
-        if (type == "kennyTeq") type = "kennyTeqPart";
-        else console.warn("no part type " + type);
-
-        require([type], function(PartClass){
+        require([lattice.get("partType") + "Part"], function(PartClass){
             var parts  = [];
             for (var i=0;i<3;i++){
                 parts.push(new PartClass(0, self));
diff --git a/js/main.js b/js/main.js
index 297c79074eb1b68dca4afe1996757297a1b7720b..f8ba4ef35e78368424788dfdb18c83a6ad51e7bc 100644
--- a/js/main.js
+++ b/js/main.js
@@ -88,6 +88,8 @@ require.config({
         gikPart: 'parts/GIKPart',
         gikPartLowPoly: 'parts/GIKPartLowPoly',
         kennyTeqPart: 'parts/KennyTeqPart',
+        kennyTeqHighResPart: 'parts/KennyTeqHighResPart',
+        samTeqPart: 'parts/SamTeqPart',
 
         //materials
         materials: 'materials/DMAMaterials',
@@ -151,6 +153,8 @@ require.config({
         gikPartLowPolySTL: 'assets/stls/parts/GIKPartLowPoly.stl',
         gikEndPartLowPolySTL: 'assets/stls/parts/GIKEndPartLowPoly.stl',
         kennyTeqPartSTL: 'assets/stls/parts/KennyTeqPart.stl',
+        kennyTeqPartHighResSTL: 'assets/stls/parts/KennyTeqPartHighRes.stl',
+        samTeqPartSTL: 'assets/stls/parts/SamTeqPart.stl',
         crabSTL: 'assets/stls/crab/crab.stl'
 
     },
diff --git a/js/models/PList.js b/js/models/PList.js
index e76b6017f0c5e2b3c656ec4d14149ef466fe6099..2c236ee76f0ffc9738fe0c9cc80c4336db678c07 100644
--- a/js/models/PList.js
+++ b/js/models/PList.js
@@ -61,8 +61,9 @@ define(['three'], function(THREE){
                     voxLowPoly: "Snap Voxel (low res)"
                 },
                 vertex: {
-                    kennyTeq: "Kenny Teq"
-//                    square:"Square",
+                    kennyTeq: "Kenny Teq",
+                    kennyTeqHighRes: "Kenny Teq (High Res)",
+                    samTeq: "Square"
 //                   xShape:"X"
                 }
             },
@@ -74,7 +75,7 @@ define(['three'], function(THREE){
             }
             },
             truncatedCube: {
-                face: null,//{
+                face: null//{
 //                    square:"Square",
 //                    xShape:"X"
 //                }
diff --git a/js/parts/GIKPart.js b/js/parts/GIKPart.js
index d7bf74e6763357749a3b78c2dc8a55fc2501367a..9f2fca8ff479cf1157df686a98a2dcade49e1f7f 100644
--- a/js/parts/GIKPart.js
+++ b/js/parts/GIKPart.js
@@ -3,7 +3,7 @@
  */
 
 
-define(['underscore', 'three', 'part', 'bin!gikPartSTL', 'bin!gikEndPartSTL', 'stlLoader'], function(_, THREE, DMAPart, gikPart, gikEndPart){
+define(['underscore', 'stlLoader', 'part', 'bin!gikPartSTL', 'bin!gikEndPartSTL'], function(_, THREE, DMAPart, gikPart, gikEndPart){
 
     var loader = new THREE.STLLoader();
     var unitGeo = preProcessGeo(loader.parse(gikPart));
diff --git a/js/parts/GIKPartLowPoly.js b/js/parts/GIKPartLowPoly.js
index 6eed63b9ed06b51fcda0988a26816e948b23105a..90a9875f69185f958bc6e4efe51fbc1e5c312ae7 100644
--- a/js/parts/GIKPartLowPoly.js
+++ b/js/parts/GIKPartLowPoly.js
@@ -4,7 +4,7 @@
 
 
 
-define(['underscore', 'three', 'gikPart', 'bin!gikPartLowPolySTL', 'bin!gikEndPartLowPolySTL', 'stlLoader'], function(_, THREE, GIKPart, gikPartLowPoly, gikEndPartLowPoly){
+define(['underscore', 'stlLoader', 'gikPart', 'bin!gikPartLowPolySTL', 'bin!gikEndPartLowPolySTL'], function(_, THREE, GIKPart, gikPartLowPoly, gikEndPartLowPoly){
 
     var loader = new THREE.STLLoader();
     var unitGeo = preProcessGeo(loader.parse(gikPartLowPoly));
diff --git a/js/parts/KennyTeqHighresPart.js b/js/parts/KennyTeqHighresPart.js
new file mode 100644
index 0000000000000000000000000000000000000000..f47dbce44a72c518644f66129da8a5aa5d40e1bc
--- /dev/null
+++ b/js/parts/KennyTeqHighresPart.js
@@ -0,0 +1,22 @@
+/**
+ * Created by aghassaei on 6/29/15.
+ */
+
+define(['underscore', 'stlLoader', 'part', 'bin!kennyTeqPartHighResSTL'], function(_, THREE, DMAPart, stl){
+
+    var loader = new THREE.STLLoader();
+    var unitGeo = loader.parse(stl);
+    var unitScale = 1/6.9597;
+    unitGeo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
+
+    function PartSubclass(type, parent){
+        DMAPart.call(this, type, parent);
+    }
+    PartSubclass.prototype = Object.create(DMAPart.prototype);
+
+    PartSubclass.prototype._getGeometry = function(){
+        return unitGeo;
+    };
+
+    return PartSubclass;
+});
\ No newline at end of file
diff --git a/js/parts/KennyTeqPart.js b/js/parts/KennyTeqPart.js
index 2e801c055a2aef9a84a850dbe5fd1334ecd95ca2..402c92a02bfe3e2bedb9af316242cd778283fe17 100644
--- a/js/parts/KennyTeqPart.js
+++ b/js/parts/KennyTeqPart.js
@@ -2,21 +2,21 @@
  * Created by aghassaei on 6/26/15.
  */
 
-define(['underscore', 'three', 'part', 'bin!kennyTeqPartSTL', 'stlLoader'], function(_, THREE, DMAPart, kennyPart){
+define(['underscore', 'stlLoader', 'part', 'bin!kennyTeqPartSTL'], function(_, THREE, DMAPart, stl){
 
     var loader = new THREE.STLLoader();
-    var unitGeo = loader.parse(kennyPart);
+    var unitGeo = loader.parse(stl);
     var unitScale = 1/6.9597;
     unitGeo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
 
-    function KennyTeqPart(type, parent){
+    function PartSubclass(type, parent){
         DMAPart.call(this, type, parent);
     }
-    KennyTeqPart.prototype = Object.create(DMAPart.prototype);
+    PartSubclass.prototype = Object.create(DMAPart.prototype);
 
-    KennyTeqPart.prototype._getGeometry = function(){
+    PartSubclass.prototype._getGeometry = function(){
         return unitGeo;
     };
 
-    return KennyTeqPart;
+    return PartSubclass;
 });
\ No newline at end of file
diff --git a/js/parts/OctaEdgeVoxPart.js b/js/parts/OctaEdgeVoxPart.js
index 96965123377d3371c2b062d80d2edd229d04e802..7cb024acbcedba747d337ff0ce1cb9aed42961c0 100644
--- a/js/parts/OctaEdgeVoxPart.js
+++ b/js/parts/OctaEdgeVoxPart.js
@@ -2,7 +2,7 @@
  * Created by aghassaei on 5/26/15.
  */
 
-define(['underscore', 'three', 'part', 'bin!octaEdgeVoxPartSTL', 'stlLoader'], function(_, THREE, DMAPart, voxPart){
+define(['underscore', 'stlLoader', 'part', 'bin!octaEdgeVoxPartSTL'], function(_, THREE, DMAPart, voxPart){
 
     var loader = new THREE.STLLoader();
     var unitGeo = loader.parse(voxPart);
diff --git a/js/parts/OctaEdgeVoxPartLowPoly.js b/js/parts/OctaEdgeVoxPartLowPoly.js
index 90580fe3dc5d335a7af0d76936568c72f7df4de0..6434e9b32b65fe5fde684ceeb23a4e94c3d21f14 100644
--- a/js/parts/OctaEdgeVoxPartLowPoly.js
+++ b/js/parts/OctaEdgeVoxPartLowPoly.js
@@ -3,7 +3,7 @@
  */
 
 
-define(['underscore', 'three', 'part', 'bin!octaEdgeVoxPartLowPolySTL', 'stlLoader'], function(_, THREE, DMAPart, voxLowPoly){
+define(['underscore', 'stlLoader', 'part', 'bin!octaEdgeVoxPartLowPolySTL'], function(_, THREE, DMAPart, voxLowPoly){
 
     var loader = new THREE.STLLoader();
     var unitGeo = loader.parse(voxLowPoly);
diff --git a/js/parts/OctaFaceTriPart.js b/js/parts/OctaFaceTriPart.js
index b9c63dc7ec72b8ee4a8c39a6dbef7c9fd3c83171..da92e1a91622f398d8c06d4c1194dd05f74f7eab 100644
--- a/js/parts/OctaFaceTriPart.js
+++ b/js/parts/OctaFaceTriPart.js
@@ -3,7 +3,7 @@
  */
 
 
-define(['underscore', 'three', 'part', 'bin!octaFaceTrianglePartSTL', 'stlLoader'], function(_, THREE, DMAPart, trianglePart){
+define(['underscore', 'stlLoader', 'part', 'bin!octaFaceTrianglePartSTL'], function(_, THREE, DMAPart, trianglePart){
 
     var loader = new THREE.STLLoader();
     var unitGeo = loader.parse(trianglePart);
diff --git a/js/parts/OctaSquarePart.js b/js/parts/OctaSquarePart.js
deleted file mode 100644
index 3a69655c88c371a20fe62e547001ccf24a03ab85..0000000000000000000000000000000000000000
--- a/js/parts/OctaSquarePart.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
- * Created by aghassaei on 5/26/15.
- */
diff --git a/js/parts/OctaXPart.js b/js/parts/OctaXPart.js
deleted file mode 100644
index 3a69655c88c371a20fe62e547001ccf24a03ab85..0000000000000000000000000000000000000000
--- a/js/parts/OctaXPart.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
- * Created by aghassaei on 5/26/15.
- */
diff --git a/js/parts/SamTeqPart.js b/js/parts/SamTeqPart.js
new file mode 100644
index 0000000000000000000000000000000000000000..ff682892b053a128c86c05e4d38e1cefe08bbd13
--- /dev/null
+++ b/js/parts/SamTeqPart.js
@@ -0,0 +1,23 @@
+/**
+ * Created by aghassaei on 6/26/15.
+ */
+
+
+define(['underscore', 'stlLoader', 'part', 'bin!samTeqPartSTL'], function(_, THREE, DMAPart, stl){
+
+    var loader = new THREE.STLLoader();
+    var unitGeo = loader.parse(stl);
+    var unitScale = Math.sqrt(2);
+    unitGeo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
+
+    function PartSubclass(type, parent){
+        DMAPart.call(this, type, parent);
+    }
+    PartSubclass.prototype = Object.create(DMAPart.prototype);
+
+    PartSubclass.prototype._getGeometry = function(){
+        return unitGeo;
+    };
+
+    return PartSubclass;
+});
\ No newline at end of file