diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
index d92613a..c0a88c9 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessor.java
@@ -46,7 +46,6 @@
      * 
      * @param query
      *            The syntax tree as returned by ANTLR
-     * @throws QueryException
      */
     public PoliqarpPlusQueryProcessor (String query) {
         KoralObjectGenerator.setQueryProcessor(this);
@@ -59,6 +58,7 @@
     public void process (String query) {
         ParseTree tree;
         tree = parsePoliqarpQuery(query);
+        // fixme: not required!?
         super.parser = this.parser;
         log.info("Processing PoliqarpPlus query: " + query);
         if (tree != null) {
@@ -86,7 +86,6 @@
      * @param node
      *            The currently processed node. The process(String
      *            query) method calls this method with the root.
-     * @throws QueryException
      */
     private void processNode (ParseTree node) {
         // Top-down processing
@@ -329,12 +328,14 @@
                     .makeTerm();
 
             String key = node.getChild(0).getText();
-            TokenStream stream = parser.getTokenStream();
-            String kval = stream.getText(node.getChild(0).getSourceInterval());
 
             if (getNodeCat(node.getChild(0).getChild(0)).equals("regex")) {
                 isRegex = true;
                 term.put("type", "type:regex");
+
+                // fixme: use stream with offset to get text!
+                // TokenStream stream = parser.getTokenStream();
+                // key = stream.getText(node.getChild(0).getSourceInterval());
                 key = key.substring(1, key.length() - 1);
             }
             term.put("layer", "orth");
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java b/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
index 28d371f..62422ae 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/QuerySerializer.java
@@ -190,7 +190,7 @@
             List messages = (List) requestMap.get("messages");
             collection = mergeCollection(collection, this.collection);
             requestMap.put("collection", collection);
-            
+
             if (meta == null)
                 meta = new HashMap();
             if (errors == null)
diff --git a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
index 69836bf..167ee0e 100644
--- a/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
+++ b/src/test/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusQueryProcessorTest.java
@@ -113,6 +113,7 @@
     }
 
 
+    // todo:
     @Test
     public void testRegex () throws JsonProcessingException, IOException {
         query = "[orth=\"M(a|ä)nn(er)?\"]";
