diff --git a/js/menus/MaterialMenuView.js b/js/menus/MaterialMenuView.js
index 46e5517f72a1aa355e28d944c051e3d7b6f0486b..432875acea5dda8c2a5822ecf25cebd0501f5196 100644
--- a/js/menus/MaterialMenuView.js
+++ b/js/menus/MaterialMenuView.js
@@ -7,6 +7,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'lattice'], function($, _
     return MenuParentView.extend({
 
         events: {
+            "click #navToCompositeMenu":                             "_navToCompositeMenu"
         },
 
         _initialize: function(){
@@ -15,6 +16,11 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'lattice'], function($, _
             this.listenTo(this.model, "change", this.render);
         },
 
+        _navToCompositeMenu: function(e){
+            e.preventDefault();
+            this.model.set("currentNav", "navComposite");
+        },
+
         _makeTemplateJSON: function(){
             return _.extend(lattice.toJSON(), this.model.toJSON(), plist);
         },
diff --git a/js/models/AppState.js b/js/models/AppState.js
index b6ef4f7e55aea82060ac2020ba5cfe3a7164e393..41971c24d02459825094ed8e2343bc200e599205 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -5,7 +5,7 @@
 //a class to store global app state, model for navbar and menu wrapper
 //never deallocated
 
-define(['underscore', 'backbone', 'threeModel', 'three'], function(_, Backbone, three, THREE){
+define(['underscore', 'backbone', 'threeModel', 'three', 'plist'], function(_, Backbone, three, THREE, plist){
 
     var AppState = Backbone.Model.extend({
 
@@ -15,9 +15,7 @@ define(['underscore', 'backbone', 'threeModel', 'three'], function(_, Backbone,
             currentTab:"lattice",
 
             //last tab that one open in each of the main menus
-            lastDesignTab: "lattice",
-            lastSimulationTab: "physics",
-            lastAssembleTab: "assembler",
+            lastNavTab: {},
 
             menuIsVisible: true,
             scriptIsVisible: false,
@@ -85,16 +83,10 @@ define(['underscore', 'backbone', 'threeModel', 'three'], function(_, Backbone,
             if (currentTab != "animate") this.set("stockSimulationPlaying", false);
             if (currentTab != "cam") this.set("manualSelectOrigin", false);
             if (currentTab == "import" && globals.lattice.get("connectionType") == "edgeRot") globals.lattice.set("partType", "voxLowPoly");
-            this._storeTab(this.get("currentNav"), currentTab);
+            this.get("lastNavTab")[this.get("currentNav")] = currentTab;//store tab
             this._updateCellMode(currentTab);
         },
 
-        _storeTab: function(currentNav, currentTab){
-            if (currentNav == "navDesign") this.set("lastDesignTab", currentTab);
-            else if (currentNav == "navSim") this.set("lastSimulationTab", currentTab);
-            else if (currentNav == "navAssemble") this.set("lastAssembleTab", currentTab);
-        },
-
         _updateCellMode: function(currentTab){
             if (currentTab == "lattice" || currentTab == "import") this.set("cellMode", "cell");
             //else if (currentTab == "import") this.set("cellMode", "cell");
@@ -105,17 +97,13 @@ define(['underscore', 'backbone', 'threeModel', 'three'], function(_, Backbone,
         _navChanged: function(){
             //update to last tab open in that section
             var navSelection = this.get("currentNav");
+            var nextTab = this.get("lastNavTab")[navSelection] || _.keys(plist.allMenuTabs[navSelection])[0];
+            this.set("currentTab", nextTab);
+
             if (navSelection == "navDesign") {
-                this.set("currentTab", this.get("lastDesignTab"));
                 this.set("basePlaneIsVisible", true);
                 this.set("highlighterIsVisible", true);
             }
-            else if (navSelection == "navSim") {
-                this.set("currentTab", this.get("lastSimulationTab"));
-            }
-            else if (navSelection == "navAssemble") {
-                this.set("currentTab", this.get("lastAssembleTab"));
-            }
         },
 
         _updateColorScheme: function(){
diff --git a/js/models/PList.js b/js/models/PList.js
index 6c30ae34e7fc7f682644ca7d9e30c61e21b19bd9..7e7406848c4cdca8863a55d597fd8bc9a4e0e337 100644
--- a/js/models/PList.js
+++ b/js/models/PList.js
@@ -24,6 +24,9 @@ define(['three'], function(THREE){
                 cam: "Process",
                 animate:"Preview",
                 send: "Send"
+            },
+            navComposite:{
+                composite:"Composite"
             }
         },