diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
index 6f7b25a..502702a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
@@ -157,6 +157,7 @@
             tree = parsePoliqarpQuery(query.replaceAll(" ", ""));
         }
         super.parser = this.parser;
+        log.info("Processing PoliqarpPlus");
         System.out.println("Processing PoliqarpPlus");
         requestMap.put("@context", "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld");
 //		prepareContext(requestMap);
@@ -215,7 +216,9 @@
             // ignore this node if it only serves as an aligned sequence container
             if (node.getChildCount() > 1) {
                 if (getNodeCat(node.getChild(1)).equals("cq_segments") && hasChild(node.getChild(1), "alignment")) {
-//				if (getNodeCat(node.getChild(0)).equals("align")) {	
+                    ignoreCq_segment = true;
+                }
+                if (getNodeCat(node.getChild(0)).equals("(") && getNodeCat(node.getChild(node.getChildCount()-1)).equals(")")) {
                     ignoreCq_segment = true;
                 }
             }
@@ -970,12 +973,14 @@
 
         // Some things went wrong ...
         catch (Exception e) {
+        	log.error(e.getMessage());
             System.err.println(e.getMessage());
         }
 
-        if (tree == null) throw new QueryException(
-                "The query you specified could not be processed. Please make sure it is well-formed.");
-
+        if (tree == null) {
+        	log.error("The query you specified could not be processed. Please make sure it is well-formed.");
+        	throw new QueryException("The query you specified could not be processed. Please make sure it is well-formed.");
+        }
         // Return the generated tree
         return tree;
     }
@@ -994,9 +999,12 @@
                 "contains(<cnx/c=np>, [mate/pos=NE])",
                 "matches(<A>,[pos=N]*)",
                 "[base=Auto]matches(<A>,[][pos=N]{4})",
-                "[base=der][]*[base=Mann]"
+                "[base=der][]*[base=Mann]",
+                "[base=der] within s",
+                "([orth=der][base=katze])|([orth=eine][base=baum])",
+                "[orth=der][base=katze]|[orth=eine][base=baum]"
         };
-//		PoliqarpPlusTree.verbose=true;
+		PoliqarpPlusTree.verbose=true;
         for (String q : queries) {
             try {
                 System.out.println(q);
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpTree.java
index 1d23f9e..aba18bb 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpTree.java
@@ -18,6 +18,7 @@
 import org.antlr.v4.runtime.Parser;
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.tree.ParseTree;
+import org.slf4j.LoggerFactory;
 
 //import de.ids_mannheim.korap.query.poliqarp.PoliqarpLexer;
 //import de.ids_mannheim.korap.query.poliqarp.PoliqarpParser;
@@ -31,7 +32,8 @@
  *
  */
 public class PoliqarpTree extends Antlr4AbstractSyntaxTree {
-	
+    private static org.slf4j.Logger log = LoggerFactory
+            .getLogger(PoliqarpTree.class);
 	/**
 	 * Top-level map representing the whole request.
 	 */
@@ -124,8 +126,10 @@
 	@Override
 	public void process(String query) {
 		ParseTree tree = parsePoliqarpQuery(query);
+		log.info("Processing Poliqarp query.");
 		System.out.println("Processing Poliqarp");
 		processNode(tree);
+		log.info(requestMap.toString());
 	}
 	
 	@SuppressWarnings("unchecked")
@@ -421,7 +425,8 @@
 
 	    // Some things went wrong ...
 	    catch (Exception e) {
-	      System.err.println( e.getMessage() );
+	    	log.error(e.getMessage());
+	    	System.err.println( e.getMessage() );
 	    }
 
 	    // Return the generated tree
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 2c6eeaf..4a45d78 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -425,6 +425,76 @@
 		ppt = new PoliqarpPlusTree("[base=Schild]([base=der]|[base=das])");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(disj2.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
+		// "([orth=der][base=katze])|([orth=eine][base=baum])"
+		String disj3 = 
+				"{@type=korap:group, operation=operation:or, operands=[" +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=katze, layer=lemma, match=match:eq}}" +
+					"]}," +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=eine, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=baum, layer=lemma, match=match:eq}}" +
+					"]}" +
+				"]}";
+		ppt = new PoliqarpPlusTree("([orth=der][base=katze])|([orth=eine][base=baum])");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(disj3.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
+		// "[orth=der][base=katze]|[orth=eine][base=baum]"
+		String disj4 = 
+				"{@type=korap:group, operation=operation:or, operands=[" +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=katze, layer=lemma, match=match:eq}}" +
+					"]}," +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=eine, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=baum, layer=lemma, match=match:eq}}" +
+					"]}" +
+				"]}";
+		ppt = new PoliqarpPlusTree("[orth=der][base=katze]|[orth=eine][base=baum]");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(disj4.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
+		PoliqarpPlusTree ppt1 = new PoliqarpPlusTree("[orth=der][base=katze]|[orth=eine][base=baum]");
+		PoliqarpPlusTree ppt2 = new PoliqarpPlusTree("([orth=der][base=katze])|([orth=eine][base=baum])");
+		assertEquals(ppt1.getRequestMap().toString(), ppt2.getRequestMap().toString());
+		
+		// "[orth=der][base=katze]|[orth=der][base=hund]|[orth=der][base=baum]"
+		String disj5 = 
+				"{@type=korap:group, operation=operation:or, operands=[" +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=katze, layer=lemma, match=match:eq}}" +
+					"]}," +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=hund, layer=lemma, match=match:eq}}" +
+					"]}," +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=baum, layer=lemma, match=match:eq}}" +
+					"]}" +
+				"]}";
+		ppt = new PoliqarpPlusTree("[orth=der][base=katze]|[orth=der][base=hund]|[orth=der][base=baum]");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(disj5.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
+		// [orth=der]([base=katze]|[base=hund]|[base=baum])
+		String disj6 = 
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}," +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=katze, layer=lemma, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=hund, layer=lemma, match=match:eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=baum, layer=lemma, match=match:eq}}" +
+					"]}" +
+				"]}";
+		ppt = new PoliqarpPlusTree("[orth=der]([base=katze]|[base=hund]|[base=baum])");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(disj6.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
 	@Test
