diff --git a/public/Gruntfile.js b/public/Gruntfile.js
new file mode 100644
index 0000000..f625e2d
--- /dev/null
+++ b/public/Gruntfile.js
@@ -0,0 +1,87 @@
+/**
+ */
+/*
+ * http://gruntjs.com/getting-started
+ *
+ * TODO: Use https://www.npmjs.com/package/grunt-contrib-compress
+ * for assets.
+ * http://yui.github.io/yuidoc/
+ * use it with https://www.npmjs.com/package/grunt-contrib-yuidoc
+ *
+ * RequireJS
+ * http://addyosmani.com/writing-modular-js/
+ * http://qnundrum.com/question/393866
+ */
+
+module.exports = function(grunt) {
+  grunt.initConfig({
+    pkg: grunt.file.readJSON('package.json'),
+    concat: {
+      dist: {
+	src : [
+	  'js/lib/dagre/dagre.min.js',
+	  'js/src/menu.js',
+	  'js/src/matchInfo.js',
+	  'js/src/hint.js',
+	  'js/src/vc.js'
+	],
+	dest: 'js/build/kalamar.js'
+      }
+    },
+    uglify : {
+      build : {
+	src: 'js/build/kalamar.js',
+	dest: 'js/build/kalamar.min.js'
+      }
+    },
+    imagemin: {
+      dynamic: {
+	files: [{
+	  expand: true,
+	  cwd: 'img/',
+	  src: ['**/*.{png,gif,jpg,svg}'],
+	  dest: 'img/build/'
+	}]
+      }
+    },
+    sass: {
+      dist: {
+        options: {
+          style: 'compressed'
+        },
+        files: {
+          'css/build/kalamar.css': 'scss/kalamar.scss'
+        }
+      }
+    },
+    watch: {
+/*
+      options: {
+	livereload: true
+      },
+      scripts: {
+        files: ['js/*.js'],
+        tasks: ['concat', 'uglify'],
+        options: {
+          spawn: false
+        },
+      },
+*/
+      css: {
+	files: ['scss/{colors,base,matchinfo,menu,pagination,kalamar}.scss'],
+	tasks: ['sass'],
+	options: {
+	  spawn: false
+	}
+      }
+    }    
+  });
+
+  grunt.loadNpmTasks('grunt-contrib-concat');
+  grunt.loadNpmTasks('grunt-contrib-uglify');
+  grunt.loadNpmTasks('grunt-contrib-imagemin');
+  grunt.loadNpmTasks('grunt-contrib-watch');
+  grunt.loadNpmTasks('grunt-contrib-sass');
+  grunt.registerTask('css', ['sass']);
+  grunt.registerTask('default', ['concat', 'uglify', 'imagemin', 'sass']);
+};
diff --git a/public/css/menu.css b/public/css/menu.css
index 1ab5162..0417fd1 100644
--- a/public/css/menu.css
+++ b/public/css/menu.css
@@ -1,29 +1,5 @@
 /* List view */
 
-ul.menu {
-  position: absolute;
-  text-indent: 0;
-  list-style-type: none;
-  list-style-position: outside;
-  padding-left: 0;
-  padding-bottom: 3px;
-  background-color: #ddd; /* $pagination-bg */
-}
-
-ul.menu,
-ul.menu > span.pref:not(:empty) {
-  text-shadow: none;
-/*
-  background-color: #7ba400;
-*/
-  font-weight: normal;
-  border: 2px solid #688704; /* $middle-green */
-  box-shadow: 2px 2px 2px rgba(0,0,0,0.2); /* $pagination-box-shadow */
-  z-index: 16;
-  border-bottom-right-radius: 6px;
-  border-bottom-left-radius: 6px;
-}
-
 /*
   .hint {
     max-width: 23em;
@@ -34,54 +10,6 @@
   }
 */
 
-ul.menu > li,
-ul.menu > span.pref:not(:empty) {
-  cursor: pointer;
-  padding: 3px 8pt;
-  white-space: normal;
-}
-
-ul.menu > li,
-ul.menu > span.pref:not(.active) {
-  background-color: #ddd; /* $pagination-bg */
-  color: #7ba400; /* $light-green */
-}
-
-ul.menu > li:first-of-type {
-  border-top: 3px solid transparent;
-}
-
-ul.menu > li:last-of-type {
-  border-bottom: 3px solid transparent;
-}
-
-ul.menu > li:first-of-type:not(.no-more) {
-  border-top-color: #ffa500; /* $dark-orange */
-}
-
-ul.menu > li:last-of-type:not(.no-more) {
-  border-bottom-color: #ffa500; /* $dark-orange */
-}
-
-ul.menu > li mark {
-  text-decoration: underline;
-  background-color: transparent;
-  color: inherit;
-  font-weight: bold; /* #496000; */
-}
-
-ul.menu > span.pref:not(:empty) {
-  position: absolute;
-  min-width: 2px;
-  border-bottom-right-radius: 10px;
-  left: 0;
-  bottom: 0;
-  display: block;
-  margin-bottom: -2.1em;
-  padding: .1em .3em;
-  margin-left: -2px;
-  border-radius: 6px;
-}
 
 /*
   border: 2px solid white;
@@ -95,17 +23,6 @@
     border-bottom: 5px solid transparent;
   }
 */
-ul.menu > *.active {
-  background-color: #7ba400; /* $light-green; */
-  color: #496000; /* $dark-green; */
-}
 
-ul.menu > li:hover,
-ul.menu > span.pref:hover {
-/*
-  background-color: rgba(255,255,255,.25);
-  color: #496000;
-*/
-  background-color: #ffa500; /* $dark-orange; */
-  color: white;
-}
+
+
diff --git a/public/js/demo/matchInfo.html b/public/js/demo/matchInfo.html
index 11ba7eb..c79642b 100644
--- a/public/js/demo/matchInfo.html
+++ b/public/js/demo/matchInfo.html
@@ -7,8 +7,7 @@
     <script src="../src/menu.js"></script>
     <script src="../src/matchInfo.js"></script>
     <link type="text/css" rel="stylesheet" href="../../css/font-awesome.min.css"></link>
-    <link type="text/css" rel="stylesheet" href="../../css/matchinfo.css"></link>
-    <link type="text/css" rel="stylesheet" href="../../css/menu.css"></link>
+    <link type="text/css" rel="stylesheet" href="../../css/build/kalamar.css"></link>
     <style type="text/css" rel="stylesheet">
 
 body {
@@ -161,8 +160,12 @@
   }
 };
 
-var e = KorAP.MatchInfo.create(match, available).element();
-document.getElementsByTagName('body')[0].appendChild(e);
+var e = KorAP.MatchInfo.create(match, available);
+
+document.getElementsByTagName('body')[0].appendChild(e.element());
+
+
+e.addTree('cnx', 'c');
 
 /*
 var t = KorAP.MatchInfo.create(match, available).getTable();
diff --git a/public/package.json b/public/package.json
new file mode 100755
index 0000000..a632a94
--- /dev/null
+++ b/public/package.json
@@ -0,0 +1,12 @@
+{
+  "name": "kalamar-static",
+  "version": "0.1.0",
+  "devDependencies": {
+    "grunt": "~0.4.1",
+    "grunt-contrib-concat": "^0.5.1",
+    "grunt-contrib-imagemin": "^0.9.4",
+    "grunt-contrib-sass": "^0.9.2",
+    "grunt-contrib-uglify": "^0.8.0",
+    "grunt-contrib-watch": "^0.6.1"
+  }
+}
diff --git a/public/scss/base.scss b/public/scss/base.scss
new file mode 100644
index 0000000..8337b78
--- /dev/null
+++ b/public/scss/base.scss
@@ -0,0 +1,8 @@
+@charset "utf-8";
+@import "colors";
+
+body, html, select {
+  color: $dark-grey;
+  font-family: verdana, tahoma, arial;
+  margin: 0;
+}
diff --git a/public/scss/colors.scss b/public/scss/colors.scss
new file mode 100644
index 0000000..40082e1
--- /dev/null
+++ b/public/scss/colors.scss
@@ -0,0 +1,61 @@
+/*
+ * Orange
+ */
+// $light-orange-2: #f4eebb;
+$light-orange:   #ffe56a;
+// #ffd080;
+$dark-orange:    #ffa500;
+$darker-orange:  #ff8000;
+$darkest-orange: darken($dark-orange, 20%);
+
+// Yellow: #fff48d
+
+/*
+ * Blue
+ */
+$light-blue:     #cfe6f4;
+$dark-blue:      #73b2f4;
+$darkest-blue:   darken($dark-blue, 40%);
+
+/*
+ * Green
+ */
+$dark-green:    #496000;
+$middle-green:  #688704;
+$light-green:   #7ba400;
+
+/*
+ * Grey
+ */
+$light-grey:   #ddd;
+$middle-grey:  #999;
+$dark-grey:    #333;
+// $nearly-white: #f5f5f5;
+$nearly-white: #fff;
+
+$light-shadow: 3px 3px 3px rgba(0,0,0,0.3);
+
+/**
+ * KWIC colors
+ */
+$kwic-border:       $middle-grey;
+$kwic-line-noneven: $nearly-white;
+$kwic-line-even:    $light-grey;
+$kwic-match-color:  $dark-grey;
+$kwic-match-shadow: $light-shadow;
+
+$kwic-highlight-1:  #c1002b;
+$kwic-highlight-2:  $dark-blue;   // #009ee0;
+$kwic-highlight-3:  $dark-orange; // #f29400;
+$kwic-highlight-4:  $light-green;
+
+$pagination-bg:     $light-grey;
+$pagination-border: $middle-grey;
+$pagination-box-shadow: 2px 2px 2px rgba(0,0,0,0.2);
+
+$standard-border-radius: 6px;
+
+@mixin standard-text-padding {
+  padding-left: .4em;
+  padding-right: .4em;
+}
\ No newline at end of file
diff --git a/public/scss/kalamar.scss b/public/scss/kalamar.scss
new file mode 100644
index 0000000..7526d92
--- /dev/null
+++ b/public/scss/kalamar.scss
@@ -0,0 +1,8 @@
+@charset "utf-8";
+
+@import "colors";    // Color varia
+
+@import "base";       // Base values
+@import "menu";       // Menu list
+@import "matchinfo";  // Match table and tree
+@import "pagination"; // Pagination
diff --git a/public/scss/matchinfo.scss b/public/scss/matchinfo.scss
new file mode 100644
index 0000000..0ddea47
--- /dev/null
+++ b/public/scss/matchinfo.scss
@@ -0,0 +1,221 @@
+@charset "utf-8";
+@import "colors";
+
+$left-width: 176px;
+$border-size: 2px;
+$left-distance: $left-width + ($border-size * 2);
+
+/**
+ * Table view
+ *
+ * The table view is complicated, as the
+ * first column has to be static.
+ */
+@mixin matchinfo-head {
+  border-width: 0px;
+  border-top: $border-size solid #ff8000;
+  width: $left-width / 2;
+}
+
+div.matchinfo {
+  position: relative;
+  width: 100%;
+  height: auto;
+  font-size: 10pt;
+  > p {
+    position: relative;
+    background-color: $darker-orange;
+    box-sizing: border-box;
+    color: $nearly-white;
+    font-size: inherit;
+    margin: $border-size 0 0 0 !important;
+    font-weight: bold;
+    width: $left-width;
+    text-align: left !important;
+    cursor: pointer;
+    padding-left: $border-size * 2 !important;
+    *.menu {
+      border-top-right-radius: 8px;
+      position: absolute;
+      top: 0;
+      left: $left-distance;
+      margin-top: 0;
+      > li:first-of-type {
+	border-top-right-radius: 5px;
+      }
+    }
+    &:before {
+      content: '+ '; // FontAwesome
+    }
+  }
+}
+
+div.matchtable {
+  z-index: 20;
+  margin-left: $left-distance - ($border-size / 2);
+  padding: 0;
+  overflow-x: auto;
+  overflow-y: visible;
+  width: auto;
+  table {
+    display: table;
+    border-collapse: separate;
+    border-spacing: 0px;
+  }
+  th {
+    color: $nearly-white;
+  }
+  thead {
+    tr th {
+      background-color: $darker-orange;
+      border-top-width: 0px !important;
+    }
+  }
+  tbody {
+    th {
+      text-overflow: ellipsis;
+    }
+    > tr:nth-of-type(1) > th {
+      border-top-color: transparent;
+    }
+    /**
+     * Click on a row and it's highlighted.
+     */
+    > tr:focus {
+      outline: none;
+      /*
+	outline:  (2 * $border-size) solid $light-green;
+	-moz-outline-radius: $border-size;
+	outline-radius: $border-size;
+	*/
+      background-color: $light-green;
+      border-color: $light-green;
+      td {
+        background-color: inherit;
+        color: $nearly-white;
+        border-color: $light-green;
+      }
+    }
+  }
+  tr {
+    /**
+     * The first two columns.
+     */
+    > th:nth-of-type(1),
+    > th:nth-of-type(2) {
+      position: absolute;
+      z-index: 80;
+      vertical-align: middle;
+      left: 0px;
+      @include matchinfo-head;
+    }
+    > th:nth-of-type(2) {
+      left: ($left-width / 2) + $border-size;
+    }
+    > * {
+      box-sizing: border-box;
+      padding: 1px 6px;
+      margin: 0px;
+      border: ($border-size / 2) solid $dark-orange;
+    }
+  }
+  tr > td {
+    background-color: $nearly-white;
+    white-space: nowrap;
+    vertical-align: top;
+    text-align: center;
+  }
+  tr:nth-child(even) > td {
+    background-color: $light-orange;
+  }
+}
+
+/**
+  * Tree view
+  */
+div.matchtree {
+  position: relative;
+  overflow-x: hidden;
+  overflow-y: visible;
+  padding: 0;
+  margin-top: 1pt;
+
+  /**
+   * Label
+   */
+  h6 {
+    display: inline;
+    font-size: inherit;
+    color: $nearly-white;
+    text-align: center;
+    margin: 0;
+    padding: 0 !important;
+    float: left;
+    > span {
+      @include matchinfo-head;
+      display: inline-block;
+      margin: 0;
+      &:nth-of-type(2) {
+	margin-left: $border-size;
+      }
+    }
+  }
+  > div {
+    overflow-x: auto;
+    margin: $border-size;
+    box-sizing: border-box;
+    margin-left: $left-distance;
+    background-color: $nearly-white; // $light-orange;
+    > em {
+      background-color: $dark-orange;
+      display: block;
+      width: 1.5em;
+      height: 1.5em;
+      line-height: 1.2em;
+      position: absolute;
+      right: 10px;
+      top: 10px;
+      border-radius: 5px;
+      border: $border-size solid $darker-orange;
+      cursor: pointer;
+      text-align: center;
+      color: $nearly-white;
+      font-weight: bold;
+      font-style: normal;
+      &:after {
+	// FontAwesome
+	content: 'x';
+      }
+    }
+  }
+}
+
+/**
+ * SVG tree
+ */
+
+path.edge {
+  stroke: $darker-orange;
+  stroke-width: 2px;
+  fill: none;
+}
+
+g.middle > rect {
+  stroke: $darker-orange;
+  stroke-width: 2px;
+  fill: $light-orange; // $nearly-white;
+}
+
+g.leaf > rect {
+  display: none;
+}
+
+g > text {
+  text-anchor: middle;
+  font-size: 9pt;
+}
+
+g.leaf > text {
+  font-size: 10pt;
+  overflow: visible;
+}
diff --git a/public/scss/menu.scss b/public/scss/menu.scss
new file mode 100644
index 0000000..43fab57
--- /dev/null
+++ b/public/scss/menu.scss
@@ -0,0 +1,97 @@
+@charset "utf-8";
+@import "colors";
+
+
+/**
+ * Menu list - used nearly everywhere
+ */
+ul.menu {
+  position: absolute;
+  margin: 0;
+  text-indent: 0;
+  list-style-type: none;
+  list-style-position: outside;
+  padding-left: 0;
+  padding-bottom: 3px;
+  background-color: $pagination-bg;
+}
+
+ul.menu,
+ul.menu > span.pref:not(:empty) {
+  box-sizing: border-box;
+  text-shadow: none;
+  font-weight: normal;
+  // Pagination border?
+  border: 2px solid $middle-green;
+  box-shadow: $pagination-box-shadow;
+  z-index: 16;
+  border-radius: $standard-border-radius;
+}
+
+ul.menu > li,
+ul.menu > span.pref:not(:empty) {
+  cursor: pointer;
+  padding: 3px 10px;
+  white-space: normal;
+}
+
+ul.menu > li,
+ul.menu > span.pref:not(.active) {
+  background-color: $pagination-bg;
+  color: $light-green
+}
+
+/**
+ * List items
+ */
+ul.menu {
+  > li {
+    &:first-of-type {
+      border-top: 3px solid transparent;
+      &:not(.no-more) {
+	border-top-color: $dark-orange;
+      }
+    }
+    &:last-of-type {
+      border-bottom: 3px solid transparent;
+      &:not(.no-more) {
+	border-bottom-color: $dark-orange;
+      }
+    }
+    mark {
+      text-decoration: underline;
+      background-color: transparent;
+      color: inherit;
+      font-weight: bold;
+    }
+  }
+  > *.active {
+    background-color: $light-green;
+    color: $dark-green;
+  }
+  > li:hover,
+  > span.pref:hover {
+    background-color: $dark-orange;
+    color: $nearly-white;
+  }
+}
+
+
+/**
+ * Default prefix view
+ */
+ul.menu > span.pref:not(:empty) {
+  position: absolute;
+  min-width: 5px;
+/*
+  border-bottom-right-radius: 10px;
+*/
+  font-size: 80%;
+  left: 0;
+  bottom: 0;
+  display: block;
+  margin-bottom: -2.1em;
+  padding: 2px 6px;
+  margin-left: -2px;
+  border-radius: $standard-border-radius;
+}
diff --git a/public/scss/pagination.scss b/public/scss/pagination.scss
new file mode 100644
index 0000000..c0cfdd1
--- /dev/null
+++ b/public/scss/pagination.scss
@@ -0,0 +1,85 @@
+@charset "utf-8";
+@import "colors";
+
+/**
+ * The pagination view
+ */
+/*
+<div id="pagination">
+  <a rel="prev"><span><i class="fa fa-caret-left"></i></span></a>
+  <a rel="self"><span>1</span></a>
+  <a href="/?ql=poliqarp&amp;q=test&amp;action=ok&amp;p=2"><span>2</span></a>
+  <a href="/?ql=poliqarp&amp;q=test&amp;action=ok&amp;p=3"><span>3</span></a>
+  <span><i class="fa fa-ellipsis-h"></i></span>
+  <a href="/?ql=poliqarp&amp;q=test&amp;action=ok&amp;p=67"><span>67</span></a>
+  <a rel="next" href="/?ql=poliqarp&amp;q=test&amp;action=ok&amp;p=2"><span><i class="fa fa-caret-right"></i></span></a>
+</div>
+*/
+#pagination {
+  /**
+   * Always in fixed position.
+   * This may need to be overwritten in case multiple
+   * paginations have to be activated.
+   */
+  position: fixed;
+  right: 20px;
+
+  bottom: 10px;
+  z-index: 400;
+
+  span {
+    display: inline-block;
+    background-color: $pagination-bg;
+    height: 1.5em;
+    line-height: 1.5em;
+    @include standard-text-padding;
+    text-align: center;
+    border: {
+      top-width: 2px;
+      top-style: solid;
+      bottom-width:  2px;
+      bottom-style: solid;
+      color: $pagination-border;
+    }
+    box-shadow: $pagination-box-shadow;
+  }
+  a {
+    text-shadow: $light-shadow;
+    &[rel=self] span {
+      border: {
+	color: $dark-orange;
+	left-style: solid;
+	right-style: solid;
+	left-width: 2px;
+	right-width: 2px;
+      }
+      background-color: $light-orange;
+      color: $darkest-orange;
+    }
+    &[rel=next] span {
+      border: {
+	right-width: 2px;
+	right-style: solid;
+	top-right-radius: 12px;
+	bottom-right-radius: 12px;
+      }
+    }
+    &[rel=prev] span {
+      border: {
+	left-width: 2px;
+	left-style: solid;
+	top-left-radius: 12px;
+	bottom-left-radius: 12px;
+      }      
+    }
+    &[href] {
+      color: $light-green;
+      span:hover {
+        background-color: $light-green;
+        border-color: $dark-green;
+        color: $dark-green;
+        text-shadow: none;
+      }
+    }
+  }
+}
