diff --git a/app/assets/javascripts/discourse/components/hamburger-menu.js.es6 b/app/assets/javascripts/discourse/components/hamburger-menu.js.es6
index 226640ca9..3c9a13fef 100644
--- a/app/assets/javascripts/discourse/components/hamburger-menu.js.es6
+++ b/app/assets/javascripts/discourse/components/hamburger-menu.js.es6
@@ -1,32 +1,23 @@
-import { default as computed, on } from 'ember-addons/ember-computed-decorators';
+import { default as computed, on, observes } from 'ember-addons/ember-computed-decorators';
+
 
 export default Ember.Component.extend({
   classNameBindings: ['visible::slideright'],
   elementId: 'hamburger-menu',
 
-  visibilityChanged: function(){
-    if(this.get("visible")) {
-     $('html').on('click.close-humburger', (e) => {
-
-        if (this.get('isDestroyed')) {
-          $('html').off('click.close-humburger');
-          return true;
-        }
-
+  @observes('visible')
+  _catchClickOutside() {
+    if (this.get('visible')) {
+      $('html').on('click.close-hamburger', (e) => {
         const $target = $(e.target);
-        if ($target.closest('.dropdown.categories').length > 0) {
-          return;
-        }
-
-        this.set("visible", false);
-        $('html').off('click.close-humburger');
-        return true;
-
+        if ($target.closest('.dropdown.hamburger').length > 0) { return; }
+        if ($target.closest('#hamburger-menu').length > 0) { return; }
+        this.set('visible', false);
       });
     } else {
-      $('html').off('click.close-humburger');
+      $('html').off('click.close-hamburger');
     }
-  }.observes("visible"),
+  },
 
   @computed()
   showKeyboardShortcuts() {
@@ -59,13 +50,14 @@ export default Ember.Component.extend({
         this.set('visible', false);
       }
     });
+
   },
 
   @on('willDestroyElement')
   _removeEvents() {
     this.$().off('click.discourse-hamburger');
     $('body').off('keydown.discourse-hambuger');
-    $('body').off('click.close-humburger');
+    $('html').off('click.close-hamburger');
   },
 
   @computed()
diff --git a/app/assets/javascripts/discourse/templates/header.hbs b/app/assets/javascripts/discourse/templates/header.hbs
index a05d8930e..6c7a40313 100644
--- a/app/assets/javascripts/discourse/templates/header.hbs
+++ b/app/assets/javascripts/discourse/templates/header.hbs
@@ -42,7 +42,7 @@
             </a>
           {{/if}}
         </li>
-        <li class='categories dropdown'>
+        <li class='hamburger categories dropdown'>
           {{#if loginRequired}}
             <a class='icon'
                href
diff --git a/test/javascripts/acceptance/hamburger-menu-test.js.es6 b/test/javascripts/acceptance/hamburger-menu-test.js.es6
index 2fad102fb..312cab6e3 100644
--- a/test/javascripts/acceptance/hamburger-menu-test.js.es6
+++ b/test/javascripts/acceptance/hamburger-menu-test.js.es6
@@ -17,6 +17,17 @@ test("Toggle Menu", (assert) => {
   andThen(() => {
     assert.ok(exists("#hamburger-menu.slideright"), "clicking the X hides it");
   });
+
+  click("#toggle-hamburger-menu");
+  andThen(() => {
+    assert.ok(!exists("#hamburger-menu.slideright"), "it opens again");
+  });
+
+  click('#main-outlet')
+  andThen(() => {
+    assert.ok(exists("#hamburger-menu.slideright"), "clicking the body hides the menu");
+  });
+
 });
 
 test("Menu Items", (assert) => {