diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index d05257e..d1d0049 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -5,6 +5,8 @@
 
 our $VERSION;
 
+# TODO: The FAQ-Page has a contact form for new questions
+
 # Start the application and register all routes and plugins
 sub startup {
   my $self = shift;
@@ -31,9 +33,9 @@
     'Search',                 # Abstract Search framework
     'CHI',                    # Global caching mechanism
     'TagHelpers::Pagination', # Pagination widget
-    'DocNavi',                # Navigation for documentation
-    'KalamarHelpers',         # Specific Helpers for Kalamar
-    'KalamarTagHelpers'       # Specific Taghelpers for Kalamar
+    'Number::Commify',        # Localize numbers
+    'KalamarHelpers'          # Specific Helpers for Kalamar
+
   ) {
     $self->plugin($_);
   };
@@ -42,8 +44,8 @@
   $self->plugin('MailException' => $self->config('MailException'));
 
   # Configure documentation navigation
-  my $navi = b($self->home . '/templates/doc/_nav.json')->slurp;
-  $self->config(navi => decode_json($navi));
+  my $navi = b($self->home . '/templates/doc/navigation.json')->slurp;
+  $self->config(navi => decode_json($navi)) if $navi;
 
   # Establish routes
   my $r = $self->routes;
@@ -52,109 +54,16 @@
   $r->get('/')->to('search#query')->name('index');
 
   # Documentation
-  $r->get('/doc')->to('documentation#page', page => 'korap');
+  $r->get('/doc')->to('documentation#page', page => 'korap')->name('doc_start');
   $r->get('/doc/:page')->to('documentation#page', scope => undef);
   $r->get('/doc/*scope/:page')->to('documentation#page')->name('doc');
-};
 
-
-1;
-
-
-__END__
-
-
-  # Set default totle
-#  $self->defaults(
-#    layout => 'main',
-#    title => 'KorAP - Corpus Analysis Platform'
-#  );
-
-
-  $self->hook(
-    before_dispatch => sub {
-      my $c = shift;
-      my $host = $c->req->headers->header('X-Forwarded-Host');
-      if ($host && $host eq 'korap.ids-mannheim.de') {
-	$c->req->url->base->path('/kalamar/');
-      };
-    }) if $self->mode eq 'production';
-
-
-
-  # Load plugins
-  foreach (qw/
-	      Number::Commify
-	      /) {
-    $self->plugin($_);
-  };
-
-  # $self->plugin(AssetPack => { minify => 1 });
-  $self->plugin('AssetPack');
-  $self->plugin('AssetPack::LibSass');
-
-  # Add assets for AssetPack
-  $self->asset(
-    'kalamar.css' => (
-
-      # Sass files
-      '/sass/style.scss',
-      '/sass/sidebar.scss',
-      '/sass/tutorial.scss',
-      '/sass/hint.scss',
-      '/sass/query.scss',
-      '/sass/matchinfo.scss',
-      '/sass/pagination.scss',
-      '/sass/kwic-4.0.scss',
-      '/sass/alertify.scss',
-
-      # CSS files
-      '/css/font-awesome.min.css',
-      '/css/media.css',
-      '/css/highlight.css',
-      $self->notifications->styles
-    )
-  );
-
-  $self->asset(
-    'kalamar.js' => (
-#      '/js/d3.v3.min.js',
-#      '/js/dagre-d3.min.js',
-#      '/js/dagre-d3.js',
-#      '/js/translateTree.js',
-      '/js/tutorialCookie.js',
-      '/js/translateTable.js',
-      '/js/hint.js',
-      '/js/highlight.pack.js',
-      '/js/ajax.js',
-      $self->notifications->scripts
-    )
-  );
-
-  $self->helper(
-    date_format => sub {
-      my ($c, $date) = @_;
-      return $date;
-    }
-  );
-
-
-  # Base search route
-  $r->get('/')->to('search#query')->name('index');
-
-  # Get match information
+  # Match route
   my $corpus = $r->route('/corpus/:corpus_id');
-  my $doc    = $corpus->route('/#doc_id');
-  my $match = $doc->route('/:match_id')
-    ->to('search#match_info')
-      ->name('match');
-
-  # Tutorial data
-  $r->get('/tutorial')->to('tutorial#page', tutorial => 'index');
-  $r->get('/tutorial/(*tutorial)')->to('tutorial#page')->name('tutorial');
-
-
-  # Todo: The FAQ-Page has a contact form for new questions
+  my $doc    = $corpus->get('/:doc_id');
+  my $text   = $doc->get('/:text_id');
+  my $match  = $text->get('/:match_id');
+  $match->to('search#match_info')->name('match');
 };
 
 
