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 8ed9007..c76ffb1 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
@@ -16,8 +16,10 @@
     public JsonNode getQuery();
     public JsonNode getCollection();
     public void appendMatches (String s) throws IOException;
-    public String getFname ();
-    public void setFname (String s);
+    public String getFileName ();
+    public void setFileName (String s);
+    public String getQueryString ();
+    public void setQueryString (String s);
 
     // Implemented by Exporter
     public ResponseBuilder serve();
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 3add327..9f6f1ed 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
@@ -211,12 +211,11 @@
             exp = new RtfExporter();
         };
 
+        exp.setQueryString(q);
+        
         // set filename based on query (if not already set)
         if (fname != null) {
-            exp.setFname(fname);
-        }
-        else {
-            exp.setFname(q);
+            exp.setFileName(fname);
         };
         
         // Initialize exporter (with meta data and first matches)
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 6767680..3d2ab87 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
@@ -40,7 +40,7 @@
     private File file;
     
     public JsonNode meta, query, collection;
-    private String fname;
+    private String fname, queryString;
 
     public String getMimeType() {
         return "text/plain";
@@ -50,16 +50,27 @@
         return "txt";
     };
 
-    public void setFname (String fname) {
+    public void setFileName (String fname) {
         this.fname = fname;
     };
 
-    public String getFname () {
-        if (this.fname == null)
-            return "unknown";
-        return sanitizeFileName(this.fname);
+    public String getFileName () {
+        String s = this.fname;
+        if (s == null)
+            s = this.queryString;
+        if (s == null)
+            return "export";
+        return sanitizeFileName(s);
     };
 
+    public void setQueryString (String query) {
+        this.queryString = query;
+    };
+
+    public String getQueryString () {
+        return this.queryString;
+    };
+    
     public void setMeta (JsonNode meta) {
         this.meta = meta;
     };
@@ -195,7 +206,7 @@
                 .header(
                     "Content-Disposition",
                     "attachment; filename=" +
-                    this.getFname() +
+                    this.getFileName() +
                     '.' +
                     this.getSuffix()
                     );
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/JsonExportTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/JsonExportTest.java
index 3784f2f..73bd736 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/JsonExportTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/JsonExportTest.java
@@ -55,8 +55,8 @@
     @Test
     public void testAttributes () throws IOException {
         JsonExporter json = new JsonExporter();
-        json.setFname("Beispiel");
-        assertEquals(json.getFname(),"Beispiel");
+        json.setFileName("Beispiel");
+        assertEquals(json.getFileName(),"Beispiel");
         assertEquals(json.getMimeType(),"application/json");
         assertEquals(json.getSuffix(),"json");
     };
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
index af21fd9..b19ce21 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/MatchAggregatorTest.java
@@ -49,11 +49,28 @@
     @Test
     public void testAttributes () throws IOException {
         MatchAggregator m = new MatchAggregator();
-        m.setFname("Beispiel");
-        assertEquals(m.getFname(),"Beispiel");
-        m.setFname("contains(<s name=\"okay\">,[orth='Test'])");
-        assertEquals(m.getFname(),"contains(s-name-okay-orth-Test)");
+        m.setFileName("Beispiel");
+        assertEquals(m.getFileName(),"Beispiel");
+        m.setFileName("contains(<s name=\"okay\">,[orth='Test'])");
+        assertEquals(m.getFileName(),"contains(s-name-okay-orth-Test)");
         assertEquals(m.getMimeType(),"text/plain");
         assertEquals(m.getSuffix(),"txt");
     };
+
+    @Test
+    public void testFileName () throws IOException {
+        MatchAggregator m = new MatchAggregator();
+        assertEquals(m.getFileName(),"export");
+        
+        m = new MatchAggregator();
+        m.setFileName("Beispiel");
+        assertEquals(m.getFileName(),"Beispiel");
+
+        m = new MatchAggregator();
+        m.setQueryString("contains(<s name=\"okay\">,[orth='Test'])");
+        assertEquals(m.getQueryString(),"contains(<s name=\"okay\">,[orth='Test'])");
+        assertEquals(m.getFileName(),"contains(s-name-okay-orth-Test)");
+        m.setFileName("Beispiel");
+        assertEquals(m.getFileName(),"Beispiel");
+    };
 };
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
index 6192b5a..d9f0486 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
@@ -64,8 +64,8 @@
     @Test
     public void testAttributes () throws IOException {
         RtfExporter rtf = new RtfExporter();
-        rtf.setFname("Beispiel");
-        assertEquals(rtf.getFname(),"Beispiel");
+        rtf.setFileName("Beispiel");
+        assertEquals(rtf.getFileName(),"Beispiel");
         assertEquals(rtf.getMimeType(),"application/rtf");
         assertEquals(rtf.getSuffix(),"rtf");
     };
