diff --git a/assets/stls/stapler/stapler_assembler_substrate2(1).STL b/assets/stls/stapler/stapler_assembler_substrate2(1).STL
new file mode 100644
index 0000000000000000000000000000000000000000..bde749e6e0c31d75568da505286fe2fb76034cd5
Binary files /dev/null and b/assets/stls/stapler/stapler_assembler_substrate2(1).STL differ
diff --git a/assets/stls/stapler/substrate.stl b/assets/stls/stapler/substrate.stl
old mode 100755
new mode 100644
index 5427cd67663a32d98b47a973b6cdebcca9496b87..bde749e6e0c31d75568da505286fe2fb76034cd5
Binary files a/assets/stls/stapler/substrate.stl and b/assets/stls/stapler/substrate.stl differ
diff --git a/js/cam/assemblers/Assembler.js b/js/cam/assemblers/Assembler.js
index 72c5be6a2a5391edae71e50ab10819f696afde23..40829b1d603d79a2874d7fa650c03997ea7aa4d9 100644
--- a/js/cam/assemblers/Assembler.js
+++ b/js/cam/assemblers/Assembler.js
@@ -128,6 +128,30 @@ Assembler.prototype._postReleaseStock = function(cellPosition, cell, exporter, r
 
 
 
+Assembler.prototype.updateCellMode = function(){
+    this.stock.setMode();
+};
+
+Assembler.prototype.pickUpStock = function(){
+    this.hasStock = true;
+    this.cell.draw();
+};
+
+Assembler.prototype.releaseStock = function(index){
+    this.hasStock = false;
+    globals.lattice.showCellAtIndex(JSON.parse(index));
+    this.cell.hide();
+};
+
+Assembler.prototype.pause = function(){
+};
+
+
+
+
+
+
+
 Assembler.prototype.destroy = function(){
     this.stock.destroy();
     this.zAxis.parent.remove(this.zAxis);
diff --git a/js/cam/assemblers/DualStaplerAssembler.js b/js/cam/assemblers/DualStaplerAssembler.js
index 432d569c0796310bffa1febcd8580ec81dc71efe..918176f3bd6fe0db66f269cf4fbb268504ae14e7 100644
--- a/js/cam/assemblers/DualStaplerAssembler.js
+++ b/js/cam/assemblers/DualStaplerAssembler.js
@@ -10,9 +10,10 @@ DualStaplerAssembler.prototype = Object.create(StaplerAssembler.prototype);
 StaplerAssembler.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));
-        geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2));
         return geometry;
     }
 
@@ -30,7 +31,6 @@ StaplerAssembler.prototype._loadSTls = function(doAdd){
         doAdd(geometryScale(geometry), "xAxis");
     });
     loader.load("assets/stls/stapler/substrate.stl", function(geometry){
-        geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, 2, 0));
         doAdd(geometryScale(geometry), "substrate");
     });
 };
\ No newline at end of file
diff --git a/js/cam/assemblers/StaplerAssembler.js b/js/cam/assemblers/StaplerAssembler.js
index 6e7e5293f1d8b9218e4ecfca8e5dcfd51034a400..c3cc822e57738331bb2b26a8ccd7583ab085824c 100644
--- a/js/cam/assemblers/StaplerAssembler.js
+++ b/js/cam/assemblers/StaplerAssembler.js
@@ -45,7 +45,6 @@ StaplerAssembler.prototype._loadSTls = function(doAdd){
         doAdd(geometryScale(geometry), "xAxis");
     });
     loader.load("assets/stls/stapler/substrate.stl", function(geometry){
-        geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, 2, 0));
         doAdd(geometryScale(geometry), "substrate");
     });
 };
\ No newline at end of file
diff --git a/js/cam/cam.js b/js/cam/cam.js
index 516ec4777234ceaf027414d4cc688c2f8edbbbf1..02e385d0d629a3a1a8d21e888d83d4083e0fb36b 100644
--- a/js/cam/cam.js
+++ b/js/cam/cam.js
@@ -122,7 +122,7 @@ Cam = Backbone.Model.extend({
     },
 
     _updateCellMode: function(){
-        if (this.get("assembler")) this.get("assembler").setVisibility(this.isVisible());
+        if (this.get("assembler")) this.get("assembler").updateCellMode();
         globals.three.render();
     },
 
diff --git a/js/cells/DMACell.js b/js/cells/DMACell.js
index a011aea62f66acbf3f72cd7a5caea2fa9f16cd6a..5e6f8db50172036b36e46a7cfb3b76e01c406c80 100644
--- a/js/cells/DMACell.js
+++ b/js/cells/DMACell.js
@@ -13,7 +13,10 @@ function DMACell(indices){
     //object 3d is parent to all 3d elements related to cell, parts, beams, nodes, etc
     this.object3D = this._buildObject3D();
     this._addChildren(this._buildMesh(), this.object3D);//build cell meshes
-    if (!this.superCell && this.indices) globals.three.sceneAdd(this.object3D, "cell");
+    if (!this.superCell){
+        if (this.indices) globals.three.sceneAdd(this.object3D, "cell");
+        else this.hide();
+    }
 
     this.setMode();
 }
diff --git a/js/cells/supercells/GIKSuperCell.js b/js/cells/supercells/GIKSuperCell.js
index e399954839fa55336ae626b2e09553af8b8baeb6..222e2976e4a5bf3cf31934b3d9f4e9445f113015 100644
--- a/js/cells/supercells/GIKSuperCell.js
+++ b/js/cells/supercells/GIKSuperCell.js
@@ -45,6 +45,7 @@ GIKSuperCell = function(length, range, cells){
         self.addChildCell(cell.setSuperCell(self, index));
     });
     if (this.indices) globals.three.sceneAdd(this.object3D, "supercell");
+//    else (this.hide());
 
     this.setMode();
 };