diff --git a/js/menus/LatticeMenuView.js b/js/menus/LatticeMenuView.js
index 4b0b7f3fe5438460f9122084d56e9b24c04ce531..853daa0c8a30042f9e85d80efe5a0d728e1b7c21 100644
--- a/js/menus/LatticeMenuView.js
+++ b/js/menus/LatticeMenuView.js
@@ -18,7 +18,10 @@ LatticeMenuView = Backbone.View.extend({
         this.appState = options.appState;
 
         _.bindAll(this, "render");
-        this.listenTo(this.model, "change", this.render);
+        this.listenTo(this.model, "change", function(){
+            if(!model.hasChanged('cellMode')) return;//ignore cell mode changes
+            this.render();
+        });
     },
 
     _clearCells: function(e){
diff --git a/js/menus/navbar.js b/js/menus/navbar.js
index d8d1fe6e3d8fed6bf45541fe54805e8ea335a65f..d312437c2f459ae424434b168daea88e1e4e69ed 100644
--- a/js/menus/navbar.js
+++ b/js/menus/navbar.js
@@ -50,12 +50,7 @@ NavBar = Backbone.View.extend({
             $(e.target).blur();
             return;
         }
-        if (navSelection) {
-            if (navSelection=="navDesign") this.model.set("currentTab", this.model.get("lastDesignTab"), {silent: true});
-            else if (navSelection=="navSim") this.model.set("currentTab", this.model.get("lastSimulationTab"), {silent: true});
-            else if (navSelection=="navAssemble") this.model.set("currentTab", this.model.get("lastAssembleTab"), {silent: true});
-            this.model.set("currentNav", navSelection);
-        }
+        if (navSelection) this.model.set("currentNav", navSelection);
     },
 
     _updateNavSelectionUI: function(){
diff --git a/js/models/AppState.js b/js/models/AppState.js
index 9a37734d05714e5d66c428e74853edccc9da3f2e..9e573047e7c3380c47e3b64d264ce4c35acf5770 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -23,6 +23,7 @@ AppState = Backbone.Model.extend({
 
         this.listenTo(this, "change:currentTab", this._storeTab);
         this.listenTo(this, "change:currentTab", this._updateLatticeMode);
+        this.listenTo(this, "change:currentNav", this._updateCurrentTabForNav);
 
         this.lattice = options.lattice;
     },
@@ -41,6 +42,15 @@ AppState = Backbone.Model.extend({
         else if (currentTab == "import") this.lattice.set("cellMode", "cell");
         else if (currentTab == "sketch") this.lattice.set("cellMode", "cell");
         else if (currentTab == "part") this.lattice.set("cellMode", "parts");
+    },
+
+    //update to last tab open in that section
+    _updateCurrentTabForNav: function(){
+        var navSelection = this.get("currentNav");
+        if (navSelection=="navDesign") this.set("currentTab", this.get("lastDesignTab"), {silent:true});
+        else if (navSelection=="navSim") this.set("currentTab", this.get("lastSimulationTab"), {silent:true});
+        else if (navSelection=="navAssemble") this.set("currentTab", this.get("lastAssembleTab"), {silent:true});
+        this._updateLatticeMode();//a little bit hacky, this updates the lattice, but holds off on updating the menus til the animation has happened
     }
 
 });
\ No newline at end of file