diff --git a/js/cam/assemblers/Assembler.js b/js/cam/assemblers/Assembler.js
index dafd50ede1e67323554c2f511869ad365f835a8c..9e6e7f19509fecd012ab6d795c5b0ab8e08363eb 100644
--- a/js/cam/assemblers/Assembler.js
+++ b/js/cam/assemblers/Assembler.js
@@ -16,6 +16,8 @@ function Assembler(){
         self._configureAssemblerMovementDependencies();
         globals.three.render();
     });
+
+    this.setVisibility(globals.cam.isVisible());
 }
 
 Assembler.prototype._buildStock = function(){
diff --git a/js/cam/assemblers/DualStaplerAssembler.js b/js/cam/assemblers/DualStaplerAssembler.js
index 9f502b119decb7cf656e2229dee875f7902b9eb1..0613baa20fe07c475b3243c3b6e9f4a28f462de5 100644
--- a/js/cam/assemblers/DualStaplerAssembler.js
+++ b/js/cam/assemblers/DualStaplerAssembler.js
@@ -7,30 +7,6 @@ function DualStaplerAssembler(){
 }
 DualStaplerAssembler.prototype = Object.create(StaplerAssembler.prototype);
 
-DualStaplerAssembler.prototype._loadSTls = function(doAdd){
-
-    function geometryScale(geometry){
-//        geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2));
-//        geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, 0, -4.3112));
-        var unitScale = 20;
-//        geometry.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
-        return geometry;
-    }
-
-    var loader = new THREE.STLLoader();
-    loader.load("assets/stls/stapler/frame.stl", function(geometry){
-        doAdd(geometryScale(geometry), "frame");
-    });
-    loader.load("assets/stls/stapler/zStageDual.stl", function(geometry){
-        doAdd(geometryScale(geometry), "zAxis");
-    });
-    loader.load("assets/stls/stapler/yStage.stl", function(geometry){
-        doAdd(geometryScale(geometry), "yAxis");
-    });
-    loader.load("assets/stls/stapler/xStage.stl", function(geometry){
-        doAdd(geometryScale(geometry), "xAxis");
-    });
-    loader.load("assets/stls/stapler/substrate.stl", function(geometry){
-        doAdd(geometryScale(geometry), "substrate");
-    });
+DualStaplerAssembler.prototype._headSTLFile = function(){
+    return "assets/stls/stapler/zStageDual.stl";
 };
\ No newline at end of file
diff --git a/js/cam/assemblers/StaplerAssembler.js b/js/cam/assemblers/StaplerAssembler.js
index 0cecf97785e0851891106eca7f8e4ba072186f52..3765debb77180069f527c9319e44e2a7b40ab178 100644
--- a/js/cam/assemblers/StaplerAssembler.js
+++ b/js/cam/assemblers/StaplerAssembler.js
@@ -43,7 +43,7 @@ StaplerAssembler.prototype._loadSTls = function(doAdd){
     loader.load("assets/stls/stapler/frame.stl", function(geometry){
         doAdd(geometryScale(geometry), "frame");
     });
-    loader.load("assets/stls/stapler/zStage.stl", function(geometry){
+    loader.load(this._headSTLFile(), function(geometry){
         doAdd(geometryScale(geometry), "zAxis");
     });
     loader.load("assets/stls/stapler/yStage.stl", function(geometry){
@@ -59,6 +59,10 @@ StaplerAssembler.prototype._loadSTls = function(doAdd){
     });
 };
 
+StaplerAssembler.prototype._headSTLFile = function(){
+    return "assets/stls/stapler/zStage.stl";
+};
+
 StaplerAssembler.prototype._moveXAxis = function(startingPos, target, axis, speed, callback){
     if (target == null || target === undefined) {
         callback();
diff --git a/js/cam/cam.js b/js/cam/cam.js
index c088912db8e0f7f580abd5fffff894a10f53c76d..32ad206245ccd240cb0040c4db724e208784e430 100644
--- a/js/cam/cam.js
+++ b/js/cam/cam.js
@@ -82,7 +82,6 @@ Cam = Backbone.Model.extend({
         if (this.get("assembler")) this.get("assembler").destroy();
         this.set("assembler", null);
         this._setMachineDefaults(machineName);
-        globals.appState.set("basePlaneIsVisible", false);
         if (machineName == "shopbot"){
             this.set("assembler", new Shopbot());
         } else if (machineName == "handOfGod"){
@@ -146,7 +145,10 @@ Cam = Backbone.Model.extend({
 //        this.get("stock").visible = visible;
         if (visible && !this.get("assembler")) this.selectMachine();
         if (this.get("assembler")) this.get("assembler").setVisibility(visible);
-        if (globals.appState.get("currentNav") == "navAssemble") globals.appState.set("basePlaneIsVisible", !visible);
+        if (globals.appState.get("currentNav") == "navAssemble") {
+            globals.appState.set("basePlaneIsVisible", !visible);
+            globals.appState.set("highlighterIsVisible", !visible);
+        }
         globals.three.render();
     },
 
diff --git a/js/cells/supercells/GIKSuperCell.js b/js/cells/supercells/GIKSuperCell.js
index fc9190f32248fed6601994809c613b6aa2980de2..06d3c2394e7293018959acd75505066e5c090ad0 100644
--- a/js/cells/supercells/GIKSuperCell.js
+++ b/js/cells/supercells/GIKSuperCell.js
@@ -112,7 +112,7 @@ GIKSuperCell.prototype.destroy = function(){
     globals.three.sceneRemove(this.object3D);
     this.object3D = null;
     _.each(this.cells, function(cell){
-        if (cell && !cell.destroyStarted) globals.lattice.removeCell(cell);
+        if (cell && cell.indices && !cell.destroyStarted) globals.lattice.removeCell(cell);
     });
     this.cells = null;
     this.indices = null;