diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java
new file mode 100644
index 0000000..e5eb5be
--- /dev/null
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java
@@ -0,0 +1,19 @@
+/**
+ * 
+ * @author helge
+ * 
+ * Class to define the constants of the export web service, 
+ * like the maximum hits to be exported
+ *
+ */
+package de.ids_mannheim.korap.plkexport;
+
+public class ExWSConf {
+    /*
+     * maximum hits to be exported
+     * TODO: Define this constants after discussing it. 
+     * Maybe we need an distinction between user at the IDS and external user
+     * See also: https://www.ids-mannheim.de/cosmas2/script-app/hilfe/sitzung.html
+     */
+    public static final int MAX_EXP_LIMIT = 10000;
+}
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index d09e73f..3a89ae3 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -29,6 +29,7 @@
 import static com.tutego.jrtf.RtfPara.*;
 import static com.tutego.jrtf.RtfText.*;
 
+
 @Path("/")
 public class IdsExportService {
 
@@ -48,12 +49,14 @@
      * 
      * 
      */
+
     @POST
     @Path("export")
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
     public Response testjsonform (@FormParam("fname") String fname,
             @FormParam("format") String format, @FormParam("q") String q,
-            @FormParam("ql") String ql) throws IOException {
+            @FormParam("ql") String ql, @FormParam("islimit") String il,
+            @FormParam("hitc") int hitc) throws IOException {
 
         String[][] params = { { "fname", fname }, { "format", format },
                 { "q", q }, { "ql", ql } };
@@ -69,8 +72,17 @@
         ResponseBuilder builder;
         Client client = ClientBuilder.newClient();
 
+
         String url = "http://localhost:8089/api/v1.0/search?context=sentence"
                 + "&q=" + URLEncoder.encode(q, "UTF-8") + "&ql=" + ql;
+
+        if (il != null) {
+            url = url + "&cutoff=1" + "&count=" + hitc;
+        }
+
+        else {
+            url = url + "&cutoff=1" + "&count=" + ExWSConf.MAX_EXP_LIMIT;
+        }
         WebTarget resource = client.target(url);
         String resp = resource.request(MediaType.APPLICATION_JSON)
                 .get(String.class);
@@ -96,6 +108,8 @@
             LinkedList<MatchExport> listMatches = new LinkedList();
             ObjectMapper objectMapper = new ObjectMapper();
             MatchExport match;
+
+
             for (Iterator<JsonNode> itNode = jsonNode1.elements(); itNode
                     .hasNext();) {
                 match = objectMapper.readValue(itNode.next().toString(),
@@ -103,7 +117,6 @@
                 listMatches.addLast(match);
             }
 
-
             String rtfresp = writeRTF(listMatches);
             builder = Response.ok(rtfresp);
             builder.header("Content-Disposition",
diff --git a/plugin/templates/export.html b/plugin/templates/export.html
index 294d910..404a7cf 100644
--- a/plugin/templates/export.html
+++ b/plugin/templates/export.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<!-- TODO: style, localization, remove Zu Testzwecken in the end, ...-->
+<!-- TODO: style, localization, remove 'Zu Testzwecken' in the end, ...-->
 <html>
 <head>
 <meta charset="UTF-8">
@@ -9,7 +9,7 @@
 <body>
 
 <form id ="frmid" action="http://localhost:7777/export" method="POST">
-   Zu Testzwecken: <br />
+   Zu Testzwecken: <br/>
    <ul>
    <li> <a onclick="KorAPlugin.requestMsg({'action':'get', 'key':'KQ'}, function (d) { document.write(JSON.stringify(d.value))})">Get KQ</a> </li>
   </ul>
@@ -18,16 +18,28 @@
   <label for="ql"> Suchanfragesprache:</label>
   <input id="ql" name="ql" value="poliqarp">
   <input type="hidden" id="cq" name="cq" value="">
-  <br />
-  <br />
-  <br />
+  <br/>
+  <br/>
+  <br/>
   <label for="fname">Dateiname:</label>
-  <input type="text" id="fname" name="fname" required> <br>
+  <input type="text" id="fname" name="fname" required> <br/>
   Dateiformat: 
   <input type="radio" id="formatjson" name="format" value="json">  
   <label for="formatjson">JSON</label>
   <input type="radio" checked="checked" id="formathtml" name="format" value="rtf">  
-  <label for="formatrtf">RTF</label><br>
+  <label for="formatrtf">RTF</label><br/>
+  
+  <div>
+  <br/>
+   <label>
+          <input type="checkbox" name="islimit" checked="checked" value="limited">
+          Beschränken auf 
+            <input name="hitc" type="number" min="1" max="1000" value="20">
+          Treffer 
+  </label>
+  <br/>
+  <br/>
+  </div>
  <button> Exportieren </button> 
 </form>
 </body>
