diff --git a/dev/demo/relationsdemo.js b/dev/demo/relationsdemo.js
index 7519ffe..7ad00a4 100644
--- a/dev/demo/relationsdemo.js
+++ b/dev/demo/relationsdemo.js
@@ -314,7 +314,7 @@
   }
 });
 
-require(['match/relations', 'match/tree'], function (relClass, treeClass) {
+require(['match/treearc', 'match/treehierarchy'], function (relClass, treeClass) {
   var rel = relClass.create();
 
   /*
diff --git a/dev/js/spec/matchSpec.js b/dev/js/spec/matchSpec.js
index ccf32de..80f1de8 100644
--- a/dev/js/spec/matchSpec.js
+++ b/dev/js/spec/matchSpec.js
@@ -596,7 +596,7 @@
 
 
   describe('KorAP.MatchRelation', function () {
-    var relClass = require('match/relations')
+    var relClass = require('match/treearc')
 
     var relExample = "<span class=\"context-left\"></span>" +
         "<span class=\"match\">" +
diff --git a/dev/js/src/match/info.js b/dev/js/src/match/info.js
index 43319e2..6019e40 100644
--- a/dev/js/src/match/info.js
+++ b/dev/js/src/match/info.js
@@ -4,16 +4,16 @@
 define([
   'match/infolayer',
   'match/table',
-  'match/tree',
+  'match/treehierarchy',
+  'match/treearc',
   'match/meta',
-  'match/relations',
   'match/querycreator',
   'util'
 ], function (infoLayerClass,
 	           matchTableClass,
-	           matchTreeClass,
+	           matchTreeHierarchyClass,
+             matchTreeArcClass,
 	           matchMetaClass,
-             matchRelClass,
              matchQueryCreator) {
   
   // Override 
@@ -165,10 +165,10 @@
             // Todo: This should be cached somehow
 
             if (type === "spans") {
-              cb(matchTreeClass.create(matchResponse["snippet"]));
+              cb(matchTreeHierarchyClass.create(matchResponse["snippet"]));
             }
             else if (type === "rels") {
-              cb(matchRelClass.create(matchResponse["snippet"]));              
+              cb(matchTreeArcClass.create(matchResponse["snippet"]));              
             }
 
             // Unknown tree type
@@ -281,6 +281,7 @@
     // Add meta information to match
     showMeta : function () {
       var matchmeta = d.createElement('div');
+      matchmeta.classList.add('matchmeta', 'loading');
 
       // TODO: This is part of the getMeta!
       var metaInfo = this._match.element().getAttribute('data-info');
@@ -293,25 +294,27 @@
 
         // Add metainfo to matchview
         var metaElem = matchMetaClass.create(this._match).element(metaInfo);
-        var elem = this.element();
-
+        this.element().appendChild(metaElem);
+        /*
         elem.insertBefore(
           metaElem,
           elem.firstChild
         );
+        */
       };
+
+      // Load data
+      matchmeta.classList.remove('loading');
     },
 
 
     // Add table
     showTable : function () {
 
-      var info = this.element();
-
       // Append default table
       var matchtable = d.createElement('div');
       matchtable.classList.add('matchtable', 'loading');
-      info.appendChild(matchtable);
+      this.element().appendChild(matchtable);
 
       // Create the table asynchronous
       this.getTableData(undefined, function (table) {
@@ -328,7 +331,6 @@
       });
     },
 
-
     /**
      * Create match information view.
      */
diff --git a/dev/js/src/match/meta.js b/dev/js/src/match/meta.js
index 33d5461..02da3dc 100644
--- a/dev/js/src/match/meta.js
+++ b/dev/js/src/match/meta.js
@@ -102,7 +102,30 @@
         };
       };
 
+      this.addButton('close', function (e) {
+        var el = this.element();
+        el.parentNode.removeChild(el);
+        e.halt();
+      });
+      
       return this._element;
-    }
+    },
+
+    // TODO: This should be a method by all matchinfo objects
+    addButton : function (buttonType, cb) {
+      // TODO: Unless existent
+      var actions = document.createElement('ul');
+      actions.classList.add('action', 'image');
+      var button = actions.addE('li');
+      button.className = buttonType;
+      button.addE('span').addT(buttonType);
+      button.addEventListener(
+        'click', cb.bind(this)
+      );
+
+      this.element().appendChild(actions);
+      return actions;
+    },
+
   };
 });
diff --git a/dev/js/src/match/relations.js b/dev/js/src/match/treearc.js
similarity index 100%
rename from dev/js/src/match/relations.js
rename to dev/js/src/match/treearc.js
diff --git a/dev/js/src/match/tree.js b/dev/js/src/match/treehierarchy.js
similarity index 100%
rename from dev/js/src/match/tree.js
rename to dev/js/src/match/treehierarchy.js
diff --git a/dev/scss/main/matchinfo.scss b/dev/scss/main/matchinfo.scss
index c4acbd4..3709b59 100644
--- a/dev/scss/main/matchinfo.scss
+++ b/dev/scss/main/matchinfo.scss
@@ -278,6 +278,10 @@
 }
 
 
+div.metatable {
+  position: relative;
+}
+
 /**
  * Label
  */
@@ -328,48 +332,50 @@
     margin-right: $right-match-distance;
 
     background-color: $light-orange; // $nearly-white; // $light-orange;
-    > ul.action.image {
-      display: block;
-      position: absolute;
-      right: 0;
-      top: 0;
-      z-index: 20;
-      margin: 0;
-      padding: 0;
-      // margin-right: -1 * $right-match-distance;
-      width: $right-match-distance;
-      li {
-        cursor: pointer;
-        color: $nearly-white;
-        text-decoration: none;
-        > span {
-          @include blind;
-        }
-        border-width: 0;
-        // z-index: 8;
-        text-decoration:none;
-        text-align: center;
-        font-style: normal;
+  }
+}
 
-        &.download::after {
-	        font-family: 'FontAwesome';
-	        content: $fa-download;
-        }
-
-        &.close::after {
-	        font-family: 'FontAwesome';
-	        content: $fa-close;
-        }
-      }
+div.matchinfo ul.action.image {
+  display: block;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 20;
+  margin: 0;
+  padding: 0;
+  // margin-right: -1 * $right-match-distance;
+  width: $right-match-distance;
+  li {
+    cursor: pointer;
+    color: $nearly-white;
+    text-decoration: none;
+    > span {
+      @include blind;
+    }
+    border-width: 0;
+    // z-index: 8;
+    text-decoration:none;
+    text-align: center;
+    font-style: normal;
+    
+    &.download::after {
+	    font-family: 'FontAwesome';
+	    content: $fa-download;
+    }
+    
+    &.close::after {
+	    font-family: 'FontAwesome';
+	    content: $fa-close;
     }
   }
 }
 
-div.metatable + div.matchtable {
+
+div.metatable + div.matchtable,
+div.metatable + div.matchtree {
   margin-top: 4 * $border-size !important;
 }
 
-
 div.metatable > dl {
   display: flex;
   flex-direction: row;
