diff --git a/dev/demo/export.html b/dev/demo/export.html
new file mode 100644
index 0000000..4de4ad5
--- /dev/null
+++ b/dev/demo/export.html
@@ -0,0 +1,161 @@
+ <!DOCTYPE html>
+<html>
+  <head>
+    <title>Export Demo</title>
+    <meta charset="utf-8" />
+    <link type="text/css" rel="stylesheet" href="../css/kalamar.css" />
+    <link type="text/css" rel="stylesheet" href="../css/kwic.css" />
+     
+    <script>//<![CDATA[
+
+  window.KorAP = window.KorAP || {};
+  KorAP.URL = '';
+
+    //]]></script>
+    <script data-main="export.js" src="../js/lib/require.js" async="async"></script>
+  </head>
+  <body>
+     <p>To run this demo start the <a href= https://korap.ids-mannheim.de/gerrit/admin/repos/KorAP/KalamarExportPlugin> Plugin Server</a> as Java Application or with the jar file in the /target folder.</p>
+ 
+      <div id="resultinfo" class="found"></div>
+      
+      <script>
+  
+KorAP.koralQuery = {
+  "matches":["..."],
+        "corpus":{
+        "@type": "koral:docGroup",
+        "operation": "operation:or", "operands": [{
+      "@type": "koral:docGroup",
+      "operation": "operation:and",
+      "operands": [
+        {
+          "@type": "koral:doc",
+          "key": "title",
+          "match": "match:eq",
+          "value": "Der Birnbaum",
+          "type": "type:string"
+        },
+        {
+          "@type": "koral:doc",
+          "key": "pubPlace",
+          "match": "match:eq",
+          "value": "Mannheim",
+          "type": "type:string"
+        },
+        {
+          "@type": "koral:docGroup",
+          "operation": "operation:or",
+          "operands": [
+            {
+              "@type": "koral:doc",
+              "key": "subTitle",
+              "match": "match:eq",
+              "value": "Aufzucht und Pflege",
+              "type": "type:string"
+            },
+            {
+              "@type": "koral:doc",
+              "key": "subTitle",
+              "match": "match:eq",
+              "value": "Gedichte",
+              "type": "type:string"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "@type": "koral:doc",
+      "key": "pubDate",
+      "match": "match:geq",
+      "value": "2015-03-05",
+      "type": "type:date",
+        "rewrites" : [{
+	      "@type" : "koral:rewrite",
+	      "operation" : "operation:modification",
+	      "src" : "querySerializer",
+	      "scope" : "tree"
+        }]
+    }
+  ]
+}, "query":{"wrap":{"layer":"orth","match":"match:eq","foundry":"opennlp","key":"Goethe","@type":"koral:term"},"@type":"koral:token"},"meta":{"serialQuery":"tokens:s:Goethe","startIndex":0,"version":"unknown","itemsPerPage":25,"context":"p","benchmark":"0.103553092 s","totalResults":-1}};
+     </script>
+
+      <div id="search">
+	<ol class="align-left" tabindex="-8">
+	  <li data-corpus-id="WPD"
+	      data-doc-id="WWW"
+	      data-text-id="03313"
+	      data-match-id="p102-103"
+	      data-available-info="base/s=spans corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans xip/c=spans malt/d=rels"
+	      id="WPD-WWW.03313-p102-103"
+	      tabindex="6">
+	    <div class="meta">WPD/WWW/03313</div>
+      <div class="match-main">
+        <div class="match-wrap">
+	        <div class="snippet startMore endMore">
+	          <div class="flag"></div>
+            <span class="context-left">In diesem Beispiel ist zu sehen, dass die beiden Variablen a und b lediglich ihre Werte an die Funktion </span><mark><mark class="class-2 level-1">Dies </mark><mark class="class-1 level-0"><mark class="class-2 level-1"><mark class="class-3 level-2">ist</mark> ein</mark> Test</mark></mark><span class="context-right"> übergeben, aber im Gegensatz zu einem Referenzparamter dabei unverändert bleiben.</span></div>
+        </div>
+	      <!-- only inject via javascript! -->
+	    </div>
+	    <p class="ref"><strong>Wertparameter</strong> by Hubi,Zwobot,4; published on 2005-03-28 as WWW.03313 (WPD)</p>
+	    <!-- only inject via javascript! -->
+	  </li>
+	  <li data-corpus-id="WPD"
+	      data-doc-id="FFF"
+	      data-text-id="01460"
+	      data-match-id="p119-120"
+	      data-available-info="base/s=spans corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans xip/c=spans malt/d=rels"
+	      id="WPD-FFF.01460-p119-120"
+	      tabindex="6">
+	    <div class="meta">WPD/III/78432</div>
+      <div class="match-main">
+        <div class="match-wrap">
+	        <div class="snippet startMore endMore"><span class="context-left">Der Fehler unterläuft häufig bei der direkten Übersetzung aus dem Englischen, wenn im originalen Ausdruck die beiden Wortteile verschiedene Wörter sind und sich das Adjektiv wahlweise auf das erste oder zweite Wort bezieht. Ein Beispiel ist multiples Testproblem für multiple </span><span class="match">test</span><span class="context-right"> problem.</span></div>
+	        <div class="tokenInfo"></div>
+	      </div>
+      </div>
+	    <p class="ref"><strong>Fehlbezogenes Adjektiv</strong> by Joni2,Peterlustig,BWBot; published on 2005-03-28 as FFF.01460 (WPD)</p>
+	  </li>
+
+	  <li data-corpus-id="WPD"
+	      data-doc-id="HHH"
+	      data-text-id="06056"
+	      data-match-id="p2564-2565"
+	      data-available-info="base/s=spans corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans xip/c=spans malt/d=rels"
+	      id="WPD-HHH.06056-p2564-2565"
+	      tabindex="6">
+	    <div class="meta">WPD/HHH/06056</div>
+      <div class="match-main">
+        <div class="match-wrap">
+	        <div class="snippet startMore endMore">
+	          <div class="flag"></div>
+            <span class="context-left">HDTV Samples from European (and other) broadcasters and </span><span class="match">test</span><span class="context-right"> transmissions in Europe</span></div>
+	      <div class="tokenInfo"></div>
+	      </div>
+      </div>
+	    <p class="ref"><strong>High Definition Television</strong> by ArtMechanic,TheK,Andreas -horn- Hornig; published on 2005-03-28 as HHH.06056 (WPD)</p>
+	  </li>
+
+    <li data-match-id="p367-368"
+        data-text-sigle="Corola-journal/Journalistic/16438_a_17763"
+
+        data-available-info="dereko/s=spans drukola/l=tokens drukola/m=tokens drukola/p=tokens"
+        data-info="{&quot;UID&quot;:0,&quot;author&quot;:&quot;Irina Coroiu&quot;,&quot;availability&quot;:&quot;QAO-NC&quot;,&quot;corpusID&quot;:null,&quot;corpusSigle&quot;:&quot;Corola-journal&quot;,&quot;docID&quot;:null,&quot;docSigle&quot;:&quot;Corola-journal\/Journalistic&quot;,&quot;layerInfos&quot;:&quot;dereko\/s=spans drukola\/l=tokens drukola\/m=tokens drukola\/p=tokens&quot;,&quot;license&quot;:&quot;QAO-NC&quot;,&quot;matchID&quot;:&quot;p367-368&quot;,&quot;pubDate&quot;:&quot;2001&quot;,&quot;textClass&quot;:&quot;Film&quot;,&quot;textID&quot;:null,&quot;textSigle&quot;:&quot;Corola-journal\/Journalistic\/16438_a_17763&quot;,&quot;title&quot;:&quot;DRACULA revine!&quot;}"
+        id="Corola-journal/Journalistic/16438_a_17763#p367-368">
+      <div class="meta flop">Corola-journal/Journalistic/16438_a_17763</div>
+      <div class="match-main">
+        <div class="match-wrap">
+          <div class="snippet startMore endMore"><span class="context-left"><span class="more"></span>ntrînd în joc, Richard Corliss spunea:&quot;Acest film savuros redă personajului noblețea pentru a-l lăsa să se odihnească în pace&quot;. La sfîrșit de veac, în octombrie 2000, la final de psihoză milenaristă, Compania Kushner-Locke oferă această nouă versiune.Scenariul lui Tom </span><span class="match"><mark>Baum</mark></span><span class="context-right"> pretinde a fi cît mai aproape de realitate;regizorul Joe Chappelle a ambiționat o ultramodernă înfățișare a &quot;Patimilor lui Țepeș&quot; o suită de flash-back-uri iscate tot de un interogatoriu la care este supus eroul de către un sinod de preoți ortodocși<span class="more"></span></span></div>
+        </div>
+      </div>
+      <p class="ref"><strong>DRACULA revine!</strong> von Irina Coroiu (<time datetime="2001">2001</time>)  <span class="sigle">[Corola-journal/Journalistic/16438_a_17763]</span> </p>
+    </li>
+    </ol>
+    
+      </div>
+
+  </body>
+</html>
diff --git a/dev/demo/export.js b/dev/demo/export.js
new file mode 100644
index 0000000..0457436
--- /dev/null
+++ b/dev/demo/export.js
@@ -0,0 +1,81 @@
+/**
+ * Export Demo
+ * 
+ * @author Helge 
+ * 
+ */
+
+requirejs.config({
+  baseUrl: '../js/src',
+  paths : {
+    'lib': '../lib'
+  }
+});
+
+
+require(['plugin/server', 'panel/result'], function (pluginClass, resultPanelClass){
+
+  KorAP.Plugin = pluginClass.create();
+
+  // Add services container to head
+  document.head.appendChild(KorAP.Plugin.element());
+  
+  //Register result plugin
+  KorAP.Plugin.register({
+     'name' : 'Export',
+     'desc' : 'Exports Kalamar results',
+     // 'about' : 'https://localhost:5678/',
+     'embed' : [{
+       'panel' : 'result',
+       'title' : 'Export',
+       'classes' : ['export'],
+       'onClick' : {
+         'action' : 'addWidget',
+         'template' : 'http://localhost:7777/res/export.html'
+       }
+     }]
+   }); 
+
+   //Add result panel
+   var show = {};
+   var resultPanel = resultPanelClass.create(show);    
+   
+   var resultInfo = document.getElementById('resultinfo');
+   if (resultInfo != null) {
+     // Move buttons to resultinfo
+    resultInfo.appendChild(resultPanel.actions.element());
+    // The views are at the top of the search results
+    var sb = document.getElementById('search');
+    sb.insertBefore(resultPanel.element(), sb.firstChild);
+    };
+  
+    resultPanel.addAlignAction();
+    
+    // There is a koralQuery
+    if (KorAP.koralQuery !== undefined) {    
+    
+      // Add KoralQuery view to result panel
+    if (resultInfo !== null) {
+      resultPanel.addKqAction()
+    };
+
+    if (KorAP.koralQuery["errors"]) {
+      var errors = KorAP.koralQuery["errors"];
+      for (var i in errors) {
+
+        // Malformed query
+        if (errors[i][0] === 302 && errors[i][2]) {
+          obj.hint = hintClass.create();
+          obj.hint.alert(errors[i][2], errors[i][1]);
+          break;
+        }
+
+        // no query
+        else if (errors[i][0] === 301) {
+          obj.hint = hintClass.create();
+          obj.hint.alert(0, errors[i][1]);      
+          }
+        }
+      };
+    };  
+});
