diff --git a/js/materials/DMAMaterials.js b/js/materials/DMAMaterials.js
index e1b06eeafa8a75bf397231d2b07288b81f323072..7bac6704bbaa436a7d66aff03a8d179fa711c43c 100644
--- a/js/materials/DMAMaterials.js
+++ b/js/materials/DMAMaterials.js
@@ -28,7 +28,6 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu
 
 
     function setMaterial(id, data){
-        if (id && data === null) return deleteMaterial(id);
         if (!materialsList[id]) materialsList[id] = {};
 
         //check if colors have changed
@@ -238,33 +237,17 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu
 
 
 
-    //edit material definition
-
-    var editingMaterial = null;//material definition currently being edited
-
-    function setEditingMaterial(id){
-        editingMaterial = id;
-    }
-
-    function getEditingMaterial(){
-        return editingMaterial;
-    }
-
-
-
-
 
 
     return {
         list: materialsList,
         setMaterial: setMaterial,
+        deleteMaterial: deleteMaterial,
         getMaterialForId: getMaterialForId,
         getCompositeKeys: getCompositeKeys,
         getVaildAvailableCompositeKeys: getVaildAvailableCompositeKeys,
         getChildCellTypes:getChildCellTypes,
         setToDefaultMaterial: setToDefaultMaterial,
-        setEditingMaterial: setEditingMaterial,
-        getEditingMaterial: getEditingMaterial,
         getDeleteMaterial: getDeleteMaterial
     };
 });
\ No newline at end of file
diff --git a/js/menus/MaterialEditorMenuView.js b/js/menus/MaterialEditorMenuView.js
index 082002e0d13af267434773b016b7827c18e17742..04b044ba4c7fae8e9c76ae6abf5f2e010a2acf12 100644
--- a/js/menus/MaterialEditorMenuView.js
+++ b/js/menus/MaterialEditorMenuView.js
@@ -11,17 +11,18 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi
     return MenuParentView.extend({
 
         events: {
-            "click #cancelMaterial":                             "_cancelMaterial",
-            "click #deleteMaterial":                             "_deleteMaterial",
-            "click #finishMaterial":                             "_save",
-            "click #newRandomColor":                             "_changeRandomColor",
-            "click #saveMaterial":                               "_saveMaterialToFile"
+            "click #saveToFile":                                 "_saveMaterialToFile",
+            "click #newRandomColor":                             "_changeRandomColor"
         },
 
-        _initialize: function(){
+        _initialize: function(options){
             //bind events
-            if (!materials.getEditingMaterial()) console.warn("no editing material id set");
-            this.material = _.clone(materials.list[materials.getEditingMaterial()]);
+            if (!options.myObject) {
+                console.warn("no editing material id passed in");
+                this.model.set("currentNav", plist.allMenus.navMaterial.parent);
+            }
+            this.materialID = options.myObject;
+            this.material = _.clone(materials.getMaterialForId(options.myObject));
             if (!this.material) this.material = {
                 name: "Material " + materialNameIndex++,
                 color: '#000000',
@@ -50,37 +51,21 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi
             this.render();
         },
 
-        _save: function(e){
-            e.preventDefault();
-            if (this.material.name == "") this.material.name = "Material " + materialNameIndex++;
-            materials.setMaterial(materials.getEditingMaterial(), _.clone(this.material));
-            this._exit();
-        },
-
         _saveMaterialToFile: function(e){
             e.preventDefault();
-            fileSaver.saveMaterial(materials.getEditingMaterial(), this.material);
+            fileSaver.saveMaterial(this.materialID, this.material);
         },
 
-        _deleteMaterial: function(e){
+        saveExitMenu: function(e, callback){
             e.preventDefault();
-            if (!materials.list[materials.getEditingMaterial()]) {
-                this._exit();
-                return;
-            }
-            var deleted = materials.setMaterial(materials.getEditingMaterial(), null);
-            if (deleted) this._exit();
-        },
-
-        _cancelMaterial: function(e){
-            e.preventDefault();
-            this._exit();
+            if (this.material.name == "") this.material.name = "Material " + materialNameIndex++;
+            materials.setMaterial(this.materialID, _.clone(this.material));
+            callback();
         },
 
-        _exit: function(){
-            this.material = null;
-            materials.setEditingMaterial(null);
-            this.model.set("currentNav", "navDesign");
+        deleteExitMenu: function(e, callback){
+            var deleted = materials.deleteMaterial(this.materialID);
+            if (deleted) callback();
         },
 
         _makeTemplateJSON: function(){
@@ -93,6 +78,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi
                 delete self.material[key];
             });
             this.material = null;
+            this.materialID = null;
         },
 
         template: _.template(template)
diff --git a/js/menus/MaterialMenuView.js b/js/menus/MaterialMenuView.js
index 1bf7543155738ed91a4661378419d79799d779e4..3df456fe7e4359599d97e921fb0f73aafe8d3803 100644
--- a/js/menus/MaterialMenuView.js
+++ b/js/menus/MaterialMenuView.js
@@ -32,30 +32,27 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'lattice', 'globals', 'ma
             e.stopPropagation();
             e.preventDefault();
             var id = $(e.target).data("id");
-            lattice.setToCompositeMode(id,materials.list[id]);
+            lattice.setToCompositeMode(id,materials.getMaterialForId(id));
         },
 
         _editMaterial: function(e){
             e.stopPropagation();
             e.preventDefault();
-            var id = $(e.target).data("id");
-            this._openMaterialEditor(id);
+            this._openMaterialEditor($(e.target).data("id"));
         },
 
         _newMaterial: function(e){
             e.preventDefault();
-            //first create dummy material
-            var id = "material" + this.cid + materialID++;
+            var id = "material" + this.cid + materialID++;//first create new material id
             this._openMaterialEditor(id);
         },
 
-        _openMaterialEditor: function(id){
-            materials.setEditingMaterial(id);
-            this.model.set("currentTab", "materialEditor", {silent:true});
-            this.model.set("currentNav", "navMaterial");
+        _openMaterialEditor: function(materialID){
+            require(['menuWrapper'], function(menuWrapper){
+                menuWrapper.initTabWithObject(materialID, "materialEditor", "navMaterial")
+            });
         },
 
-
         _latticeToComposite: function(e){
             lattice.setToCompositeMode(null, lattice.getCompositeData());
             lattice.clearCells();
diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js
index 3c8efc8968cd7841c50ee18f7cd2c99a48eec441..38279957830d04ae561e9c1d61acf7d3be81550d 100644
--- a/js/menus/MenuWrapperView.js
+++ b/js/menus/MenuWrapperView.js
@@ -17,7 +17,10 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice', 'appState', 'tex
             "focusout .floatInput":                        "_softRenderTab",//force rounding if needed
             "focusout .intInput":                          "_softRenderTab",
             "change input:checkbox":                       "_clickCheckbox",
-            "click input:radio":                           "_radioSelection"
+            "click input:radio":                           "_radioSelection",
+            "click #deleteExitMenu":                       "_deleteExitMenu",
+            "click #cancelExitMenu":                       "_cancelExitMenu",
+            "click #saveExitMenu":                         "_saveExitMenu"
         },
 
         initialize: function(){
diff --git a/js/menus/templates/MaterialEditorMenuView.html b/js/menus/templates/MaterialEditorMenuView.html
index df017fdb2ba8ec203685b8446ee4f01e0f198212..b18f8190aea0dd3e0bc528d96b65f2519724ad9a 100644
--- a/js/menus/templates/MaterialEditorMenuView.html
+++ b/js/menus/templates/MaterialEditorMenuView.html
@@ -10,12 +10,12 @@ Material Properties:<br/>
     <span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
     Conductive</label><br/>
 <br/>
-<a id="finishMaterial" href="#" class="btn btn-block btn-lg btn-success">Save Material</a><br/>
+<a id="saveExitMenu" href="#" class="btn btn-block btn-lg btn-success">Save Material</a><br/>
 <% if (noDelete){ %>
-    <a id="cancelMaterial" href="#" class="btn btn-halfWidth btn-lg btn-default">Cancel / Exit</a>
-    <a id="saveMaterial" href="#" class="btn btn-halfWidth btn-lg pull-right btn-default">Save To File</a><br/><br/>
+    <a id="cancelExitMenu" href="#" class="btn btn-halfWidth btn-lg btn-default">Cancel / Exit</a>
+    <a id="saveToFile" href="#" class="btn btn-halfWidth btn-lg pull-right btn-default">Save To File</a><br/><br/>
 <% } else { %>
-    <a id="deleteMaterial" href="#" class="btn btn-halfWidth btn-lg btn-default"><span class="fui-trash"></span> Delete</a>
-    <a id="cancelMaterial" href="#" class="btn btn-halfWidth pull-right btn-lg btn-default">Cancel / Exit</a><br/><br/>
-    <a id="saveMaterial" href="#" class="btn btn-block btn-lg pull-right btn-default">Save Material To File</a><br/><br/>
+    <a id="deleteExitMenu" href="#" class="btn btn-halfWidth btn-lg btn-default"><span class="fui-trash"></span> Delete</a>
+    <a id="cancelExitMenu" href="#" class="btn btn-halfWidth pull-right btn-lg btn-default">Cancel / Exit</a><br/><br/>
+    <a id="saveToFile" href="#" class="btn btn-block btn-lg pull-right btn-default">Save Material To File</a><br/><br/>
 <% } %>