diff --git a/Makefile.PL b/Makefile.PL
index 6517dce..6063e24 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -16,6 +16,7 @@
   PREREQ_PM => {
     'Mojolicious' => '5.00',
     'Mojolicious::Plugin::TagHelpers::Pagination' => 0.05,
+    'Mojolicious::Plugin::TagHelpers::MailToChiffre' => 0.09,
     'Mojolicious::Plugin::Notifications' => 0.04,
     'Mojolicious::Plugin::MailException' => 0.18,
     'Mojolicious::Plugin::CHI' => 0.09,
diff --git a/dev/js/src/init.js b/dev/js/src/init.js
index f952acf..bf7c206 100644
--- a/dev/js/src/init.js
+++ b/dev/js/src/init.js
@@ -135,6 +135,9 @@
     if (obj.tutorial)
       obj.tutorial.initQueries(document);
 
+    // Initialize documentation links
+    obj.tutorial.initDocLinks(document);
+
     /**
      * Init hint helper
      * has to be final because of
diff --git a/dev/js/src/tutorial.js b/dev/js/src/tutorial.js
index a028b8e..55c2415 100644
--- a/dev/js/src/tutorial.js
+++ b/dev/js/src/tutorial.js
@@ -78,7 +78,6 @@
       this.hide();
     },
 
-
     /**
      * Decorate a page with query event handler.
      */
@@ -92,6 +91,20 @@
       };
     },
 
+    /**
+     * Decorate a page with documentation links
+     */
+    initDocLinks : function (d) {
+      var dl = d.getElementsByClassName('doc-link');
+      var that = this;
+      for (var i = 0; i < dl.length; i++) {
+	dl[i].onclick = function (e) {
+	  that.setPage(this.getAttribute('href'));
+	  return true;
+	};
+      };      
+    },
+
 
     /**
      * Show the tutorial page embedded.
diff --git a/dev/scss/base.scss b/dev/scss/base.scss
index a1702f6..2bef848 100644
--- a/dev/scss/base.scss
+++ b/dev/scss/base.scss
@@ -27,12 +27,17 @@
 
 
 a {
-  &[href^="http://"]:after,
-  &[href^="https://"]:after {
+  &[href^="http://"]::after,
+  &[href^="https://"]::after {
     font-family: FontAwesome;
     content: " " + $fa-extlink;
     font-size: 75%;
   }
+  &.doc-link::after {
+    font-family: FontAwesome;
+    content: " " + $fa-tutorial;
+    font-size: 75%;
+  }
   &:link {
     color: $dark-orange;
     text-decoration: none;
diff --git a/dev/scss/main/matchinfo.scss b/dev/scss/main/matchinfo.scss
index 8327a9b..53e5ed8 100644
--- a/dev/scss/main/matchinfo.scss
+++ b/dev/scss/main/matchinfo.scss
@@ -207,10 +207,12 @@
 }
 
 div.loading {
+  background-color: transparent !important;
   height: 16px !important;
   width: 16px !important;
   margin: 0 auto !important;
   background-image: url('data:image/gif;base64,R0lGODlhEAAQAIABAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48Hzh2UngyGvet6OpmKWmBb5TI+LlTOlAAACH5BAkEAAEALAAAAAAQABAAAAIohA+hu3gMnXyBqnkNw1XDnHThZ32bd6LUg0SOOIJsCaPmtOJvrctHAQAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48nxZKGLkxqGiungmyCXh9nRUleSZrO10AACH5BAkEAAEALAAAAAAQABAAAAIohA8RyKwN04pSWdumufp0niHghnkPyaWmqZLsKL3QWXUrJdpo66RKAQAh+QQJBAABACwAAAAAEAAQAAACJoQPEcisDdOKUlnbrp4IH989n1iBJUhK47itxkbGsEvRtXq/8B4UACH5BAkEAAEALAAAAAAQABAAAAIphA8RyKwN04pSWdvuNPto1HEX6G1YOYrain5im0pQ/GSnTIFr7eyhUQAAIfkECQQAAQAsAAAAABAAEAAAAiqMf6ALwWoelJFS5CbESTdeNUu3jWP4IWe2qS0TsmC8cuZFsrAkWrgtKQAAIfkECQQAAQAsAAAAABAAEAAAAiiMf6AL6LwMnDFQVG9SkrveWN6XjR82Mmi4cdMTvWsjnyIV4rIOgUwBACH5BAkEAAEALAAAAAAQABAAAAImjH+gC8HrXpNTxoeuzkltrkFg6BnMiJxpaYpWV76jDFKujV14LBUAIfkEAR4AAQAsAAAAABAAEAAAAiSEDxHIrA3TilJZ266eaN/8HJixdd4nailXgafrwSUVUqltQgUAOw==');
+
 }
 
 
diff --git a/dev/scss/main/sidebar.scss b/dev/scss/main/sidebar.scss
index 5fe57d0..c77fbc7 100644
--- a/dev/scss/main/sidebar.scss
+++ b/dev/scss/main/sidebar.scss
@@ -14,7 +14,7 @@
   top: 0;
   left: 0;
   height: 100%;
-  padding-top: 80px;
+  padding-top: 65px;
   > div {
     overflow-y: auto;
     overflow-x: visible;
diff --git a/lib/Kalamar/Plugin/KalamarHelpers.pm b/lib/Kalamar/Plugin/KalamarHelpers.pm
index 4b22131..e15470f 100644
--- a/lib/Kalamar/Plugin/KalamarHelpers.pm
+++ b/lib/Kalamar/Plugin/KalamarHelpers.pm
@@ -39,13 +39,32 @@
       my $title = shift;
       my $page = pop;
       my $scope = shift;
+
+      ($page, my $fragment) = split '#', $page;
+
+      my $url = $c->url_with(
+	'doc',
+	scope => $scope,
+	page => $page
+      );
+
+      $url->fragment($fragment) if $fragment;
+
       return $c->link_to(
 	$title,
-	$c->url_with('doc', scope => $scope, page => $page)
+	$url,
+	class => 'doc-link'
       );
     }
   );
 
+  $mojo->helper(
+    doc_ext_link_to => sub {
+      my $c = shift;
+      return $c->link_to(@_, target => '_top');
+    }
+  );
+
 
   # Documentation alert - Under Construction!
   $mojo->helper(
@@ -159,7 +178,7 @@
 
   # Create helper for queries in the tutorial
   $mojo->helper(
-    kalamar_tut_query => sub {
+    doc_query => sub {
       my ($c, $ql, $q, %param) = @_;
 
       # Escape query for html embedding
@@ -199,14 +218,6 @@
       $c->stash('kalamar.test_port' => 0);
       return 0;
     });
-
-  # Create links in the tutorial that make sure the current position is preserved,
-  # in case the tutorial was opened embedded
-  $mojo->helper(
-    kalamar_tut_link_to => sub {
-      return '[TODO]';
-    }
-  );
 };
 
 
@@ -215,163 +226,3 @@
 
 __END__
 
-
-
-
-
-  # Create links in the tutorial that make sure the current position is preserved,
-  # in case the tutorial was opened embedded
-  $mojo->helper(
-    kalamar_tut_link_to => sub {
-      my $c = shift;
-      my $title = shift;
-      my $link = shift;
-      my $host = $c->req->headers->header('X-Forwarded-Host');
-      my $url = $c->url_for($link);
-
-      # Link is part of the embedded tutorial
-      if ($c->param('embedded')) {
-	$url->query({ embedded => 1 });
-	return $c->link_to(
-	  $title,
-	  $url,
-	  onclick => qq!setTutorialPage("$url")!
-	);
-      };
-
-      # Build link
-      return $c->link_to($title, $url);
-    }
-  );
-
-
-
-  # Create helper for queries in the tutorial
-  $mojo->helper(
-    kalamar_tut_query => sub {
-      my ($c, $ql, $q, %param) = @_;
-      my $onclick = 'top.useQuery(this)';
-
-      my ($fail, $pass, @report) = (0,0);
-
-      if ($c->param('testing')) {
-	$c->res->headers->cache_control('max-age=1, no-cache');
-      };
-
-      # Store current tutorial position
-      if ($c->param('embedded')) {
-	$onclick = 'setTutorialPage(this);' . $onclick;
-      }
-
-      # Tutorial wasn't embedded - but opened for testing
- #     elsif ($c->param('testing') &&
-#	       $c->kalamar_test_port &&
-#		 $param{tests}) {
-#
-# Currently disabled
-
-#	my $tests = $param{tests} // [];
-#	my $index = $c->search(
-#	  query => $q,
-#	  ql => $ql,
-#	  cutoff => 'true',
-#	  no_cache => 1
-#	);
-#
-#	# Get the raw results
-#	my $json = decode_json($index->api_response);
-#
-#	# There is a response
-#	if ($json) {
-#	  my $json_pointer = Mojo::JSON::Pointer->new($json);
-#	  foreach my $test (@$tests) {
-#	    my ($type, $path, @rest) = @$test;
-#
-#	    # Check for equality
-#	    if ($type eq 'is') {
-#	      my $found = $json_pointer->get($path);
-#	      if ($found && $found eq $rest[0]) {
-#		$pass++;
-#	      }
-#	      else {
-#		my $result = $path . q! isn't ! . shift @rest;
-#		$result .= ' but was ' . $found if $found;
-#		$result .= '; ' . join('; ', @rest);
-#		push(@report, $result);
-#		$fail++;
-#	      };
-#	    }
-#
-#	    # Check for inequality
-#	    elsif ($type eq 'isnt') {
-#	      if ($json_pointer->get($path) ne $rest[0]) {
-#		$pass++;
-#	      }
-#	      else {
-#		push(@report, $path . q! is ! . join('; ', @rest));
-#		$fail++;
-#	      };
-#	    }
-#
-#	    # Check for existence
-#	    elsif ($type eq 'ok') {
-#	      if ($json_pointer->contains($path)) {
-#		$pass++;
-#	      }
-#	      else {
-#		push(@report, $path . q! doesn't exist; ! . join('; ', @rest));
-#		$fail++;
-#	      };
-#	    }
-#
-#	    # Check for inexistence
-#	    elsif ($type eq 'not_ok') {
-#	      unless ($json_pointer->contains($path)) {
-#		$pass++;
-#	      }
-#	      else {
-#		push(@report, $path . q! doesn't exist; ! . join('; ', @rest));
-#		$fail++;
-#	      };
-#	    };
-#	  };
-#	}
-#	else {
-#	  # There may be notifications here!
-#	  $fail++ foreach @$tests;
-#	};
-#
-#	# Emit hook to possible subscribers
-#	# This is used for self-testing
-#	# $plugin->emit_hook(kalamar_tut_query => (
-#	#   query_language => $ql,
-#	#   query => $q,
-#	#   %param
-#	# ));
- #     };
-
-      # Escape query for html embedding
-      $q = xml_escape $q;
-
-      # There is something to talk about
-      my $msg = '';
-      if (($pass + $fail) > 0) {
-	$msg .= '<div class="test">';
-	$msg .= qq!<p class="pass">Pass: $pass</p>!;
-	$msg .= qq!<p class="fail">Fail: $fail</p>! if $fail;
-	foreach (@report) {
-	  $msg .= qq!<p class="fail">${_}</p>!;
-	};
-	$msg .= '</div>';
-      };
-
-      # Return tag
-      b('<pre class="query tutorial" onclick="' . $onclick . '" ' .
-	  qq!data-query="$q" data-query-cutoff="! .
-	    ($param{cutoff} ? 1 : 0) .
-	      '"' .
-		qq! data-query-language="$ql"><code>! .
-		  $q .
-		    '</code></pre>' . $msg);
-    }
-  );
diff --git a/templates/doc/api/koralquery.html.ep b/templates/doc/api/koralquery.html.ep
index 4795573..d29bc94 100644
--- a/templates/doc/api/koralquery.html.ep
+++ b/templates/doc/api/koralquery.html.ep
@@ -4,4 +4,4 @@
 
 <p><strong>Main developer:</strong> Nils Diewald, Joachim Bingel</p>
 
-<p>The specification for KoralQuery is available on <a href="http://korap.github.io/Koral">GitHub</a>.</p>
+<p>The specification for KoralQuery is available on <%= doc_ext_link_to 'GitHub', "http://korap.github.io/Koral" %>.</p>
diff --git a/templates/doc/data/annotation.html.ep b/templates/doc/data/annotation.html.ep
index 803d059..0b2c566 100644
--- a/templates/doc/data/annotation.html.ep
+++ b/templates/doc/data/annotation.html.ep
@@ -7,7 +7,7 @@
 <section id="base">
   <h3>Base Foundry</h3>
   <p>The base foundry is available for all corpora and acts as a common ground for document structure annotation. It supports two types of spans: <code>&lt;s&gt;</code> for sentences and <code>&lt;p&gt;</code> for paragraphs - this will likely change in the next index version. These spans lack prefix information!</p>
-  %= kalamar_tut_query poliqarp => '<s>', cutoff => 1
+  %= doc_query poliqarp => '<s>', cutoff => 1
 </section>
 
 
@@ -26,7 +26,7 @@
     <dt><abbr data-type="span" title="Phrases">c</abbr></dt>
     <dd>Only nominal phrases are available and all nominal phrases are written in lower case (<code>np</code>)</dd>
   </dl>
-  %= kalamar_tut_query poliqarp => '[cnx/p=CC]', cutoff => 1
+  %= doc_query poliqarp => '[cnx/p=CC]', cutoff => 1
 </section>
 
 
@@ -38,7 +38,7 @@
     <dt><abbr data-type="token" title="Named Entity">ne_dewac_175_175m_600</abbr></dt>
     <dd>See above</dd>
   </dl>
-  %= kalamar_tut_query poliqarp => '[corenlp/ne_dewac_175m_600=I-ORG]', cutoff => 1
+  %= doc_query poliqarp => '[corenlp/ne_dewac_175m_600=I-ORG]', cutoff => 1
 </section>
 
 
@@ -50,7 +50,7 @@
     <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
     <dd>All part-of-speech information is written in capital letters and is based on STTS</dd>
   </dl>
-  %= kalamar_tut_query poliqarp => '[tt/p=ADV]', cutoff => 1
+  %= doc_query poliqarp => '[tt/p=ADV]', cutoff => 1
 </section>
 
 
@@ -64,7 +64,7 @@
     <dt><abbr data-type="token" title="Morphosyntactical information">m</abbr></dt>
     <dd>Includes information about tense (<code>tense:pres</code> ...), mode (<code>mood:ind</code>), number (<code>number:pl</code> ...), gender (<code>gender:masc</code> ...) etc.</dd>
   </dl>
-  %= kalamar_tut_query poliqarp => '[mate/m=gender:fem]', cutoff => 1
+  %= doc_query poliqarp => '[mate/m=gender:fem]', cutoff => 1
 </section>
 
 
@@ -74,7 +74,7 @@
     <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
     <dd>All part-of-speech information is written in capital letters and is based on STTS</dd>
   </dl>
-  %= kalamar_tut_query poliqarp => '[opennlp/p=PDAT]', cutoff => 1
+  %= doc_query poliqarp => '[opennlp/p=PDAT]', cutoff => 1
 </section>
 
 
@@ -88,8 +88,8 @@
     <dt><abbr data-type="span" title="Phrases">c</abbr></dt>
     <dd>Some phrases to create sentences, all upper case (<code>NP</code>, <code>NPA</code>, <code>NOUN</code>, <code>VERB</code>, <code>PREP</code>, <code>AP</code> ...)</dd>      
   </dl>
-  %= kalamar_tut_query poliqarp => '[xip/p=ADJ]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '<xip/c=VERB>', cutoff => 1
+  %= doc_query poliqarp => '[xip/p=ADJ]', cutoff => 1
+  %= doc_query poliqarp => '<xip/c=VERB>', cutoff => 1
 </section>
 
 <section id="default-foundries">
diff --git a/templates/doc/faq.html.ep b/templates/doc/faq.html.ep
index 01ed42d..6d16d01 100644
--- a/templates/doc/faq.html.ep
+++ b/templates/doc/faq.html.ep
@@ -6,13 +6,13 @@
 
 <section>
   <h3>Where is the source code?</h3>
-  <hp>Parts of KorAP are already available on <a href="https://github.com/KorAP">GitHub</a>, and we will publish more components in the future.</p>
+  <hp>Parts of KorAP are already available on <%= doc_ext_link_to 'GitHub', 'https://github.com/KorAP' %>, and we will publish more components in the future.</p>
 </section>
 
 <section>
   <h3>Why can’t I create an account?</h3>
   <blockquote>
-    <p>This question refers to the <a href="http://korap.ids-mannheim.de/app">first frontend</a>. The second frontend has no user management yet.</p>
+    <p>This question refers to the <%= doc_ext_link_to 'first frontend', 'http://korap.ids-mannheim.de/app' %>. The second frontend has no user management yet.</p>
   </blockquote>
   <p>If you already have a COSMAS II account, you should be able to log in using those credentials. Other users may need to wait a bit longer. For the time being, access to KorAP will be restricted to connections from inside the IDS only.</p>
   <p>And if you think something else is wrong with your login - <%= mail_to_chiffre join('@', 'korap', 'ids-mannheim.de'), subject => 'Something is wrong with my login', begin %>please let us know<% end %>.</p>
@@ -31,7 +31,7 @@
 <section>
   <h3>How do I know which tagset to use for collocation analysis properties?</h3>
   <blockquote>
-    <p>This question refers to the <a href="http://korap.ids-mannheim.de/app">first frontend</a>. The second frontend has no collocation analysis module yet.</p>
+    <p>This question refers to the <%= doc_ext_link_to 'first frontend', 'http://korap.ids-mannheim.de/app' %>. The second frontend has no collocation analysis module yet.</p>
   </blockquote>
   <p>In the current implementation, the Neo4J engine uses the TreeTagger foundry as default. 
     Thus, the respective tags come from the STTS tagset.</p>
@@ -40,10 +40,10 @@
 <section>
   <h3>How do I use the collocation search view?</h3>
   <blockquote>
-    <p>This question refers to the <a href="http://korap.ids-mannheim.de/app">first frontend</a>. The second frontend has no collocation analysis module yet.</p>
+    <p>This question refers to the <%= doc_ext_link_to 'first frontend', 'http://korap.ids-mannheim.de/app' %>. The second frontend has no collocation analysis module yet.</p>
   </blockquote>
   <p>The collocation search view uses collocation properties to find collocates in the context of the specified query. This property can be of either a POS or a lemma. The operator assigns this property either an inclusive and exclusive state (i.e. negation) or can specify that the selected property is a regular expression. You can assign multiple properties per queries.</p>
-  <p>For more information on this topic, see our <a href="http://youtu.be/hiKHw50Hq9k">tutorial video</a>.</p>
+  <p>For more information on this topic, see our <%= doc_ext_link_to 'tutorial video', 'http://youtu.be/hiKHw50Hq9k' %>.</p>
 </section>
 
 <section>
diff --git a/templates/doc/korap.html.ep b/templates/doc/korap.html.ep
index 08eb9a7..136e14c 100644
--- a/templates/doc/korap.html.ep
+++ b/templates/doc/korap.html.ep
@@ -4,7 +4,7 @@
 
 %= korap_overview 'korap'
 
-<p>The KorAP project was launched in 2011 at the <a href="http://www.ids-mannheim.de/">Institute for the German Language (IDS)</a> in Mannheim, Germany. KorAP is a Corpus Analysis Platform, with an extensible and scalable architecture. It consists of multiple components, that are exchangable due to well defined APIs.</p>
+<p>The KorAP project was launched in 2011 at the <%= doc_ext_link_to 'Institute for the German Language (IDS)', "http://www.ids-mannheim.de/" %> in Mannheim, Germany. KorAP is a Corpus Analysis Platform, with an extensible and scalable architecture. It consists of multiple components, that are exchangable due to well defined APIs.</p>
 
 <dl>
   <dt><%= doc_link_to('Kalamar', 'korap', 'kalamar') %></dt>
@@ -16,9 +16,6 @@
   <dt><%= doc_link_to('Kustvakt', 'korap', 'kustvakt') %></dt>
   <dd>Kustvakt is the central user and policy management service. It takes a query and rewrites it to restrict the scope of a search to documents the user is allowed to. It may also inject further properties the user has set up, like preferred annotation layers. To transfer a query written in a certain query language to the internal general query protocol <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>, Kustvakt uses <%= doc_link_to('Koral', 'korap', 'koral') %>.</dd>
 
-  <dt><%= doc_link_to('Kustvakt', 'korap', 'kustvakt') %></dt>
-  <dd>Kustvakt is the central user and policy management service. It takes a query and rewrites it to restrict the scope of a search to documents the user is allowed to. It may also inject further properties the user has set up, like preferred annotation layers. To transfer a query written in a certain query language to the internal general query protocol <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>, Kustvakt uses <%= doc_link_to('Koral', 'korap', 'koral') %>.</dd>
-
   <dt><%= doc_link_to('Koral', 'korap', 'koral') %></dt>
   <dd>Koral is a library that translates queries written in one of several implemented query languages into a general query protocol, called <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>.</dd>
 
@@ -34,33 +31,35 @@
 <dl>
   <dt>Head</dt>
   <dd>
-    <a href="http://www.ids-mannheim.de/direktion/personal/kupietz.html">Dr. Marc Kupietz</a>,
-    <a href="http://www.ids-mannheim.de/direktion/personal/witt.html">Dr. Andreas Witt</a>
+    <%= doc_ext_link_to 'Dr. Marc Kupietz', "http://www.ids-mannheim.de/direktion/personal/kupietz.html" %>,
+    <%= doc_ext_link_to 'Dr. Andreas Witt', "http://www.ids-mannheim.de/direktion/personal/witt.html" %>
   </dd>
 
   <dt>Scientific Staff</dt>
   <dd>
-    <a href="http://www.ids-mannheim.de/direktion/personal/banski.html">Dr. Piotr Bański</a> (Coordination),
-    <a href="http://nils-diewald.de/">Nils Diewald</a>,
-    <a href="http://www.ids-mannheim.de/direktion/personal/frick/">Elena Frick</a>,
+    <%= doc_ext_link_to 'Dr. Piotr Bański', "http://www.ids-mannheim.de/direktion/personal/banski.html" %> (Coordination),
+    <%= doc_ext_link_to 'Nils Diewald', "http://nils-diewald.de/" %>,
+    <%= doc_ext_link_to 'Elena Frick', "http://www.ids-mannheim.de/direktion/personal/frick/" %>,
     Michael Hanl
   </dd>
 
   <dt>Extended project crew</dt>
   <dd>
-    <a href="http://www.ids-mannheim.de/direktion/personal/bingel.html">Joachim Bingel</a>,
-    <a href="http://www.ids-mannheim.de/direktion/personal/margaretha/">Eliza Margaretha</a>,
-    <a href="http://www.ids-mannheim.de/zdv/personal/bodmer.html">Franck Bodmer</a>,
-    <a href="http://www.ids-mannheim.de/zdv/personal/harders.html">Peter Harders</a>,
-    <a href="http://www.ids-mannheim.de/zdv/personal/krause.html">Helge Stallkamp</a>
+    <%= doc_ext_link_to 'Joachim Bingel', "http://www.ids-mannheim.de/direktion/personal/bingel.html" %>,
+    <%= doc_ext_link_to 'Eliza Margaretha', "http://www.ids-mannheim.de/direktion/personal/margaretha/" %>,
+    <%= doc_ext_link_to 'Franck Bodmer', "http://www.ids-mannheim.de/zdv/personal/bodmer.html" %>,
+    <%= doc_ext_link_to 'Peter Harders', "http://www.ids-mannheim.de/zdv/personal/harders.html" %>,
+    <%= doc_ext_link_to 'Helge Stallkamp', "http://www.ids-mannheim.de/zdv/personal/krause.html" %>
   </dd>
 
   <dt>Past Project Members</dt>
-  <dd><a href="http://www.ids-mannheim.de/direktion/personal/ehemalige/schnober.html">Carsten Schnober</a></dd>
+  <dd>
+    <%= doc_ext_link_to 'Carsten Schnober', "http://www.ids-mannheim.de/direktion/personal/ehemalige/schnober.html" %>
+  </dd>
 
   <dt>Consulting</dt>
   <dd>
-    <a href="http://www.ids-mannheim.de/direktion/personal/belica.html">Cyril Belica</a>,
-    <a href="http://www.ids-mannheim.de/direktion/personal/schonefeld/">Oliver Schonefeld</a>
+    <%= doc_ext_link_to 'Cyril Belica', "http://www.ids-mannheim.de/direktion/personal/belica.html" %>,
+    <%= doc_ext_link_to 'Oliver Schonefeld', "http://www.ids-mannheim.de/direktion/personal/schonefeld/" %>
   </dd>
 </dl>
diff --git a/templates/doc/korap/kalamar.html.ep b/templates/doc/korap/kalamar.html.ep
index 8422747..8e73b0f 100644
--- a/templates/doc/korap/kalamar.html.ep
+++ b/templates/doc/korap/kalamar.html.ep
@@ -6,4 +6,4 @@
 
 <p><strong>Main developer:</strong> Nils Diewald</p>
 
-<p>Kalamar is the main user frontend of KorAP. It is based on <a href="http://mojolicio.us/">Mojolicious</a> and written in Perl and JavaScript.</p>
+<p>Kalamar is the main user frontend of KorAP. It is based on <%= doc_ext_link_to 'Mojolicious', "http://mojolicio.us/" %> and written in Perl and JavaScript.</p>
diff --git a/templates/doc/korap/koral.html.ep b/templates/doc/korap/koral.html.ep
index 273df7d..d97e458 100644
--- a/templates/doc/korap/koral.html.ep
+++ b/templates/doc/korap/koral.html.ep
@@ -8,4 +8,4 @@
 
 <p>Koral is a library designed for the translation of different corpus query languages to <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>. Currently supported query languages include <%= doc_link_to 'Cosmas II', 'ql', 'cosmas2' %>, <%= doc_link_to('Annis QL', 'ql', 'annis') %>, <%= doc_link_to('Poliqarp+', 'ql', 'poliqarp-plus') %> (an extended version of Poliqarp) and <%= doc_link_to('CQL', 'ql', 'cql') %>.</p>
 
-<p>Koral is open source and available on <a href="https://github.com/KorAP/Koral">GitHub</a>.</p>
+<p>Koral is open source and available on <%= doc_ext_link_to 'GitHub', "https://github.com/KorAP/Koral" %>.</p>
diff --git a/templates/doc/korap/krill.html.ep b/templates/doc/korap/krill.html.ep
index cb013c0..9e10159 100644
--- a/templates/doc/korap/krill.html.ep
+++ b/templates/doc/korap/krill.html.ep
@@ -6,6 +6,6 @@
 
 <p><strong>Main developer:</strong> Nils Diewald, Eliza Margaretha</p>
 
-<p>Krill is a <a href="https://lucene.apache.org/">Lucene</a> based search engine for large annotated corpora, used as a backend component for KorAP. It is the reference implementation for <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>, covering most of the protocols features.</p>
+<p>Krill is a <%= doc_ext_link_to 'Lucene', "https://lucene.apache.org/" %> based search engine for large annotated corpora, used as a backend component for KorAP. It is the reference implementation for <%= doc_link_to('KoralQuery', 'api', 'koralquery') %>, covering most of the protocols features.</p>
 
-<p>Krill is open source and available on <a href="https://github.com/KorAP/Krill">GitHub</a>.</p>
+<p>Krill is open source and available on <%= doc_ext_link_to 'GitHub', "https://github.com/KorAP/Krill" %>.</p>
diff --git a/templates/doc/ql.html.ep b/templates/doc/ql.html.ep
index a47a0ed..392927b 100644
--- a/templates/doc/ql.html.ep
+++ b/templates/doc/ql.html.ep
@@ -10,7 +10,7 @@
 
 <section id="intro">
   <h3>Frontend Features</h3>
-  <p>This frontend differs to the <%= link_to 'official frontend', 'http://korap.ids-mannheim.de/app/', target => '_blank' %> by providing a serialization view, an integrated tutorial, a comparison view for morphological annotations, and an autocompletion for closed annotations (type in <%= kalamar_tut_link_to 'foundry prefixes', '/tutorial/foundries' %> like <code>cnx/</code>).</p>
+  <p>This frontend differs to the <%= doc_ext_link_to 'official frontend', 'http://korap.ids-mannheim.de/app/', target => '_blank' %> by providing a serialization view, an integrated tutorial, a comparison view for morphological annotations, and an autocompletion for closed annotations (type in <%= doc_link_to 'foundry prefixes', 'data', 'annotation' %> like <code>cnx/</code>).</p>
 </section>
 
 <section id="examples">
@@ -22,32 +22,32 @@
   %# [isnt => 'json_pointer', 'result']
   %# [not_ok => 'json_pointer']
   
-  <p><strong>Poliqarp</strong>: Find all occurrences of the lemma &quot;baum&quot; as annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
-  %= kalamar_tut_query poliqarp => '[base=Baum]', 'tests' => [[is => '/query', 'tokens:tt/l:Baum'],[is => '/request/query/wrap/layer', 'lemma'],[is => '/request/query/wrap/foundry', 'tt'], [ok => '/matches/10']]
+  <p><strong>Poliqarp</strong>: Find all occurrences of the lemma &quot;baum&quot; as annotated by the <%= doc_link_to 'default foundry', 'data', 'annotation' %>.</p>
+  %= doc_query poliqarp => '[base=Baum]', 'tests' => [[is => '/query', 'tokens:tt/l:Baum'],[is => '/request/query/wrap/layer', 'lemma'],[is => '/request/query/wrap/foundry', 'tt'], [ok => '/matches/10']]
 
   <p><strong>Poliqarp</strong>: Find all sequences of adjectives as annotated by Treetagger, that are repeated 3 to 5 times in a row.</p>
-  %= kalamar_tut_query poliqarp => '[tt/p=ADJA]{3,5}', 'tests' => [[is => '/query', 'spanRepetition(tokens:tt/p:ADJA{3,5})'], [is => '/request/query/operation', 'operation:repetition'],[is => '/request/query/operands/0/wrap/foundry', 'tt'], [ok => '/matches/5']]
+  %= doc_query poliqarp => '[tt/p=ADJA]{3,5}', 'tests' => [[is => '/query', 'spanRepetition(tokens:tt/p:ADJA{3,5})'], [is => '/request/query/operation', 'operation:repetition'],[is => '/request/query/operands/0/wrap/foundry', 'tt'], [ok => '/matches/5']]
 
   <p><strong>Cosmas-II</strong>: Find all occurrences of the words &quot;der&quot; and &quot;Baum&quot;, in case they are in a maximum distance of 5 tokens. The order is not relevant.</p>
-  %= kalamar_tut_query cosmas2 => 'der /w5 Baum', 'tests' => [[is => '/query', 'shrink(129: spanDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(w[0:5], notOrdered, notExcluded)]))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/@type', 'korap:reference'],[is => '/request/query/operands/0/operands/1/operation', 'operation:class'], [is => '/itemsPerPage', 25], [ok => '/matches/20'], [is => '/matches/4/corpusID', 'WPD'], [is => '/matches/12/corpusID', 'WPD']]
+  %= doc_query cosmas2 => 'der /w5 Baum', 'tests' => [[is => '/query', 'shrink(129: spanDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(w[0:5], notOrdered, notExcluded)]))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/@type', 'korap:reference'],[is => '/request/query/operands/0/operands/1/operation', 'operation:class'], [is => '/itemsPerPage', 25], [ok => '/matches/20'], [is => '/matches/4/corpusID', 'WPD'], [is => '/matches/12/corpusID', 'WPD']]
 
-  <p><strong>Cosmas-II</strong>: Find all sequences of a word starting with a &quot;d&quot; (using a wildcard) followed by an adjective as annotated in the mate foundry, followed by the word &quot;Baum&quot; (ignore the case), that is in a sentence element annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
+  <p><strong>Cosmas-II</strong>: Find all sequences of a word starting with a &quot;d&quot; (using a wildcard) followed by an adjective as annotated in the mate foundry, followed by the word &quot;Baum&quot; (ignore the case), that is in a sentence element annotated by the <%= doc_link_to 'default foundry', 'data', 'annotation' %>.</p>
   <p><em>Be aware</em>: Minor incompatibilities with implemented languages may be announced with warnings.</p>
-  %= kalamar_tut_query cosmas2 => 'd* MORPH(mate/p=ADJA) $Baum #IN #ELEM(s)', 'tests' => [[ok => '/matches/3'], [is => '/query', 'shrink(130: {131: spanContain({129: <tokens:s />}, {130: spanNext(spanNext(SpanMultiTermQueryWrapper(tokens:s:d*), tokens:mate/p:ADJA), tokens:i:baum)})})'], [is => '/request/query/@type', 'korap:reference'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/operands/0/operation', 'operation:position'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operation', 'operation:sequence'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/type', 'type:wildcard'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key', 'ADJA'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/foundry', 'mate'], [ok => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/2/wrap/caseInsensitive'], [ok => '/matches/5']]
+  %= doc_query cosmas2 => 'd* MORPH(mate/p=ADJA) $Baum #IN #ELEM(s)', 'tests' => [[ok => '/matches/3'], [is => '/query', 'shrink(130: {131: spanContain({129: <tokens:s />}, {130: spanNext(spanNext(SpanMultiTermQueryWrapper(tokens:s:d*), tokens:mate/p:ADJA), tokens:i:baum)})})'], [is => '/request/query/@type', 'korap:reference'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/operands/0/operation', 'operation:position'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operation', 'operation:sequence'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/type', 'type:wildcard'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key', 'ADJA'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/foundry', 'mate'], [ok => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/2/wrap/caseInsensitive'], [ok => '/matches/5']]
 
   <p><strong>Poliqarp+</strong>: Find all nominal phrases as annotated using Connexor, that contain an adverb as annotated by OpenNLP, that is annotated as something starting with an &quot;A&quot; using regular expressions in Treetagger.</p>
-  %= kalamar_tut_query poliqarp => 'contains(<cnx/c=np>,{[opennlp/p=ADV & tt/p="A.*"]})', cutoff => 1, 'tests' => [[is => '/query', 'spanContain(<tokens:cnx/c:np />, {1: spanSegment(tokens:opennlp/p:ADV, SpanMultiTermQueryWrapper(tokens:/tt/p:A.*/))})'], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/frames/0', 'frames:contains'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/layer', 'c'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/key', 'np'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/foundry', 'opennlp'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/layer', 'p'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/foundry', 'tt'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/type', 'type:regex'], [is => '/request/query/operands/1/operands/0/wrap/operands/1/key', 'A.*'], [ok => '/matches/5']]
+  %= doc_query poliqarp => 'contains(<cnx/c=np>,{[opennlp/p=ADV & tt/p="A.*"]})', cutoff => 1, 'tests' => [[is => '/query', 'spanContain(<tokens:cnx/c:np />, {1: spanSegment(tokens:opennlp/p:ADV, SpanMultiTermQueryWrapper(tokens:/tt/p:A.*/))})'], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/frames/0', 'frames:contains'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/layer', 'c'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/key', 'np'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/foundry', 'opennlp'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/layer', 'p'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/foundry', 'tt'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/type', 'type:regex'], [is => '/request/query/operands/1/operands/0/wrap/operands/1/key', 'A.*'], [ok => '/matches/5']]
 
-  <p><strong>Poliqarp+</strong>: Find all sentences as annotated by the base foundry that start with a sequence of one token in present tense as annotated by Connexor and the lemma &quot;die&quot; annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>. Highlight both terms of the sequence.</p>
-  %= kalamar_tut_query poliqarp => 'startswith(<s>, {1:[cnx/m=PRES]}{2:[base=die]})', cutoff => 1, tests => [[is => '/query', 'spanStartsWith(<tokens:s />, spanNext({1: tokens:cnx/m:PRES}, {2: tokens:tt/l:die}))'], [is => '/request/meta/startPage', 1], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/operands/0/@type','korap:span'], [is => '/request/query/operands/1/operands/0/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operands/0/wrap/foundry', 'tt'], [ok => '/matches/4']]
+  <p><strong>Poliqarp+</strong>: Find all sentences as annotated by the base foundry that start with a sequence of one token in present tense as annotated by Connexor and the lemma &quot;die&quot; annotated by the <%= doc_link_to 'default foundry', 'data', 'annotation' %>. Highlight both terms of the sequence.</p>
+  %= doc_query poliqarp => 'startswith(<s>, {1:[cnx/m=PRES]}{2:[base=die]})', cutoff => 1, tests => [[is => '/query', 'spanStartsWith(<tokens:s />, spanNext({1: tokens:cnx/m:PRES}, {2: tokens:tt/l:die}))'], [is => '/request/meta/startPage', 1], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/operands/0/@type','korap:span'], [is => '/request/query/operands/1/operands/0/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operands/0/wrap/foundry', 'tt'], [ok => '/matches/4']]
 
   <p><strong>Poliqarp+</strong>: Find all sequences of an article, followed by three to four adjectives and a noun as annotated by the Treetagger foundry, that finish a sentence. Highlight all parts of the sequence.</p>
-  %= kalamar_tut_query poliqarp => 'focus(3:endswith(<s>,{3:[tt/p=ART]{1:{2:[tt/p=ADJA]{3,4}}[tt/p=NN]}}))', cutoff => 1, 'tests' => [[is => '/query', 'shrink(3: spanEndsWith(<tokens:s />, {3: spanNext(tokens:tt/p:ART, {1: spanNext({2: spanRepetition(tokens:tt/p:ADJA{3,4})}, tokens:tt/p:NN)})}))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/frames/0', 'frames:endswith'], [ok => '/matches/3'], [is => '/matches/4/corpusID', 'WPD']]
+  %= doc_query poliqarp => 'focus(3:endswith(<s>,{3:[tt/p=ART]{1:{2:[tt/p=ADJA]{3,4}}[tt/p=NN]}}))', cutoff => 1, 'tests' => [[is => '/query', 'shrink(3: spanEndsWith(<tokens:s />, {3: spanNext(tokens:tt/p:ART, {1: spanNext({2: spanRepetition(tokens:tt/p:ADJA{3,4})}, tokens:tt/p:NN)})}))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/frames/0', 'frames:endswith'], [ok => '/matches/3'], [is => '/matches/4/corpusID', 'WPD']]
 
-  <p><strong>Annis</strong>: Find all occurrences of the sequence of two tokens annotated as adverbs by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
-  %= kalamar_tut_query annis => 'pos="ADV" & pos="ADV" & #1 . #2', 'tests' => [[is => '/query', 'spanNext(tokens:tt/p:ADV, tokens:tt/p:ADV)'], [is => '/request/query/operands/0/wrap/foundry', 'tt'], [is => '/request/query/operands/1/wrap/foundry', 'tt'], [ok => '/matches/5'], [ok => '/matches/15'], [is => '/matches/15/corpusID', 'WPD']]
+  <p><strong>Annis</strong>: Find all occurrences of the sequence of two tokens annotated as adverbs by the <%= doc_link_to 'default foundry', 'data', 'annotation' %>.</p>
+  %= doc_query annis => 'pos="ADV" & pos="ADV" & #1 . #2', 'tests' => [[is => '/query', 'spanNext(tokens:tt/p:ADV, tokens:tt/p:ADV)'], [is => '/request/query/operands/0/wrap/foundry', 'tt'], [is => '/request/query/operands/1/wrap/foundry', 'tt'], [ok => '/matches/5'], [ok => '/matches/15'], [is => '/matches/15/corpusID', 'WPD']]
 
   <p><strong>CQL</strong>: Find all occurrences of the sequence &quot;der alte Mann&quot;.</p>
-  %= kalamar_tut_query cql => '"der alte Mann"', 'tests' => [[is => '/query', 'spanNext(spanNext(tokens:s:der, tokens:s:alte), tokens:s:Mann)'], [is => '/request/query/operation', 'operation:sequence'],[is => '/request/query/operands/0/wrap/key', 'der'],[is => '/request/query/operands/1/wrap/key', 'alte'],[is => '/request/query/operands/2/wrap/key', 'Mann'], [ok => '/matches/5'], [ok => '/matches/5']]
+  %= doc_query cql => '"der alte Mann"', 'tests' => [[is => '/query', 'spanNext(spanNext(tokens:s:der, tokens:s:alte), tokens:s:Mann)'], [is => '/request/query/operation', 'operation:sequence'],[is => '/request/query/operands/0/wrap/key', 'der'],[is => '/request/query/operands/1/wrap/key', 'alte'],[is => '/request/query/operands/2/wrap/key', 'Mann'], [ok => '/matches/5'], [ok => '/matches/5']]
 	
 </section>
diff --git a/templates/doc/ql/cql.html.ep b/templates/doc/ql/cql.html.ep
new file mode 100644
index 0000000..4a14ef1
--- /dev/null
+++ b/templates/doc/ql/cql.html.ep
@@ -0,0 +1,5 @@
+% layout 'main', title => 'KorAP: CQL';
+
+<h2>CQL</h2>
+
+%= doc_uc
diff --git a/templates/doc/ql/poliqarp-plus.html.ep b/templates/doc/ql/poliqarp-plus.html.ep
index 51fbd29..5e6b238 100644
--- a/templates/doc/ql/poliqarp-plus.html.ep
+++ b/templates/doc/ql/poliqarp-plus.html.ep
@@ -10,35 +10,35 @@
   <p>The atomic elements of Poliqarp queries are segments. Most of the time segments represent words and can be simply queried:</p>
   %# footnote: In the polish national corpus, Poliqarp can join multiple segments when identifying a single word.
 
-  %= kalamar_tut_query poliqarp => 'Baum'
+  %= doc_query poliqarp => 'Baum'
 
   <p>Sequences of simple segments are expressed using a space delimiter:</p>
 
-  %= kalamar_tut_query poliqarp => 'der Baum'
+  %= doc_query poliqarp => 'der Baum'
 
   <p>Simple segments always refer to the surface form of a word. To search for surface forms without case sensitivity, you can use the <code>/i</code> flag.</p>
 
-  %= kalamar_tut_query poliqarp => 'laufen/i'
+  %= doc_query poliqarp => 'laufen/i'
 
   <p>The query above will find all occurrences of <code>laufen</code> irrespective of the capitalization of letters, so <code>wir laufen</code> will be find as well as <code>das Laufen</code> and even <code>&quot;GEH LAUFEN!&quot;</code>.
 
   <h4 id="regexp">Regular Expressions</h4>
 
-  <p>Segments can also be queried using <%= kalamar_tut_link_to 'regular expressions', '/tutorial/regular-expressions' %> - by surrounding the segment with double quotes.</p>
+  <p>Segments can also be queried using <%= doc_link_to 'regular expressions', 'ql', 'regexp' %> - by surrounding the segment with double quotes.</p>
 
-  %= kalamar_tut_query poliqarp => '"l(au|ie)fen"'
+  %= doc_query poliqarp => '"l(au|ie)fen"'
 
   <p>Regular expression segments will always match the whole segment, meaning the above query will find words starting with <code>l</code> and ending with <code>n</code>. To support subqueries, you can use the <code>/x</code> flag.
 
-    %= kalamar_tut_query poliqarp => '"l(au|ie)fen"/x', cutoff => 1
+    %= doc_query poliqarp => '"l(au|ie)fen"/x', cutoff => 1
 
   <p>The <code>/x</code> will search for all segments that contain a sequence of characters the regular expression matches. That means the above query is equivalent to:</p>
 
-  %= kalamar_tut_query poliqarp => '".*?l(au|ie)fen.*?"', cutoff => 1
+  %= doc_query poliqarp => '".*?l(au|ie)fen.*?"', cutoff => 1
 
   <p>The <code>/x</code> flag can also be used in conjuntion with strict expressions to search for substrings:</p>
 
-  %= kalamar_tut_query poliqarp => 'trenn/xi', cutoff => 1
+  %= doc_query poliqarp => 'trenn/xi', cutoff => 1
 
   <p>The above query will find all occurrences of segments including the string <code>trenn</code> case insensitive, like &quot;Trennung&quot;, &quot;unzertrennlich&quot;, or &quot;Wettrennen&quot;.</p>
 
@@ -48,7 +48,7 @@
 
   <p>You can again apply the <code>/i</code> flag to search case insensitive.</p>
 
-  %= kalamar_tut_query poliqarp => '"l(au|ie)fen"/xi', cutoff => 1
+  %= doc_query poliqarp => '"l(au|ie)fen"/xi', cutoff => 1
 </section>
 
 <section id="complex">
@@ -59,53 +59,53 @@
   <p>The KorAP implementation of Poliqarp provides three special segment keys: <code>orth</code> for surface forms, <code>base</code> for lemmata, and <code>pos</code> for Part-of-Speech. The following complex query finds all surface forms of <code>Baum</code>.</p>
   %# There are more special keys in Poliqarp, but KorAP doesn't provide them.
 
-  %= kalamar_tut_query poliqarp => '[orth=Baum]'
+  %= doc_query poliqarp => '[orth=Baum]'
 
   <p>The query is thus equivalent to:</p>
 
-  %= kalamar_tut_query poliqarp => 'Baum'
+  %= doc_query poliqarp => 'Baum'
 
   <p>Complex segments expect simple expressions as values, meaning that the following expression is valid as well:</p>
 
-  %= kalamar_tut_query poliqarp => '[orth="l(au|ie)fen"/xi]', cutoff => 1
+  %= doc_query poliqarp => '[orth="l(au|ie)fen"/xi]', cutoff => 1
 
-  <p>Another special key is <code>base</code>, refering to the lemma annotation of the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.
+  <p>Another special key is <code>base</code>, refering to the lemma annotation of the <%= doc_link_to 'default foundry', 'data', 'annotation' %>.
     The following query finds all occurrences of segments annotated as the lemma <code>Baum</code> by the default foundry.</p>
 
-  %= kalamar_tut_query poliqarp => '[base=Baum]'
+  %= doc_query poliqarp => '[base=Baum]'
 
-  <p>The third special key is <code>pos</code>, refering to the part-of-speech annotation of the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.
+  <p>The third special key is <code>pos</code>, refering to the part-of-speech annotation of the <%= doc_link_to 'default foundry', 'data', 'annotation' %>.
     The following query finds all attributive adjectives:</p>
 
-  %= kalamar_tut_query poliqarp => '[pos=ADJA]'
+  %= doc_query poliqarp => '[pos=ADJA]'
 
   <p>Complex segments requesting further token annotations can have keys following the <code>foundry/layer</code> notation.
     For example to find all occurrences of plural words in the mate foundry, you can search using the following query:</p>
 
-  %= kalamar_tut_query poliqarp => '[mate/m=number:pl]'
+  %= doc_query poliqarp => '[mate/m=number:pl]'
 
   <h4>Negation</h4>
   <p>Negation of terms in complex expressions can be expressed by prepending the equal sign with an exclamation mark or by prepending the expression with one.</p>
 
-  %= kalamar_tut_query poliqarp => '[pos!=ADJA]'
-  %= kalamar_tut_query poliqarp => '[!pos=ADJA]'
+  %= doc_query poliqarp => '[pos!=ADJA]'
+  %= doc_query poliqarp => '[!pos=ADJA]'
 
   <blockquote class="warning">
     <p>Beware: Negated complex segments can't be searched solely in the Lucene index.
-      However, they work in case they are part of a <a href="#tut-syntagmatic-operators-sequence">sequence</a>.</p>
+      However, they work in case they are part of a <%= doc_link_to 'sequence', 'ql', 'poliqarp-plus#syntagmatic-operators-sequence' %>.</p>
   </blockquote>
 
   <h4 id="empty-segments">Empty Segments</h4>
 
   <p>A special segment is the empty segment, that matches every word in the index.</p>
 
-  %= kalamar_tut_query poliqarp => '[]'
+  %= doc_query poliqarp => '[]'
 
-  <p>Empty segments are useful to express distances of words by using <a href="tut-syntagmatic-operators-repetitions">repetitions</a>.</p>
+  <p>Empty segments are useful to express distances of words by using <%= doc_link_to 'repetitions', 'ql', 'poliqarp-plus#syntagmatic-operators-repetitions' %>.</p>
 
   <blockquote class="warning">
     <p>Beware: Empty segments can't be searched solely in the Lucene index.
-      However, they work in case they are part of a <a href="#tut-syntagmatic-operators-sequence">sequence</a>.</p>
+      However, they work in case they are part of a <%= doc_link_to 'sequence', 'ql', 'poliqarp-plus'#syntagmatic-operators-sequence' %>.</p>
   </blockquote>
 </section>
 
@@ -115,7 +115,7 @@
   <p>Not all segments are bound to words - some are bound to concepts spanning multiple words, for example noun phrases, sentences, or paragraphs.
 Span segments can be searched for using angular brackets instead of square brackets.</p>
 
-  %= kalamar_tut_query poliqarp => '<xip/c=INFC>'
+  %= doc_query poliqarp => '<xip/c=INFC>'
     
     <p>Otherwise they can be treated in exactly the same way as simple or complex segments.</p>
 </section>
@@ -125,24 +125,24 @@
 
   <p>A complex segment can have multiple properties a token has to fulfill. For example to search for all words with the surface form <code>laufe</code> (no matter if capitalized or not) that have the lemma <code>lauf</code> (and not, for example, <code>laufen</code>, which would indicate a verb or a gerund), you can search for:</p>
 
-  %= kalamar_tut_query poliqarp => '[orth=laufe/i & base=Lauf]'
+  %= doc_query poliqarp => '[orth=laufe/i & base=Lauf]'
 
   <p>The ampersand combines multiple properties with a logical AND.
 Terms of the complex segment can be negated as introduced before.</p>
 
-  %= kalamar_tut_query poliqarp => '[orth=laufe/i & base!=Lauf]'
+  %= doc_query poliqarp => '[orth=laufe/i & base!=Lauf]'
 
   <p>The following query is therefore equivalent:</p>
 
-  %= kalamar_tut_query poliqarp => '[orth=laufe & !base=Lauf]'
+  %= doc_query poliqarp => '[orth=laufe & !base=Lauf]'
 
   <p>Alternatives can be expressed by using the pipe symbol:</p>
 
-  %= kalamar_tut_query poliqarp => '[base=laufen | base=gehen]'
+  %= doc_query poliqarp => '[base=laufen | base=gehen]'
 
   <p>All these sub expressions can be grouped using round brackets to form complex boolean expressions:</p>
 
-  %= kalamar_tut_query poliqarp => '[(base=laufen | base=gehen) & tt/pos=VVFIN]'
+  %= doc_query poliqarp => '[(base=laufen | base=gehen) & tt/pos=VVFIN]'
 </section>
 
 <section id="syntagmatic-operators">
@@ -152,19 +152,19 @@
 
   <p>Sequences can be used to search for segments in order. For example to search for the word &quot;alte&quot; preceded by &quot;der&quot; and followed by &quot;Mann&quot;, you can simple search for the sequence of simple expressions separated by whitespaces.</p>
 
-  %= kalamar_tut_query poliqarp => 'der alte Mann'
+  %= doc_query poliqarp => 'der alte Mann'
 
   <p>However, you can obviously search using complex segments as well:</p>
 
-  %= kalamar_tut_query poliqarp => '[orth=der][orth=alte][orth=Mann]'
+  %= doc_query poliqarp => '[orth=der][orth=alte][orth=Mann]'
 
   <p>Now you may see the benefit of the empty segment to search for words you don't know:</p>
 
-  %= kalamar_tut_query poliqarp => '[orth=der][][orth=Mann]'
+  %= doc_query poliqarp => '[orth=der][][orth=Mann]'
 
   <p>You are also able to mix segments and spans in sequences, for example to search for the word &quot;Der&quot; at the beginning of a sentence (which can be interpreted as the first word after the end of a sentence).</p>
 
-  %= kalamar_tut_query poliqarp => '<s>[orth=Der]'
+  %= doc_query poliqarp => '<s>[orth=Der]'
 
   <h4>Groups</h4>
 
@@ -174,94 +174,94 @@
 
   <p>Alternations allow for searching alternative segments or sequences of segments, similar to the paradigmatic operator. You already have seen that you can search for both sequences of <code>der alte Mann</code> and <code>der junge Mann</code> by typing in:</p>
 
-  %= kalamar_tut_query poliqarp => 'der [orth=alte | orth=junge] Mann'
+  %= doc_query poliqarp => 'der [orth=alte | orth=junge] Mann'
 
   <p>However, this formulation has problems in case you want to search for alternations of sequences rather than terms. If you want to search for both sequences of <code>dem jungen Mann</code> and <code>der alte Mann</code> you can use syntagmatic alternations and groups:</p>
 
-  %= kalamar_tut_query poliqarp => '(dem jungen | der alte) Mann'
+  %= doc_query poliqarp => '(dem jungen | der alte) Mann'
 
   <p>The pipe symbol works the same way as with the paradigmatic alternation, but supports sequences of different length as operands. The above query for <code>der alte Mann</code> and <code>der junge Mann</code> can therefor be reformulated as:</p>
 
-  %= kalamar_tut_query poliqarp => 'der (junge | alte) Mann'
+  %= doc_query poliqarp => 'der (junge | alte) Mann'
 
   <h4 id="syntagmatic-operators-repetitions">Repetition</h4>
 
-  <p>Repetitions in Poliqarp are realized as in <%= kalamar_tut_link_to 'regular expressions', '/tutorial/regular-expressions' %>, by giving quantifieres in curly brackets.</p>
+  <p>Repetitions in Poliqarp are realized as in <%= doc_link_to 'regular expressions', 'ql', 'regexp' %>, by giving quantifieres in curly brackets.</p>
   <p>To search for a sequence of three occurrences of <code>der</code>, you can formulate your query in any of the following ways - they will have the same results:</p>
 
-  %= kalamar_tut_query poliqarp => 'der der der'
-  %= kalamar_tut_query poliqarp => 'der{3}'
-  %= kalamar_tut_query poliqarp => '[orth=der]{3}'
+  %= doc_query poliqarp => 'der der der'
+  %= doc_query poliqarp => 'der{3}'
+  %= doc_query poliqarp => '[orth=der]{3}'
 
   <p>In difference to regular expressions, the repetition operation won't refer to the match but to the pattern given. So the following query will give you a sequence of three words having the term <code>der</code> as a substring - but the words don't have to be identical. The following query for example will match a sequence of three words all starting with <code>la</code>.</p>
 
-  %= kalamar_tut_query poliqarp => '"la.*?"/i{3}'
+  %= doc_query poliqarp => '"la.*?"/i{3}'
 
   <p>The same is true for annotations. The following query will find a sequence of 3 to 4 adjectives as annotated by the TreeTagger foundry, that is preceded by the lemma <code>ein</code> as annotated by the default foundry and followed by a noun as annotated by the XIP foundry. The adjectives do not have to be identical though.</p>
 
-  %= kalamar_tut_query poliqarp => '[base=ein][tt/p=ADJA]{3,4}[xip/p=NOUN]'
+  %= doc_query poliqarp => '[base=ein][tt/p=ADJA]{3,4}[xip/p=NOUN]'
 
   <p>In addition to numbered quantities, it is also possible to pass repetition information as Kleene operators <code>?</code>, <code>+</code>, and <code>+</code>.</p>
 
   <p>To search for a sequence of the lemma <code>der</code> followed by the lemma <code>baum</code> as annotated by the base foundry, but allowing an optional adjective as annotated by the TreeTagger foundry in between, you can search for:</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]?[base=Baum]'
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]?[base=Baum]'
 
   <p>This query is identical to the numbered quantification of:</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]{,1}[base=Baum]'
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]{,1}[base=Baum]'
 
   <p>To search for the same sequences but with unlimited adjectives as annotated by the TreeTagger foundry in between, you can use the Kleene Star:</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]*[base=Baum]'
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]*[base=Baum]'
 
   <p>And to search for this sequence but with at least one adjective in between, you can use the Kleene Plus (all queries are identical):</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]+[base=Baum]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]{1,}[base=Baum]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA][tt/pos=ADJA]*[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]+[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]{1,}[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][tt/pos=ADJA][tt/pos=ADJA]*[base=Baum]', cutoff => 1
 
   <blockquote class="warning">
     <p>Repetition operators like <code>{,4}</code>, <code>?</code>, and <code>*</code> make segments or groups of segments optional. In case these queries are used separated and not in a sequence (and there are no mandatory segments in the query), you will be warned by the system that your query won't be treated as optional.</p>
     <p>Keep in mind that optionality may be somehow <i>inherited</i>, for example when you search for <code>(junge|alte)?|tote</code>, one segment of the alternation is optional, which makes the whole query optional as well.</p>
   </blockquote>
 
-  <p>Repetition can also be used to express distances between segments by using <a href="#empty-segments">empty segments</a>.</p>
+  <p>Repetition can also be used to express distances between segments by using <%= doc_link_to 'empty segments', 'ql', 'poliqarp-plus#empty-segments' %>.</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][][base=Baum]'
-  %= kalamar_tut_query poliqarp => '[base=die][]{2}[base=Baum]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '[base=die][]{2,}[base=Baum]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '[base=die][]{,3}[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][][base=Baum]'
+  %= doc_query poliqarp => '[base=die][]{2}[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][]{2,}[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][]{,3}[base=Baum]', cutoff => 1
 
   <p>Of course, Kleene operators can be used with empty segments as well.</p>
 
-  %= kalamar_tut_query poliqarp => '[base=die][]?[base=Baum]'
-  %= kalamar_tut_query poliqarp => '[base=die][]*[base=Baum]', cutoff => 1
-  %= kalamar_tut_query poliqarp => '[base=die][]+[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][]?[base=Baum]'
+  %= doc_query poliqarp => '[base=die][]*[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => '[base=die][]+[base=Baum]', cutoff => 1
     
   <h4>Position</h4>
 
-  <p>Sequences as shown above can all be nested in further complex queries and treated as subqueries (see <a href="#tut-class-operators">class operators</a> on how to later access these subqueries directly).</p>
+  <p>Sequences as shown above can all be nested in further complex queries and treated as subqueries (see <%= doc_link_to 'class operators', 'ql', 'poliqarp-plus#class-operators' %> on how to later access these subqueries directly).</p>
   <p>Positional operators compare two matches of subqueries and will match, in case a certain condition regarding the position of both is true.</p>
   <p>The <code>contains()</code> operation will match, when a second subquery matches inside the span of a first subquery.</p>
 
-  %= kalamar_tut_query poliqarp => 'contains(<s>, [tt/p=KOUS])', cutoff => 1
+  %= doc_query poliqarp => 'contains(<s>, [tt/p=KOUS])', cutoff => 1
 
   <p>The <code>startsWith()</code> operation will match, when a second subquery matches at the beginning of the span of a first subquery.</p>
 
-  %= kalamar_tut_query poliqarp => 'startsWith(<s>, [tt/p=KOUS])', cutoff => 1
+  %= doc_query poliqarp => 'startsWith(<s>, [tt/p=KOUS])', cutoff => 1
 
   <p>The <code>endsWith()</code> operation will match, when a second subquery matches at the end of the span of a first subquery.</p>
 
-  %= kalamar_tut_query poliqarp => 'endsWith(<s>, [opennlp/p=NN])', cutoff => 1
+  %= doc_query poliqarp => 'endsWith(<s>, [opennlp/p=NN])', cutoff => 1
 
   <p>The <code>matches()</code> operation will match, when a second subquery has the exact same span of a first subquery.</p>
 
-  %= kalamar_tut_query poliqarp => 'matches(<s>,[tt/p=CARD][tt/p="N.*"])', cutoff => 1
+  %= doc_query poliqarp => 'matches(<s>,[tt/p=CARD][tt/p="N.*"])', cutoff => 1
 
   <p>The <code>overlaps()</code> operation will match, when a second subquery has an overlapping span with the first subquery.</p>
 
-  %= kalamar_tut_query poliqarp => 'overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])', cutoff => 1
+  %= doc_query poliqarp => 'overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])', cutoff => 1
 
   <blockquote class="warning">
     <p>Positional operators are still experimental and may change in certain aspects in the future (although the behaviour defined is intended to be stable). There is also known incorrect behaviour which will be corrected in future versions.</p>
@@ -282,9 +282,9 @@
 
   <p>Classes are used to group sub matches by surrounding curly brackets and a class number <code>{1:...}</code>. Classes can be used to refer to sub matches in a query, similar to captures in regular expressions. In Poliqarp+ classes have multiple purposes, with highlighting being the most intuitive one:</p>
 
-  %= kalamar_tut_query poliqarp => 'der {1:{2:[]} Mann}'
+  %= doc_query poliqarp => 'der {1:{2:[]} Mann}'
 
-  %#= kalamar_tut_query poliqarp => 'der {1:{2:[]{1,4}} {3:Baum}} {4:[]}'
+  %#= doc_query poliqarp => 'der {1:{2:[]{1,4}} {3:Baum}} {4:[]}'
 
   <p>In KorAP classes can be defined from 1 to 128. In case a class number is dismissed, the class defaults to the class number 1: <code>{...}</code> is equal to <code>{1:...}</code>.</p>
 
@@ -292,23 +292,23 @@
 
   <p>Based on classes, matches may be modified. The <code>focus()</code> operator restricts the span of a match to the boundary of a certain class.</p>
 
-  %= kalamar_tut_query poliqarp => 'focus(der {Baum})'
+  %= doc_query poliqarp => 'focus(der {Baum})'
 
   <p>The query above will search for the sequence <code>der Baum</code> but the match will be limited to <code>Baum</code>. You can think of <code>der</code> in this query as a positive look-behind zero-length assertion in regular expressions.</p>
 
   <p>But focus is way more useful if you are searching for matches without knowing the surface form. For example, to find all terms between the words &quot;der&quot; and &quot;Mann&quot; you can search:</p>
 
-  %= kalamar_tut_query poliqarp => 'focus(der {[]} Mann)'
+  %= doc_query poliqarp => 'focus(der {[]} Mann)'
 
   <p>This will limit the match to all interesting terms in between &quot;der&quot; and &quot;Mann&quot;. Or you may want to search for all words following the sequence &quot;der alte und&quot; immediately:</p>
 
-  %= kalamar_tut_query poliqarp => 'focus(der alte und {[]})'
+  %= doc_query poliqarp => 'focus(der alte und {[]})'
 
   <!--
       <p><code>focus()</code> is especially useful if you are searching for matches in certain areas, for example in quotes using positional operators.
 While not being interested in the whole quote as a match, you can focus on what's really relevant to you.</p>
 
-      %= kalamar_tut_query poliqarp => 'focus(1:contains(er []{,10} sagte, 1{Baum}))'
+      %= doc_query poliqarp => 'focus(1:contains(er []{,10} sagte, 1{Baum}))'
       -->
 
   <p>In case a class number is dismissed, the focus operator defaults to the class number 1: <code>focus(...)</code> is equal to <code>focus(1: ...)</code>.</p>
diff --git a/templates/tutorial/foundries.html.ep b/templates/tutorial/foundries.html.ep
deleted file mode 100644
index 04f25cc..0000000
--- a/templates/tutorial/foundries.html.ep
+++ /dev/null
@@ -1,73 +0,0 @@
-% content main => begin
-
-<h2>KorAP-Tutorial: Foundries and Layers</h2>
-
-<p><%= kalamar_tut_link_to 'Back to Index', '/tutorial' %></p>
-
-<p>KorAP provides access to multiple levels of annotations originating from multiple resources, so called <i>foundries</i>.</p>
-
-<section name="cheatsheet">
-  <ul>
-    <li><strong>base</strong>
-      <ul>
-	<li>Supports two types of spans: <strong>&lt;s&gt;</strong> for sentences and <strong>&lt;p&gt;</strong> for paragraphs - this will likely change in the next index version. These spans lack prefix information!</li>
-      </ul>
-    </li>
-    <li><strong>cnx</strong>
-      <ul>
-	<li><strong>l</strong> (Token:Lemma): All lemmas are written in lower case. Composita are split, e.g. the token &quot;Leitfähigkeit&quot; is matched by the lemmas &quot;leit&quot; and &quot;fähigkeit&quot; - not by the lemma &quot;leitfähigkeit&quot;</li>
-	<li><strong>p</strong> (Token:Part of Speech): All pos infos are written in capital letters and are based on STTS</li>
-	<li><strong>syn</strong> (Token:Syntactical information): Includes token based information like @PREMOD, @NH, @MAIN ...</li>
-	<li><strong>m</strong> (Token:Morphosyntactical information): Includes information about tense (&quot;PRES&quot; ...), mode (&quot;IND&qut;), number (&quot;PL&quot; ...) etc.</li>
-	<li><strong>c</strong> (Span:Phrases): Only nominal phrases are available and all nominal phrases are written in lower case (&quot;np&quot;)</li>
-      </ul>
-    </li>
-    <li><strong>corenlp</strong>
-      <ul>
-	<li><strong>ne_hgc_175m_600</strong> (Token:Named Entity): Contains named entities like &quot;I-PER&quot;, &quot;I-ORG&quot; etc. </li>
-	<li><strong>ne_dewac_175_175m_600</strong> (Token:Named Entity): see above</li>
-      </ul>
-    </li>
-    <li><strong>tt</strong>
-      <ul>
-	<li><strong>l</strong> (Token:Lemma): All non-noun lemmas are written in lower case, nouns are written upper case. Composita stay intact (e.g. &quot;Normalbedingung&quot;)</li>
-	<li><strong>p</strong> (Token:Part of Speech): All pos infos are written in capital letters and are based on STTS</li>
-      </ul>
-    </li>
-    <li><strong>mate</strong>
-      <ul>
-	<li><strong>l</strong> (Token:Lemma): All lemmas are written in lower case. Composita stay intact (e.g. &quot;buchstabenbezeichnung&quot;)</li>
-	<li><strong>p</strong> (Token:Part of Speech): All pos infos are written in capital letters and are based on STTS</li>
-	<li><strong>m</strong> (Token:Morphosyntactical information): Includes information about tense (&quot;tense:pres&quot; ...), mode (&quot;mood:ind&qut;), number (&quot;number:pl&quot; ...), gender (&quot;gender:masc&quot; etc.</li>
-      </ul>
-    </li>
-    <li><strong>opennlp</strong>
-      <ul>
-	<li><strong>p</strong> (Token:Part of Speech): All pos infos are written in capital letters and are based on STTS</li>
-      </ul>
-    </li>
-    <li><strong>xip</strong>
-      <ul>
-	<li><strong>l</strong> (Token:Lemma): All non-noun lemmas are written in lower case, nouns are written upper case. Composita are split, e.g. the token &quot;Leitfähigkeit&quot; is matched by the lemmas &quot;leiten&quot; and &quot;Fähigkeit&quot; - and by a merged and pretty useless &quot;leitenfähigkeit&quot; (This is going to change)</li>
-	<li><strong>p</strong> (Token:Part of Speech): All pos infos are written in capital letters and are based on STTS</li>
-	<li><strong>c</strong> (Span:Phrases): Some phrases to create sentences, all upper case (&quot;NP&quot;, &quot;NPA&quot;, &quot;NOUN&quot;, &quot;VERB&quot;, &quot;PREP&quot;, &quot;AP&quot; ...)</li>      
-      </ul>
-    </li>
-  </ul>
-</section>
-
-<h3>Default Foundries</h3>
-
-<p>For queries on specific layers without given foundries, KorAP provides default foundries, that can be overwritten by user configurations. The default foundries apply to the following layers:</p>
-
-<ul>
-  <li><strong>orth</strong>: opennlp</li>
-  <li><strong>lemma</strong>: tt</li>
-  <li><strong>pos</strong>: tt</li>
-</ul>
-
-<blockquote>
-  <p>In the Lucene backend, the <strong>orth</strong> layer can only be bound to a specific foundry, as only one tokenization is supported.</p>
-</blockquote>
-
-% end
diff --git a/templates/tutorial/index.html.ep b/templates/tutorial/index.html.ep
deleted file mode 100644
index a7739ac..0000000
--- a/templates/tutorial/index.html.ep
+++ /dev/null
@@ -1,76 +0,0 @@
-%# https://letsencrypt.org/howitworks/
-
-% content main => begin
-
-%# Store the id of an active section in the session, so the system is able to directly scroll to the relevant section
-%# This should be stored when clicking on a specific query
-%# but the remembered section contains the id - not the query
-
-<h2>KorAP-Tutorial</h2>
-
-<p>
- <%= kalamar_tut_link_to 'Poliqarp+-Tutorial', '/tutorial/poliqarp-plus' %>
- <%= kalamar_tut_link_to 'Foundry Overview', '/tutorial/foundries' %>
- <%= kalamar_tut_link_to 'Regular Expressions', '/tutorial/regular-expressions' %>
- <%= kalamar_tut_link_to 'Wildcards', '/tutorial/wildcards' %>
-</p>
-
-<!--
-<p>Links to Blog, FAQ, About, Contact ...</p>
-<ul>
-  <li>Introduction to KorAP</li>
-  <li>How to use Annis QL?</li>
-  <li>How to use Cosmas-II QL?</li>
-  <li>How to use CQL?</li>
-  <li>API</li>
-  <li>Search</li>
-</ul>
--->
-
-<section id="tut-intro">
-  <h3>Frontend Features</h3>
-  <p>This frontend differs to the <%= link_to 'official frontend', 'http://korap.ids-mannheim.de/app/', target => '_blank' %> by providing a serialization view, an integrated tutorial, a comparison view for morphological annotations, and an autocompletion for closed annotations (type in <%= kalamar_tut_link_to 'foundry prefixes', '/tutorial/foundries' %> like <code>cnx/</code>).</p>
-</section>
-
-
-<section id="tut-examples">
-
-<h3>Example Queries</h3>
-
-%# Tests:
-%# [is => 'json_pointer', 'result']
-%# [ok => 'json_pointer']
-%# [isnt => 'json_pointer', 'result']
-%# [not_ok => 'json_pointer']
-
-<p><strong>Poliqarp</strong>: Find all occurrences of the lemma &quot;baum&quot; as annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
-%= kalamar_tut_query poliqarp => '[base=Baum]', 'tests' => [[is => '/query', 'tokens:tt/l:Baum'],[is => '/request/query/wrap/layer', 'lemma'],[is => '/request/query/wrap/foundry', 'tt'], [ok => '/matches/10']]
-
-<p><strong>Poliqarp</strong>: Find all sequences of adjectives as annotated by Treetagger, that are repeated 3 to 5 times in a row.</p>
-%= kalamar_tut_query poliqarp => '[tt/p=ADJA]{3,5}', 'tests' => [[is => '/query', 'spanRepetition(tokens:tt/p:ADJA{3,5})'], [is => '/request/query/operation', 'operation:repetition'],[is => '/request/query/operands/0/wrap/foundry', 'tt'], [ok => '/matches/5']]
-
-<p><strong>Cosmas-II</strong>: Find all occurrences of the words &quot;der&quot; and &quot;Baum&quot;, in case they are in a maximum distance of 5 tokens. The order is not relevant.</p>
-%= kalamar_tut_query cosmas2 => 'der /w5 Baum', 'tests' => [[is => '/query', 'shrink(129: spanDistance({129: tokens:s:der}, {129: tokens:s:Baum}, [(w[0:5], notOrdered, notExcluded)]))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/@type', 'korap:reference'],[is => '/request/query/operands/0/operands/1/operation', 'operation:class'], [is => '/itemsPerPage', 25], [ok => '/matches/20'], [is => '/matches/4/corpusID', 'WPD'], [is => '/matches/12/corpusID', 'WPD']]
-
-<p><strong>Cosmas-II</strong>: Find all sequences of a word starting with a &quot;d&quot; (using a wildcard) followed by an adjective as annotated in the mate foundry, followed by the word &quot;Baum&quot; (ignore the case), that is in a sentence element annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
-<p><em>Be aware</em>: Minor incompatibilities with implemented languages may be announced with warnings.</p>
-%= kalamar_tut_query cosmas2 => 'd* MORPH(mate/p=ADJA) $Baum #IN #ELEM(s)', 'tests' => [[ok => '/matches/3'], [is => '/query', 'shrink(130: {131: spanContain({129: <tokens:s />}, {130: spanNext(spanNext(SpanMultiTermQueryWrapper(tokens:s:d*), tokens:mate/p:ADJA), tokens:i:baum)})})'], [is => '/request/query/@type', 'korap:reference'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/operands/0/operation', 'operation:position'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operation', 'operation:sequence'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/type', 'type:wildcard'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key', 'ADJA'], [is => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/foundry', 'mate'], [ok => '/request/query/operands/0/operands/0/operands/1/operands/0/operands/2/wrap/caseInsensitive'], [ok => '/matches/5']]
-
-<p><strong>Poliqarp+</strong>: Find all nominal phrases as annotated using Connexor, that contain an adverb as annotated by OpenNLP, that is annotated as something starting with an &quot;A&quot; using regular expressions in Treetagger.</p>
-%= kalamar_tut_query poliqarp => 'contains(<cnx/c=np>,{[opennlp/p=ADV & tt/p="A.*"]})', cutoff => 1, 'tests' => [[is => '/query', 'spanContain(<tokens:cnx/c:np />, {1: spanSegment(tokens:opennlp/p:ADV, SpanMultiTermQueryWrapper(tokens:/tt/p:A.*/))})'], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/frames/0', 'frames:contains'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/layer', 'c'], [is => '/request/query/operands/0/foundry', 'cnx'], [is => '/request/query/operands/0/key', 'np'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/foundry', 'opennlp'], [is => '/request/query/operands/1/operands/0/wrap/operands/0/layer', 'p'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/foundry', 'tt'],  [is => '/request/query/operands/1/operands/0/wrap/operands/1/type', 'type:regex'], [is => '/request/query/operands/1/operands/0/wrap/operands/1/key', 'A.*'], [ok => '/matches/5']]
-
-<p><strong>Poliqarp+</strong>: Find all sentences as annotated by the base foundry that start with a sequence of one token in present tense as annotated by Connexor and the lemma &quot;die&quot; annotated by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>. Highlight both terms of the sequence.</p>
-%= kalamar_tut_query poliqarp => 'startswith(<s>, {1:[cnx/m=PRES]}{2:[base=die]})', cutoff => 1, tests => [[is => '/query', 'spanStartsWith(<tokens:s />, spanNext({1: tokens:cnx/m:PRES}, {2: tokens:tt/l:die}))'], [is => '/request/meta/startPage', 1], [is => '/request/query/operation', 'operation:position'], [is => '/request/query/operands/0/@type','korap:span'], [is => '/request/query/operands/1/operands/0/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operation', 'operation:class'], [is => '/request/query/operands/1/operands/1/operands/0/wrap/foundry', 'tt'], [ok => '/matches/4']]
-
-<p><strong>Poliqarp+</strong>: Find all sequences of an article, followed by three to four adjectives and a noun as annotated by the Treetagger foundry, that finish a sentence. Highlight all parts of the sequence.</p>
-%= kalamar_tut_query poliqarp => 'focus(3:endswith(<s>,{3:[tt/p=ART]{1:{2:[tt/p=ADJA]{3,4}}[tt/p=NN]}}))', cutoff => 1, 'tests' => [[is => '/query', 'shrink(3: spanEndsWith(<tokens:s />, {3: spanNext(tokens:tt/p:ART, {1: spanNext({2: spanRepetition(tokens:tt/p:ADJA{3,4})}, tokens:tt/p:NN)})}))'], [is => '/request/query/operation', 'operation:focus'], [is => '/request/query/operands/0/frames/0', 'frames:endswith'], [ok => '/matches/3'], [is => '/matches/4/corpusID', 'WPD']]
-
-<p><strong>Annis</strong>: Find all occurrences of the sequence of two tokens annotated as adverbs by the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.</p>
-%= kalamar_tut_query annis => 'pos="ADV" & pos="ADV" & #1 . #2', 'tests' => [[is => '/query', 'spanNext(tokens:tt/p:ADV, tokens:tt/p:ADV)'], [is => '/request/query/operands/0/wrap/foundry', 'tt'], [is => '/request/query/operands/1/wrap/foundry', 'tt'], [ok => '/matches/5'], [ok => '/matches/15'], [is => '/matches/15/corpusID', 'WPD']]
-
-<p><strong>CQL</strong>: Find all occurrences of the sequence &quot;der alte Mann&quot;.</p>
-%= kalamar_tut_query cql => '"der alte Mann"', 'tests' => [[is => '/query', 'spanNext(spanNext(tokens:s:der, tokens:s:alte), tokens:s:Mann)'], [is => '/request/query/operation', 'operation:sequence'],[is => '/request/query/operands/0/wrap/key', 'der'],[is => '/request/query/operands/1/wrap/key', 'alte'],[is => '/request/query/operands/2/wrap/key', 'Mann'], [ok => '/matches/5'], [ok => '/matches/5']]
-
-</section>
-
-% end
diff --git a/templates/tutorial/poliqarp-plus.html.ep b/templates/tutorial/poliqarp-plus.html.ep
deleted file mode 100644
index e26f707..0000000
--- a/templates/tutorial/poliqarp-plus.html.ep
+++ /dev/null
@@ -1,340 +0,0 @@
-% content main => begin
-
-<h2>KorAP-Tutorial: Poliqarp+</h2>
-
-<p><%= kalamar_tut_link_to 'Back to Index', '/tutorial' %></p>
-
-<p>The following tutorial introduces all features provided by our version of the Poliqarp Query Language and some KorAP specific extensions.</p>
-
-<section id="tut-segments">
-<h3>Simple Segments</h3>
-
-<p>The atomic elements of Poliqarp queries are segments. Most of the time segments represent words and can be simply queried:</p>
-%# footnote: In the polish national corpus, Poliqarp can join multiple segments when identifying a single word.
-
-%= kalamar_tut_query poliqarp => 'Baum'
-
-<p>Sequences of simple segments are expressed using a space delimiter:</p>
-
-%= kalamar_tut_query poliqarp => 'der Baum'
-
-<p>Simple segments always refer to the surface form of a word. To search for surface forms without case sensitivity, you can use the <code>/i</code> flag.</p>
-
-%= kalamar_tut_query poliqarp => 'laufen/i'
-
-<p>The query above will find all occurrences of <code>laufen</code> irrespective of the capitalization of letters, so <code>wir laufen</code> will be find as well as <code>das Laufen</code> and even <code>&quot;GEH LAUFEN!&quot;</code>.
-</section>
-
-<section id="tut-regexp">
-  <h3>Regular Expressions</h3>
-
-<p>Segments can also be queried using <%= kalamar_tut_link_to 'regular expressions', '/tutorial/regular-expressions' %> - by surrounding the segment with double quotes.</p>
-
-%= kalamar_tut_query poliqarp => '"l(au|ie)fen"'
-
-<p>Regular expression segments will always match the whole segment, meaning the above query will find words starting with <code>l</code> and ending with <code>n</code>. To support subqueries, you can use the <code>/x</code> flag.
-
-%= kalamar_tut_query poliqarp => '"l(au|ie)fen"/x', cutoff => 1
-
-<p>The <code>/x</code> will search for all segments that contain a sequence of characters the regular expression matches. That means the above query is equivalent to:</p>
-
-%= kalamar_tut_query poliqarp => '".*?l(au|ie)fen.*?"', cutoff => 1
-
-<p>The <code>/x</code> flag can also be used in conjuntion with strict expressions to search for substrings:</p>
-
-%= kalamar_tut_query poliqarp => 'trenn/xi', cutoff => 1
-
-<p>The above query will find all occurrences of segments including the string <code>trenn</code> case insensitive, like &quot;Trennung&quot;, &quot;unzertrennlich&quot;, or &quot;Wettrennen&quot;.</p>
-
-<blockquote class="warning">
-  <p>Beware: These kinds of queries (with prepended <code>.*</code> expressions) are extremely slow!</p>
-</blockquote>
-
-<p>You can again apply the <code>/i</code> flag to search case insensitive.</p>
-
-%= kalamar_tut_query poliqarp => '"l(au|ie)fen"/xi', cutoff => 1
-
-</section>
-
-<section id="tut-complex">
-  <h3>Complex Segments</h3>
-
-<p>Complex segments are expressed in square brackets and contain additional information on the resource of the term under scrutiny by providing key/value pairs, separated by an equal-sign.</p>
-
-<p>The KorAP implementation of Poliqarp provides three special segment keys: <code>orth</code> for surface forms, <code>base</code> for lemmata, and <code>pos</code> for Part-of-Speech. The following complex query finds all surface forms of <code>Baum</code>.</p>
-
-%# There are more special keys in Poliqarp, but KorAP doesn't provide them.
-
-%= kalamar_tut_query poliqarp => '[orth=Baum]'
-
-<p>The query is thus equivalent to:</p>
-
-%= kalamar_tut_query poliqarp => 'Baum'
-
-<p>Complex segments expect simple expressions as values, meaning that the following expression is valid as well:</p>
-
-%= kalamar_tut_query poliqarp => '[orth="l(au|ie)fen"/xi]', cutoff => 1
-
-<p>Another special key is <code>base</code>, refering to the lemma annotation of the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.
-The following query finds all occurrences of segments annotated as the lemma <code>Baum</code> by the default foundry.</p>
-
-%= kalamar_tut_query poliqarp => '[base=Baum]'
-
-<p>The third special key is <code>pos</code>, refering to the part-of-speech annotation of the <%= kalamar_tut_link_to 'default foundry', '/tutorial/foundries' %>.
-The following query finds all attributive adjectives:</p>
-
-%= kalamar_tut_query poliqarp => '[pos=ADJA]'
-
-<p>Complex segments requesting further token annotations can have keys following the <code>foundry/layer</code> notation.
-For example to find all occurrences of plural words in the mate foundry, you can search using the following query:</p>
-
-%= kalamar_tut_query poliqarp => '[mate/m=number:pl]'
-
-<h4>Negation</h4>
-<p>Negation of terms in complex expressions can be expressed by prepending the equal sign with an exclamation mark or by prepending the expression with one.</p>
-
-%= kalamar_tut_query poliqarp => '[pos!=ADJA]'
-%= kalamar_tut_query poliqarp => '[!pos=ADJA]'
-
-<blockquote class="warning">
-  <p>Beware: Negated complex segments can't be searched solely in the Lucene index.
-    However, they work in case they are part of a <a href="#tut-syntagmatic-operators-sequence">sequence</a>.</p>
-</blockquote>
-
-<h4 id="empty-segments">Empty Segments</h4>
-
-<p>A special segment is the empty segment, that matches every word in the index.</p>
-
-%= kalamar_tut_query poliqarp => '[]'
-
-<p>Empty segments are useful to express distances of words by using <a href="tut-syntagmatic-operators-repetitions">repetitions</a>.</p>
-
-<blockquote class="warning">
-  <p>Beware: Empty segments can't be searched solely in the Lucene index.
-    However, they work in case they are part of a <a href="#tut-syntagmatic-operators-sequence">sequence</a>.</p>
-</blockquote>
-
-</section>
-
-<section id="tut-spans">
-<h3>Span Segments</h3>
-
-<p>Not all segments are bound to words - some are bound to concepts spanning multiple words, for example noun phrases, sentences, or paragraphs.
-Span segments can be searched for using angular brackets instead of square brackets.</p>
-
-%= kalamar_tut_query poliqarp => '<xip/c=INFC>'
-
-<p>Otherwise they can be treated in exactly the same way as simple or complex segments.</p>
-
-</section>
-
-
-<section id="tut-paradigmatic-operators">
-<h3>Paradigmatic Operators</h3>
-
-<p>A complex segment can have multiple properties a token has to fulfill.
-For example to search for all words with the surface form <code>laufe</code> (no matter if capitalized or not) that have the lemma <code>lauf</code> (and not, for example, <code>laufen</code>, which would indicate a verb or a gerund), you can search for:</p>
-
-%= kalamar_tut_query poliqarp => '[orth=laufe/i & base=Lauf]'
-
-<p>The ampersand combines multiple properties with a logical AND.
-Terms of the complex segment can be negated as introduced before.</p>
-
-%= kalamar_tut_query poliqarp => '[orth=laufe/i & base!=Lauf]'
-
-<p>The following query is therefore equivalent:</p>
-
-%= kalamar_tut_query poliqarp => '[orth=laufe & !base=Lauf]'
-
-<p>Alternatives can be expressed by using the pipe symbol:</p>
-
-%= kalamar_tut_query poliqarp => '[base=laufen | base=gehen]'
-
-<p>All these sub expressions can be grouped using round brackets to form
-complex boolean expressions:</p>
-
-%= kalamar_tut_query poliqarp => '[(base=laufen | base=gehen) & tt/pos=VVFIN]'
-</section>
-
-
-<section id="tut-syntagmatic-operators">
-<h3>Syntagmatic Operators</h3>
-
-<h4 id="tut-syntagmatic-operators-sequence">Sequences</h4>
-
-<p>Sequences can be used to search for segments in order.
-For example to search for the word &quot;alte&quot; preceded by &quot;der&quot; and followed by &quot;Mann&quot;, you can simple search for the sequence of simple expressions separated by whitespaces.</p>
-
-%= kalamar_tut_query poliqarp => 'der alte Mann'
-
-<p>However, you can obviously search using complex segments as well:</p>
-
-%= kalamar_tut_query poliqarp => '[orth=der][orth=alte][orth=Mann]'
-
-<p>Now you may see the benefit of the empty segment to search for words you don't know:</p>
-
-%= kalamar_tut_query poliqarp => '[orth=der][][orth=Mann]'
-
-<p>You are also able to mix segments and spans in sequences, for example to search for the word &quot;Der&quot; at the beginning of a sentence (which can be interpreted as the first word after the end of a sentence).</p>
-
-%= kalamar_tut_query poliqarp => '<s>[orth=Der]'
-
-<h4>Groups</h4>
-
-<h4>Alternation</h4>
-
-<p>Alternations allow for searching alternative segments or sequences of segments,
-similar to the paradigmatic operator.
-You already have seen that you can search for both sequences of
-<code>der alte Mann</code> and <code>der junge Mann</code> by typing in:</p>
-
-%= kalamar_tut_query poliqarp => 'der [orth=alte | orth=junge] Mann'
-
-<p>However, this formulation has problems in case you want to search for alternations of sequences rather than terms. If you want to search for both sequences of <code>dem jungen Mann</code> and <code>der alte Mann</code> you can use syntagmatic alternations and groups:</p>
-
-%= kalamar_tut_query poliqarp => '(dem jungen | der alte) Mann'
-
-<p>The pipe symbol works the same way as with the paradigmatic alternation, but supports sequences of different length as operands. The above query for <code>der alte Mann</code> and <code>der junge Mann</code> can therefor be reformulated as:</p>
-
-%= kalamar_tut_query poliqarp => 'der (junge | alte) Mann'
-
-<h4 id="tut-syntagmatic-operators-repetitions">Repetition</h4>
-
-<p>Repetitions in Poliqarp are realized as in <%= kalamar_tut_link_to 'regular expressions', '/tutorial/regular-expressions' %>, by giving quantifieres in curly brackets.</p>
-<p>To search for a sequence of three occurrences of <code>der</code>, you can formulate your query in any of the following ways - they will have the same results:</p>
-
-%= kalamar_tut_query poliqarp => 'der der der'
-%= kalamar_tut_query poliqarp => 'der{3}'
-%= kalamar_tut_query poliqarp => '[orth=der]{3}'
-
-<p>In difference to regular expressions, the repetition operation won't refer to the match but to the pattern given. So the following query will give you a sequence of three words having the term <code>der</code> as a substring - but the words don't have to be identical. The following query for example will match a sequence of three words all starting with <code>la</code>.</p>
-
-%= kalamar_tut_query poliqarp => '"la.*?"/i{3}'
-
-<p>The same is true for annotations. The following query will find a sequence of 3 to 4 adjectives as annotated by the TreeTagger foundry, that is preceded by the lemma <code>ein</code> as annotated by the default foundry and followed by a noun as annotated by the XIP foundry. The adjectives do not have to be identical though.</p>
-
-%= kalamar_tut_query poliqarp => '[base=ein][tt/p=ADJA]{3,4}[xip/p=NOUN]'
-
-<p>In addition to numbered quantities, it is also possible to pass repetition information as Kleene operators <code>?</code>, <code>+</code>, and <code>+</code>.</p>
-
-<p>To search for a sequence of the lemma <code>der</code> followed by the lemma <code>baum</code> as annotated by the base foundry, but allowing an optional adjective as annotated by the TreeTagger foundry in between, you can search for:</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]?[base=Baum]'
-
-<p>This query is identical to the numbered quantification of:</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]{,1}[base=Baum]'
-
-<p>To search for the same sequences but with unlimited adjectives as annotated by the TreeTagger foundry in between, you can use the Kleene Star:</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]*[base=Baum]'
-
-<p>And to search for this sequence but with at least one adjective in between, you can use the Kleene Plus (all queries are identical):</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]+[base=Baum]', cutoff => 1
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA]{1,}[base=Baum]', cutoff => 1
-%= kalamar_tut_query poliqarp => '[base=die][tt/pos=ADJA][tt/pos=ADJA]*[base=Baum]', cutoff => 1
-
-<blockquote class="warning">
-  <p>Repetition operators like <code>{,4}</code>, <code>?</code>, and <code>*</code> make segments or groups of segments optional. In case these queries are used separated and not in a sequence (and there are no mandatory segments in the query), you will be warned by the system that your query won't be treated as optional.</p>
-  <p>Keep in mind that optionality may be somehow <i>inherited</i>, for example when you search for <code>(junge|alte)?|tote</code>, one segment of the alternation is optional, which makes the whole query optional as well.</p>
-</blockquote>
-
-<p>Repetition can also be used to express distances between segments by using <a href="#empty-segments">empty segments</a>.</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][][base=Baum]'
-%= kalamar_tut_query poliqarp => '[base=die][]{2}[base=Baum]', cutoff => 1
-%= kalamar_tut_query poliqarp => '[base=die][]{2,}[base=Baum]', cutoff => 1
-%= kalamar_tut_query poliqarp => '[base=die][]{,3}[base=Baum]', cutoff => 1
-
-<p>Of course, Kleene operators can be used with empty segments as well.</p>
-
-%= kalamar_tut_query poliqarp => '[base=die][]?[base=Baum]'
-%= kalamar_tut_query poliqarp => '[base=die][]*[base=Baum]', cutoff => 1
-%= kalamar_tut_query poliqarp => '[base=die][]+[base=Baum]', cutoff => 1
-
-<h4>Position</h4>
-
-<p>Sequences as shown above can all be nested in further complex queries and treated as subqueries (see <a href="#tut-class-operators">class operators</a> on how to later access these subqueries directly).</p>
-<p>Positional operators compare two matches of subqueries and will match, in case a certain condition regarding the position of both is true.</p>
-<p>The <code>contains()</code> operation will match, when a second subquery matches inside the span of a first subquery.</p>
-
-%= kalamar_tut_query poliqarp => 'contains(<s>, [tt/p=KOUS])', cutoff => 1
-
-<p>The <code>startsWith()</code> operation will match, when a second subquery matches at the beginning of the span of a first subquery.</p>
-
-%= kalamar_tut_query poliqarp => 'startsWith(<s>, [tt/p=KOUS])', cutoff => 1
-
-<p>The <code>endsWith()</code> operation will match, when a second subquery matches at the end of the span of a first subquery.</p>
-
-%= kalamar_tut_query poliqarp => 'endsWith(<s>, [opennlp/p=NN])', cutoff => 1
-
-<p>The <code>matches()</code> operation will match, when a second subquery has the exact same span of a first subquery.</p>
-
-%= kalamar_tut_query poliqarp => 'matches(<s>,[tt/p=CARD][tt/p="N.*"])', cutoff => 1
-
-<p>The <code>overlaps()</code> operation will match, when a second subquery has an overlapping span with the first subquery.</p>
-
-%= kalamar_tut_query poliqarp => 'overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])', cutoff => 1
-
-<blockquote class="warning">
-  <p>Positional operators are still experimental and may change in certain aspects in the future (although the behaviour defined is intended to be stable). There is also known incorrect behaviour which will be corrected in future versions.</p>
-  <p>Optional operands in position operators, like in <code>contains(&lt;s&gt;,[orth=Baum]*)</code>, have to be mandatory at the moment and will be reformulated to occur at least once.</p>
-  <p>This behaviour may change in the future.</p>
-</blockquote>
-
-<!--
-<blockquote>
-  <p>The KorAP implementation of Poliqarp also supports the postfix <code>within</code> operator, that works similar to the <code>contains()</code> operator, but is not nestable.</p>
-</blockquote>
--->
-
-</section>
-<section id="tut-class-operators">
-
-<h3>Class Operators</h3>
-
-<p>Classes are used to group sub matches by surrounding curly brackets and a class number <code>{1:...}</code>.
-Classes can be used to refer to sub matches in a query, similar to captures in regular expressions.
-In Poliqarp+ classes have multiple purposes, with highlighting being the most intuitive one:</p>
-
-%= kalamar_tut_query poliqarp => 'der {1:{2:[]} Mann}'
-
-%#= kalamar_tut_query poliqarp => 'der {1:{2:[]{1,4}} {3:Baum}} {4:[]}'
-
-<p>In KorAP classes can be defined from 1 to 128. In case a class number is dismissed, the class defaults to the class number 1: <code>{...}</code> is equal to <code>{1:...}</code>.</p>
-
-<h4>Match Modification</h4>
-
-<p>Based on classes, matches may be modified. The <code>focus()</code> operator restricts the span of a match to the boundary of a certain class.</p>
-
-%= kalamar_tut_query poliqarp => 'focus(der {Baum})'
-
-<p>The query above will search for the sequence <code>der Baum</code> but the match will be limited to <code>Baum</code>.
-You can think of <code>der</code> in this query as a positive look-behind zero-length assertion in regular expressions.</p>
-
-<p>But focus is way more useful if you are searching for matches without knowing the surface form. For example, to find all terms between the words &quot;der&quot; and &quot;Mann&quot; you can search:</p>
-
-%= kalamar_tut_query poliqarp => 'focus(der {[]} Mann)'
-
-<p>This will limit the match to all interesting terms in between &quot;der&quot; and &quot;Mann&quot;. Or you may want to search for all words following the sequence &quot;der alte und&quot; immediately:</p>
-
-%= kalamar_tut_query poliqarp => 'focus(der alte und {[]})'
-
-<!--
-<p><code>focus()</code> is especially useful if you are searching for matches in certain areas, for example in quotes using positional operators.
-While not being interested in the whole quote as a match, you can focus on what's really relevant to you.</p>
-
-%= kalamar_tut_query poliqarp => 'focus(1:contains(er []{,10} sagte, 1{Baum}))'
--->
-
-<p>In case a class number is dismissed, the focus operator defaults to the class number 1: <code>focus(...)</code> is equal to <code>focus(1: ...)</code>.</p>
-
-<blockquote class="warning">
-  <p>As numbers in curly brackets can be ambiguous in certain circumstances, for example <code>[]{3}</code> can be read as either &quot;any word repeated three times&quot; or &quot;any word followed by the number 3 highlighted as class number 1&quot;, numbers should always be expressed as <code>[orth=3]</code> for the latter case.</p>
-</blockquote>
-
-
-</section>
-
-% end
diff --git a/templates/tutorial/regular-expressions.html.ep b/templates/tutorial/regular-expressions.html.ep
deleted file mode 100644
index 4012089..0000000
--- a/templates/tutorial/regular-expressions.html.ep
+++ /dev/null
@@ -1,18 +0,0 @@
-% content main => begin
-
-<h2>KorAP-Tutorial: Regular Expressions</h2>
-
-<p><%= kalamar_tut_link_to 'Back to Index', '/tutorial' %></p>
-
-<p>The support for regular expressions in KorAP may be backend dependend. Below you can find the description for the respective backends.</p>
-
-<section id="tut-lucene">
-<h3>Lucene</h3>
-
-<blockquote>
-  <p>Description still missing.</p>
-</blockquote>
-
-</section>
-
-% end
diff --git a/templates/tutorial/wildcards.html.ep b/templates/tutorial/wildcards.html.ep
deleted file mode 100644
index 5086f78..0000000
--- a/templates/tutorial/wildcards.html.ep
+++ /dev/null
@@ -1,18 +0,0 @@
-% content main => begin
-
-<h2>KorAP-Tutorial: Wildcards</h2>
-
-<p><%= kalamar_tut_link_to 'Back to Index', '/tutorial' %></p>
-
-<p>The support for wildcard terms in KorAP may be backend dependend. Below you can find the description for the respective backends.</p>
-
-<section id="tut-lucene">
-<h3>Lucene</h3>
-
-<blockquote>
-  <p>Description still missing.</p>
-</blockquote>
-
-</section>
-
-% end
