diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js
index 378ee3ad0ebfcd176a7c05496be63132714bb622..7d539359682b39f4f33c43e5d88a409553088a77 100644
--- a/js/menus/MenuWrapperView.js
+++ b/js/menus/MenuWrapperView.js
@@ -13,7 +13,7 @@ MenuWrapper = Backbone.View.extend({
 
     initialize: function(options){
 
-        _.bindAll(this, "render", "_updateCurrentTab", "_setVisibility");
+        _.bindAll(this, "render", "_updateCurrentTab", "_setVisibility", "_hide", "_show");
 
         //init all tab view controllers
         this.latticeMenu = new LatticeMenuView({model:options.lattice});
@@ -84,7 +84,7 @@ MenuWrapper = Backbone.View.extend({
         var self = this;
         this._hide(function(){
             self._populateAndShow();
-        });
+        }, true);
     },
 
     _populateAndShow: function(){
@@ -104,12 +104,14 @@ MenuWrapper = Backbone.View.extend({
         }
     },
 
-    _hide: function(callback){
+    _hide: function(callback, suppressModelUpdate){
         this.$el.parent().animate({right: "-400"}, {done: callback});
+        if (!suppressModelUpdate) this.model.set("menuIsVisible", false);
     },
 
     _show: function(){
         this.$el.parent().animate({right: "0"});
+        this.model.set("menuIsVisible", true);
     },
 
     template: _.template('\
diff --git a/js/menus/navbar.js b/js/menus/navbar.js
index c18df0febe8438308632641f0a3608113230a4f4..a18cd392fc37d7ed2fd541e2e9e6f0fdc56ebc2e 100644
--- a/js/menus/navbar.js
+++ b/js/menus/navbar.js
@@ -20,21 +20,26 @@ NavBar = Backbone.View.extend({
 
         _.bindAll(this, "_setMenuVis");
 
-        this._uiStuff();
+        this.listenTo(this.model, "change:menuIsVisible", this._updateShowHideButton);
 
+        this._uiStuff();
     },
 
     _setMenuVis: function(e){
         e.preventDefault();
-        var $button = $(e.target);
+        var state = this.model.get("menuIsVisible");
+        this.model.set("menuIsVisible", !state);
+        $(e.target).blur();
+    },
+
+    _updateShowHideButton: function(){
+        var $button = $("#showHideMenu");
         var state = this.model.get("menuIsVisible");
         if(state){
-            $button.html("<< Show Menu");
-        } else {
             $button.html("Hide Menu >>");
+        } else {
+            $button.html("<< Show Menu");
         }
-        this.model.set("menuIsVisible", !state);
-        $button.blur();
     },
 
     _setNavSelection: function(e){