diff --git a/js/fea/DmaCell.js b/js/fea/DmaCell.js
index c71393244c03f93ad13c0f5a240a99aabefdf0a1..ea626cf0177e06b4f136c54f2dbb5dbdc1f3dea9 100644
--- a/js/fea/DmaCell.js
+++ b/js/fea/DmaCell.js
@@ -19,7 +19,7 @@ function DMACell(indices, scale) {
     this.nodes = this._initNodes(this.cellMesh.children[0].geometry.vertices);
     this.beams = this._initBeams(this.nodes, this.cellMesh.children[0].geometry.faces);
 
-    var cellMode = dmaGlobals.lattice.get("cellMode");
+    var cellMode = dmaGlobals.appState.get("cellMode");
     var beamMode = dmaGlobals.lattice.get("partType") == "beam";
     this.drawForMode(scale, cellMode, beamMode);
 
diff --git a/js/models/AppState.js b/js/models/AppState.js
index 5cad69bd7ecaa0efd3b9e8bd9ef43ca384b89f56..fbfcd98bbf0701736b1db242cb0be3db97775674 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -146,7 +146,8 @@ AppState = Backbone.Model.extend({
         //key bindings
         shift: false,
         deleteMode: false,
-        extrudeMode: false
+        extrudeMode: false,
+        cellMode: "cell"//show cells vs parts
     },
 
     initialize: function(){
@@ -194,10 +195,10 @@ AppState = Backbone.Model.extend({
 
     _updateCellMode: function(){
         var currentTab = this.get("currentTab");
-        if (currentTab == "lattice") dmaGlobals.lattice.set("cellMode", "cell");
-        else if (currentTab == "import") dmaGlobals.lattice.set("cellMode", "cell");
-        else if (currentTab == "sketch") dmaGlobals.lattice.set("cellMode", "cell");
-        else if (currentTab == "part") dmaGlobals.lattice.set("cellMode", "part");
+        if (currentTab == "lattice") this.set("cellMode", "cell");
+        else if (currentTab == "import") this.set("cellMode", "cell");
+        else if (currentTab == "sketch") this.set("cellMode", "cell");
+        else if (currentTab == "part") this.set("cellMode", "part");
     },
 
     //update to last tab open in that section
@@ -246,9 +247,9 @@ AppState = Backbone.Model.extend({
                 this.set("extrudeMode", state);
                 break;
             case 80://p part mode
-                var cellMode = dmaGlobals.lattice.get("cellMode");
-                if (cellMode == "part") dmaGlobals.lattice.set("cellMode", "cell");
-                else if (cellMode == "cell") dmaGlobals.lattice.set("cellMode", "part");
+                var cellMode = this.get("cellMode");
+                if (cellMode == "part") this.set("cellMode", "cell");
+                else if (cellMode == "cell") this.set("cellMode", "part");
                 break;
             case 83://s save
                 if (e.ctrlKey || e.metaKey){//command
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index 94c7d22ece6294ae419ae5a63d13f84e9fecb006..3738be2dea793162f5056de7181bf4ab34e6cf3c 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -24,7 +24,6 @@ Lattice = Backbone.Model.extend({
         //spacing for connectors/joints
         cellSeparation: {xy:0, z:0},
 
-        cellMode: "cell",//show cells vs parts
         cellType: "octa",
         connectionType: "face",
         partType: "triangle"
@@ -38,7 +37,8 @@ Lattice = Backbone.Model.extend({
 
         //bind events
         this.listenTo(this, "change:scale", this._scaleDidChange);
-        this.listenTo(this, "change:cellMode change:partType", this._updateForMode);
+        this.listenTo(dmaGlobals.appState, "change:cellMode", this._updateForMode);
+        this.listenTo(this, "change:partType", this._updateForMode);
         this.listenTo(this, "change:cellType change:connectionType", this._updateLatticeType);
         this.listenTo(this, "change:cellSeparation", this._updateCellSeparation);
 
@@ -302,7 +302,7 @@ Lattice = Backbone.Model.extend({
     ////////////////////////////////////////////////////////////////////////////////////
 
     _updateForMode: function(){
-        var cellMode = this.get("cellMode");
+        var cellMode = dmaGlobals.appState.get("cellMode");
         var beamMode =  this.get("partType") == "beam";
         var scale = this.get("scale");
         this._iterCells(this.get("cells"), function(cell){
@@ -314,7 +314,7 @@ Lattice = Backbone.Model.extend({
     _updateCellSeparation: function(){
         var cellSep = this.get("cellSeparation");
         var scale = this.get("scale");
-        var cellMode = this.get("cellMode");
+        var cellMode = dmaGlobals.appState.get("cellMode");
         this.get("basePlane").updateXYSeparation(cellSep.xy);
         this._iterCells(this.get("cells"), function(cell){
             if (cell) cell.updateForScale(scale, cellMode);
@@ -327,7 +327,7 @@ Lattice = Backbone.Model.extend({
         this.get("basePlane").updateScale(scale);
         this.get("highlighter").updateScale(scale);
 
-        var cellMode = this.get("cellMode");
+        var cellMode = dmaGlobals.appState.get("cellMode");
         this._iterCells(this.get("cells"), function(cell){
             if (cell) cell.updateForScale(scale, cellMode);
         });
@@ -505,9 +505,11 @@ Lattice = Backbone.Model.extend({
 
     saveJSON: function(name){
         if (!name) name = "lattice";
+        var assemblerData = _.omit(dmaGlobals.assembler.toJSON(), ["origin", "stock", "exporter"]);
+        if (!dmaGlobals.assembler.get("editsMadeToProgram")) assemblerData.dataOut = "";
         var data = JSON.stringify({
             lattice:_.omit(this.toJSON(), ["highlighter", "basePlane"]),
-            assembler: _.omit(dmaGlobals.assembler.toJSON(), ["origin", "stock"])
+            assembler: assemblerData
         });
         var blob = new Blob([data], {type: "text/plain;charset=utf-8"});
         saveAs(blob, name + ".json");
@@ -517,8 +519,11 @@ Lattice = Backbone.Model.extend({
         this.clearCells();
         var data = JSON.parse(data);
         var self = this;
-        _.each(_.keys(data), function(key){
-            self.set(key, data[key], {silent:true});
+        _.each(_.keys(data.lattice), function(key){
+            self.set(key, data.lattice[key], {silent:true});
+        });
+        _.each(_.keys(data.assembler), function(key){
+            dmaGlobals.assembler.set(key, data.assembler[key]);
         });
         this.set("shouldPreserveCells", true, {silent:true});
         this._updateLatticeType(null, null, null, true);