diff --git a/dev/js/src/match/treemenu.js b/dev/js/src/match/treemenu.js
index 6a39720..1a12774 100644
--- a/dev/js/src/match/treemenu.js
+++ b/dev/js/src/match/treemenu.js
@@ -48,10 +48,44 @@
 
     // Attach menu to
     attachTo : function (e) {
+
+      // this._attached = e;
+      this._repos(e);
+      this.slider().reInit();
+
+      /*
+       * This is a suboptimal scrolling solution, see
+       * see https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects
+       */
+      if (this._onscroll !== undefined) {
+        window.removeEventListener('scroll', this._onscroll);
+      };
+
+      this._onscroll = function () {
+        this._repos(e);
+      }.bind(this);
+      
+      window.addEventListener('scroll', this._onscroll);
+    },
+
+
+    // Overwrite onHide method
+    onHide : function () {
+
+      // Remove listener
+      if (this._onscroll !== undefined) {
+        window.removeEventListener('scroll', this._onscroll);
+      };
+    },
+
+    _repos : function (e) {
       var bounding = e.getBoundingClientRect();
       this._element.style.left = bounding.left + "px";
-      this._element.style.top = (bounding.top + bounding.height - this._element.clientHeight) + "px";
-      this.slider().reInit();
+      this._element.style.top = (
+        bounding.top +
+          bounding.height -
+          this._element.clientHeight
+      ) + "px";
     }
   };
 });
diff --git a/dev/scss/main/matchinfo.scss b/dev/scss/main/matchinfo.scss
index d1ccbf5..3abe319 100644
--- a/dev/scss/main/matchinfo.scss
+++ b/dev/scss/main/matchinfo.scss
@@ -38,48 +38,6 @@
   height: auto;
   font-size: 10pt;
   text-align: left;
-
-  // TODO: This may not be necessary anymore
-  // REMOVE!
-  /*
-  > p.addtree {
-    position: relative;
-    @include choose-item;
-    border: {
-      width: $border-size;
-      style: solid;
-      radius: $standard-border-radius;
-    }
-
-    font-size: inherit;
-    width: $left-width;
-    margin: $border-size $border-size 0 $border-size !important;
-    text-align: center;
-    cursor: pointer;
-    padding: 0 !important;
-
-    &:hover {
-      cursor:pointer;
-      @include choose-hover;
-    }
- */
-  /*
-    *.menu {
-      border-top-right-radius: 8px;
-      position: absolute;
-      width: $left-width;
-      left: 0;
-      bottom: 0;
-      text-align: left;
-      margin: -1* $border-size;
-      margin-top: 0;
-      > li:first-of-type {
-	      border-top-right-radius: 5px;
-      }
-    }
-}
-*/
-
   p.queryfragment {
     position:relative;
     @include choose-item;
@@ -192,26 +150,6 @@
     > tr:nth-of-type(1) > th {
       border-top-color: transparent;
     }
-    /**
-     * Click on a row and it's highlighted.
-     */
-          /*
-	outline:  (2 * $border-size) solid $light-green;
-	-moz-outline-radius: $border-size;
-	outline-radius: $border-size;
-	*/
-    /*
-    > tr:focus {
-      outline: none;
-      background-color: $light-green;
-      border-color: $light-green;
-      td {
-        background-color: inherit;
-        color: $nearly-white;
-        border-color: $light-green;
-      }
-    }
-   */
   }
   tr {
     /**
@@ -240,25 +178,11 @@
     white-space: nowrap;
     vertical-align: top;
     text-align: center;
-    /*
-    div {
-      background-color: $light-orange; // $nearly-white;
-    }
-   */
+
   }
   tr:nth-child(even) > td {
     background-color: $light-orange;
-    /*
-    div:nth-child(even) {
-      background-color: $middle-orange;
-    }
-*/
   }
-  /*
-  tr:nth-child(odd) > td > div:nth-child(odd) {
-    background-color: $middle-orange;
-  }
-  */
 
   // table for key-value pairs
   td.matchkeyvalues {
@@ -286,7 +210,7 @@
  * Label
  */
 // The metatable branch was experimental
-div.matchtree { //, div.metatable {
+div.matchtree {
   h6 {
     display: inline;
     font-size: inherit;
@@ -303,13 +227,6 @@
 	      margin-left: $border-size;
       }
     }
-    /*
-    > div {
-
-      // Override half width !
-      width: $left-width;
-    }
-   */
   }
 }
 
@@ -331,7 +248,7 @@
     margin-left: $left-distance;
     margin-right: $right-match-distance;
 
-    background-color: $light-orange; // $nearly-white; // $light-orange;
+    background-color: $light-orange;
   }
 }
 
@@ -343,7 +260,6 @@
   z-index: 20;
   margin: 0;
   padding: 0;
-  // margin-right: -1 * $right-match-distance;
   width: $right-match-distance;
   li {
     cursor: pointer;
@@ -384,7 +300,6 @@
   align-items: stretch;
   width: auto;
   padding-bottom: 0;
-  // margin-left: $left-distance;
   margin-right: $right-match-distance;
   margin-top: $border-size;
 
