diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index 2380db8..8d566f3 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -25,7 +25,6 @@
   'view/koralquery',
   'api',
   'mailToChiffre',
-  'lib/highlight/highlight.pack',
   'util'
 ], function (matchClass,
              hintClass,
@@ -186,16 +185,6 @@
 
     var resultInfo = d.getElementById('resultinfo');
 
-    /*
-    var resultButton;
-    if (result != null) {
-
-      // Add result button group
-      resultButton = buttonGroupClass.create(['result']);
-      result.appendChild(resultButton.element());
-    };
-    */
-
     /**
      * Add result panel
      */
@@ -206,7 +195,7 @@
       // Move buttons to resultinfo
       resultInfo.appendChild(resultPanel.actions.element());
 
-      
+      // The views are at the top of the search results
       var sb = d.getElementById('search');
       sb.insertBefore(resultPanel.element(), sb.firstChild);
 
@@ -218,46 +207,29 @@
       
       if (resultInfo !== null) {
 
-        /*
-        var kq;
+        // Open KoralQuery view
+        var kqButton = resultPanel.actions.add(loc.SHOW_KQ, ['show-kq','button-icon'], function () {
 
-        var showKQ = function () {
-          if (kq === undefined) {
-            kq = d.createElement('div');
-            kq.setAttribute('id', 'koralquery');
-            kq.style.display = 'none';
-            var kqInner = d.createElement('div');
-            kq.appendChild(kqInner);
-            kqInner.innerHTML = JSON.stringify(KorAP.koralQuery, null, '  ');
-            hljs.highlightBlock(kqInner);
-            var sb = d.getElementById('search');
-            sb.insertBefore(kq, sb.firstChild);
-          };
-
-          if (kq.style.display === 'none') {
-            kq.style.display = 'block';
-            show['kq'] = true;
-          }
-          else {
-            kq.style.display = 'none';
-            delete show['kq'];
-          };
-        };
-
-        // Add KoralQuery button
-        resultButton.add(loc.SHOW_KQ, ['show-kq','button-icon'], showKQ);
-        */
-
-        resultPanel.actions.add(loc.SHOW_KQ, ['show-kq','button-icon'], function () {
-
-          // Show only once
+          // Show only once - otherwise toggle
           if (this._kq && this._kq.shown()) {
+            this._kq.close();
             return;
           };
           
           this._kq = kqClass.create();
+
+          // On close, remove session info on KQ
+          this._kq.onClose = function () {
+            delete show['kq'];
+          };
+
+          show['kq'] = true;
           this.add(this._kq);
         });
+
+        // Show KoralQuery in case it's meant to be shown
+        if (show['kq'])
+          kqButton.click();
       };
 
       if (KorAP.koralQuery["errors"]) {
diff --git a/dev/js/src/view.js b/dev/js/src/view.js
index 4a4dc03..946cdd3 100644
--- a/dev/js/src/view.js
+++ b/dev/js/src/view.js
@@ -67,7 +67,9 @@
     shown : function () {
       return this._shown;
     },
-    
+
+    // onClose : function () {},
+
     /**
      * Close the view.
      */
@@ -76,6 +78,8 @@
       e.parentNode.removeChild(e);
       this.panel.delView(this);
       this._shown = false;
+      if (this.onClose)
+        this.onClose();
     },
 
 
diff --git a/dev/scss/main/buttongroup.scss b/dev/scss/main/buttongroup.scss
index 2f4d750..0b89b11 100644
--- a/dev/scss/main/buttongroup.scss
+++ b/dev/scss/main/buttongroup.scss
@@ -15,7 +15,7 @@
     }
   }
 
-  &.button-panel {
+  &.button-panel, &.operators {
     > span {
       box-shadow: $choose-box-shadow;
       font-size: 9pt;
