diff --git a/js/cells/DMACell.js b/js/cells/DMACell.js
index 08e9199261a08e75ec417eed899c76d2856abcf2..6f1ba1cb8753af52151d73a80f335a6c6c2e0f62 100644
--- a/js/cells/DMACell.js
+++ b/js/cells/DMACell.js
@@ -27,7 +27,7 @@ DMACell.prototype._getSceneType = function(){//todo need this?
 DMACell.prototype._buildObject3D = function(){
     var object3D = this._translateCell(this._rotateCell(new THREE.Object3D()));
     object3D.myParent = this;//reference to get mouse raycasting back
-    object3D.name = "object3d";
+    object3D.name = "object3D";
     return object3D;
 };
 
diff --git a/js/cells/GIKCell.js b/js/cells/GIKCell.js
index f156f061a870df0c09303d1a1ed5a992862e360c..1e7ea8c017e7e6e79572942e9f098dfc3905d998 100644
--- a/js/cells/GIKCell.js
+++ b/js/cells/GIKCell.js
@@ -6,23 +6,28 @@
 (function () {
 
     function GIKCell(indices){
-        this.superCell = true;
-        CubeCell.call(this, indices, true);
+        this.indices = indices;
     }
     GIKCell.prototype = Object.create(CubeCell.prototype);
 
     GIKCell.prototype.setSuperCell = function(superCell, index){
         this.superCell = superCell;
         this.superCellIndex = index;
+        CubeCell.call(this, this.indices);
         if (this.superCellIndex == this.superCell.getLength()) this.object3D.rotateZ(Math.PI);
     };
 
+    GIKCell.prototype._translateCell = function(object3D){
+        if (this.superCellIndex) object3D.position.set(-this.superCellIndex*this.xScale(),0, 0);
+        return object3D;
+    };
+
     GIKCell.prototype.getMaterialType = function(){
         return this.superCell.getMaterialType();
     };
 
     GIKCell.prototype._initParts = function(){
-        if (!this.superCell || this.superCell === true) return null;
+        if (!this.superCell) return null;
         var parts  = [];
         var isEnd = this.superCellIndex == 0 || this.superCellIndex == this.superCell.getLength();
         if (globals.lattice.get("partType") == "lego") {
diff --git a/js/cells/supercells/GIKSuperCell.js b/js/cells/supercells/GIKSuperCell.js
index aeb4cce8a0988bac4a9d6e3b8d18a8aa95a8a283..59d8e09073358cb8a05fbb01598f9dec95fd773b 100644
--- a/js/cells/supercells/GIKSuperCell.js
+++ b/js/cells/supercells/GIKSuperCell.js
@@ -13,7 +13,7 @@ GIKSuperCell = function(length, range, cells){
 
     this.object3D = this._buildObject3D();
     this._addChildren(this._buildMesh(length), this.object3D);
-    this._addChildren(this._getCellObject3Ds(cells));
+
     globals.three.sceneAdd(this.object3D, this._getSceneType());
 
 //    this.setMode();
@@ -30,10 +30,16 @@ GIKSuperCell.prototype._buildObject3D = function(){
     return this._translateCell(this._rotateCell(new THREE.Object3D()));
 };
 
+GIKSuperCell.prototype.addCellsToScene = function(){
+    this._addChildren(this._getCellObject3Ds(this.cells));
+};
+
 GIKSuperCell.prototype._getCellObject3Ds = function(cells){
     var object3Ds = [];
+    var self = this;
     _.each(cells, function(cell){
-        object3Ds.push(cell.getObject3D());
+        var object3D = cell.getObject3D();
+        object3Ds.push(object3D);
     });
     return object3Ds;
 };
@@ -76,28 +82,7 @@ GIKSuperCell.prototype.setMode = function(mode){
 
     if (mode === undefined) mode = globals.appState.get("cellMode");
     if (mode == "cell") mode = "supercell";
-
-    switch(mode) {
-        case "supercell":
-            break;
-        case "cell":
-            break;
-        case "part":
-            if (!this.parts) {
-                this.parts = this._initParts();
-                var self = this;
-                _.each(this.parts, function(part){
-                    self._addChildren(part.getMesh());
-                });
-            }
-            break;
-        case "beam":
-            if (!this.beams) this.beams = this._initBeams();
-            break;
-        case "node":
-            if (!this.nodes) this.nodes = this._initNodes();
-            break;
-    }
+    if (mode == "part") mode = "object3D";
 
     _.each(this.object3D.children, function(child){
         child.visible = child.name == mode;
diff --git a/js/lattice/GIKLattice.js b/js/lattice/GIKLattice.js
index 6cb2826ecf0e24bf1a79490a5f95ca19ef3131ec..d211fc4ad032a78856a5d36c0b6eb84eb9ac0f46 100644
--- a/js/lattice/GIKLattice.js
+++ b/js/lattice/GIKLattice.js
@@ -52,6 +52,7 @@ latticeSubclasses["GIKLattice"] = {
             _.each(cells, function(cell, index){
                 cell.setSuperCell(superCell, index);
             });
+            superCell.addCellsToScene();
             return superCell;
         },
 
diff --git a/js/models/ThreeModel.js b/js/models/ThreeModel.js
index 11870b1de9cb0b009ebdaf2ec386a4d8fbddd686..809f598b554e7292066b9d24034f4da2a11c22b9 100644
--- a/js/models/ThreeModel.js
+++ b/js/models/ThreeModel.js
@@ -59,7 +59,7 @@ function ThreeModel(){
             cells.push(object.children[0]);
         } else if (type == "supercell"){
             _.each(object.children, function(child){//add cells as hover
-                if (child.name != "object3d") return;
+                if (child.name != "object3D") return;
                 cells.push(child.children[0]);
             });
         } else if (type == "part"){//todo change this