diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
index 97bcad5..64cc843 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
@@ -24,4 +24,6 @@
     public void writeHeader (Writer w) throws IOException;
     public void addMatch (JsonNode n, Writer w) throws IOException;
     public void writeFooter (Writer w) throws IOException;
+    public String getMimeType ();
+    public String getSuffix ();
 };
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 6517c01..004de3f 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
@@ -88,6 +88,7 @@
     @Context
     private HttpServletRequest req; 
     
+
     /**
      * WebService calls Kustvakt Search Webservices and returns
      * response as json (all of the response) and
@@ -155,6 +156,7 @@
         String path   = properties.getProperty("api.path", "");
         int pageSize  = Integer.parseInt(properties.getProperty("conf.page_size", "5"));
 
+        // Create initial search uri
         UriBuilder uri = UriBuilder.fromPath("/api/v1.0/search")
             .host(host)
             .port(Integer.parseInt(port))
@@ -202,33 +204,25 @@
         // set filename based on query (if not already set)
         if (fname == null) {
             fname = q;
-        }
+        };
 
         Exporter exp;
 
+        // Choose the correct exporter
         if (format.equals("json")) {
             exp = new JsonExporter();
         }
         else {
             exp = new RtfExporter();
         };
-        
+
+        // Initialize exporter (with meta data and first matches)
         exp.init(resp);
         
         // If only one page should be exported there is no need
         // for a temporary export file
         if (cutoff) {
-
             builder = exp.serve();
-
-            if (format.equals("json")) {
-                builder.type(MediaType.APPLICATION_JSON);
-            }
-
-            else {
-                builder.type("application/rtf");
-                format = "rtf";
-            };
         }
 
         // Page through results
@@ -265,16 +259,8 @@
                 resp = authBuilder(reqBuilder, xff, auth).get(String.class);
                 exp.appendMatches(resp);
             }
-            // builder = Response.ok(expTmp);
-            builder = exp.serve();
 
-            if (format.equals("json")) {
-                builder.type(MediaType.APPLICATION_JSON);
-            }
-            else {
-                builder.type("application/rtf");
-                format = "rtf";
-            };
+            builder = exp.serve();
         };        
 
         builder.header(
@@ -282,7 +268,7 @@
             "attachment; filename=" +
             sanitizeFileName(fname) +
             '.' +
-            format
+            exp.getSuffix()
             );
         return builder.build();
     };
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
index dfd9694..d538f2c 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
@@ -1,9 +1,11 @@
 package de.ids_mannheim.korap.plkexport;
 
+import javax.ws.rs.core.MediaType;
 import com.fasterxml.jackson.databind.JsonNode;
 import java.io.IOException;
 import java.io.Writer;
 
+
 /**
  * This is a streaming exporter class for Json, so it's based on
  * a string buffer.
@@ -16,6 +18,19 @@
         {
             firstMatch = true;
         }
+
+
+    @Override
+    public String getMimeType () {
+        return MediaType.APPLICATION_JSON;
+    };
+
+
+    @Override
+    public String getSuffix () {
+        return "json";
+    };
+
     
     @Override
     public void writeHeader (Writer w) throws IOException {
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
index 6a06890..944b729 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
@@ -39,6 +39,14 @@
     
     public JsonNode meta, query, collection;
 
+    public String getMimeType() {
+        return "text/plain";
+    };
+
+    public String getSuffix() {
+        return "txt";
+    };
+
     public void setMeta (JsonNode meta) {
         this.meta = meta;
     };
@@ -156,14 +164,20 @@
      */
     public ResponseBuilder serve () {
         try {
+            ResponseBuilder rb;
 
             this.writeFooter(this.writer);
             this.writer.close();
-            
+
+
             if (this.file == null) {
-                return Response.ok(writer.toString());
+                rb = Response.ok(writer.toString());
+            }
+            else {
+                rb = Response.ok(this.file);
             };
-            return Response.ok(this.file);            
+
+            return rb.type(this.getMimeType());
         }
 
         // Catch error
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
index c7a3594..852ad91 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
@@ -41,6 +41,18 @@
             firstMatch = true;
             sb = new StringBuilder(256);
         }
+
+    @Override
+    public String getMimeType () {
+        return "application/rtf";
+    };
+
+
+    @Override
+    public String getSuffix () {
+        return "rtf";
+    };
+    
     
     @Override
     public void writeHeader (Writer w) throws IOException {
