diff --git a/css/main.css b/css/main.css
index 24b0d487c755973214194a54309ee71e7d32eb37..f912b18d849d3696676263199ee661dded3c0c33 100644
--- a/css/main.css
+++ b/css/main.css
@@ -145,4 +145,3 @@ hr {
   border-color: #888 -moz-use-text-color #888;
 }
 
-
diff --git a/js/menus/Navbar.js b/js/menus/Navbar.js
index adbaae9c10640c5a9364af2ab8156ce2f2a1e8ab..203c1be5916b9984cbd2c47757928ebeac827ae8 100644
--- a/js/menus/Navbar.js
+++ b/js/menus/Navbar.js
@@ -8,12 +8,13 @@
 
 NavBar = Backbone.View.extend({
 
-    el: "#globalNav",
+    el: "body",
 
     events: {
         "click #showHideMenu":                          "_setMenuVis",
         "click .menuHoverControls":                     "_setNavSelection",
-        "click #saveAsJSON":                                "_saveAs",
+        "click #saveJSON":                              "_save",
+        "click #saveAsJSON":                            "_saveAs",
         "click #importJSON":                            "_importJSON",
         "change #jsonInput":                            "_selectJSONFiles",
     },
@@ -90,11 +91,17 @@ NavBar = Backbone.View.extend({
         })();
     },
 
-    _saveAs: function(e){
+    _save: function(e){
         e.preventDefault();
         dmaGlobals.lattice.saveAsJSON();
     },
 
+    _saveAs: function(e){
+        e.preventDefault();
+        var fileName = $("#saveAsFileName").val();
+        dmaGlobals.lattice.saveAsJSON(fileName);
+    },
+
     _uiStuff: function(){
         var $logo = $("#logo");
         $logo.mouseover(function(){
diff --git a/js/models/AppState.js b/js/models/AppState.js
index 61830789ef3e920ef9c055bf956f3967c4a4bd90..60b3f1bd9af762392e5fa16f55428ad0bc96f9e2 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -114,11 +114,9 @@ AppState = Backbone.Model.extend({
 //        console.log(e.keyCode);
         switch(e.keyCode){
             case 16://shift
-                e.preventDefault();
                 this.set("shift", state);
                 break;
             case 68://d delete mode
-                e.preventDefault();
                 if (this.get("cellMode") == "cell") this.set("deleteMode", state);//only for cell mode
                 else this.set("deleteMode", false);
                 break;
@@ -135,14 +133,14 @@ AppState = Backbone.Model.extend({
                 this.lattice.set("inverseMode", !this.lattice.get("inverseMode"));
                 break;
             case 83://s save
-                e.preventDefault();
                 if (e.ctrlKey || e.metaKey){//command
+                    e.preventDefault();
                     dmaGlobals.lattice.saveAsJSON();
                 }
                 break;
             case 79://o open
-                e.preventDefault();
                 if (e.ctrlKey || e.metaKey){//command
+                    e.preventDefault();
                     $("#jsonInput").click();
                 }
                 break;
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index 95c04a7837654320e0aafb8e050b50edb6495d33..801b59aa31457935c38ed837c2208525c60e7044 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -454,10 +454,11 @@ Lattice = Backbone.Model.extend({
         }
     },
 
-    saveAsJSON: function(){
+    saveAsJSON: function(name){
+        if (!name) name = "lattice";
         var data = JSON.stringify(_.omit(this.toJSON(), ["highlighter", "basePlane"]));
         var blob = new Blob([data], {type: "text/plain;charset=utf-8"});
-        saveAs(blob, "lattice.json");
+        saveAs(blob, name + ".json");
     },
 
     loadFromJSON: function(data){
diff --git a/main.html b/main.html
index fffec2809014c7ed09541ee463d4d54c667414b3..34886801d46f6e99612467bc0dc29b0f5c5c043a 100644
--- a/main.html
+++ b/main.html
@@ -95,9 +95,10 @@
           <a href="#" class="dropdown-toggle" data-toggle="dropdown">File <b class="caret"></b></a>
           <span class="dropdown-arrow"></span>
           <ul class="dropdown-menu">
+            <li><a id="saveJSON" href="#">Save Lattice JSON</a></li>
+            <li><a data-toggle="modal" data-target="#saveAsModel" href="#">Save As...</a></li>
             <li><a id="importJSON" href="#">Import Lattice JSON</a></li>
-            <li><a id="saveAsJSON" href="#">Save Lattice JSON</a></li>
-            <li><a href="#">Something else here</a></li>
+            <li><a id="exportSTL" href="#">Export STL</a></li>
             <li class="divider"></li>
             <li><a href="#">Separated link</a></li>
           </ul>
@@ -113,6 +114,24 @@
 
 </nav>
 
+<div class="modal fade" id="saveAsModel" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
+    <div class="modal-dialog modal-sm">
+        <div class="modal-content">
+            <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <p class="modal-title" id="myModalLabel">Enter File Name</p>
+            </div>
+            <div class="modal-body">
+                <input id="saveAsFileName" type="text" value="lattice" placeholder="Enter file name" class="form-control">
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+                <button type="button" id="saveAsJSON" class="btn btn-primary">Save</button>
+            </div>
+        </div>
+    </div>
+</div>
+
 <div id="menuWrapper"><div id="menuHeader"></div><div id="menuContent"></div></div>
 
 <div id="about" class="row navMenu">