diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java
index 32897f7..81efa6e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/AbstractSyntaxTree.java
@@ -244,11 +244,7 @@
 		LinkedHashMap<String, Object> group = new LinkedHashMap<String, Object>();
 		group.put("@type", "korap:group");
 		group.put("operation", "operation:class");
-		if (check.size()==1) {
-			group.put("classRefCheck", check.get(0));
-		} else {
-			group.put("classRefCheck", check);
-		}
+		group.put("classRefCheck", check);
 		group.put("classIn", Arrays.asList(classIn));
 		group.put("classOut", classOut);
 		group.put("class", classOut);
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
index c3c72ca..42b5775 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
@@ -1095,6 +1095,7 @@
 				"#ELEM(W ANA=N)",
 				 "#ELEM(W ANA=N FOO=BAR)",
 				 "#ELEM(W ANA='N V')",
+				 "#NHIT(a %w10 b)"
 		};
 //		CosmasTree.verbose=true;
 		for (String q : queries) {
diff --git a/src/test/java/CosmasTreeTest.java b/src/test/java/CosmasTreeTest.java
index 6085218..308f777 100644
--- a/src/test/java/CosmasTreeTest.java
+++ b/src/test/java/CosmasTreeTest.java
@@ -5,7 +5,6 @@
 
 import org.junit.Test;
 
-import de.ids_mannheim.korap.query.serialize.CosmasTree;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -20,7 +19,7 @@
  */
 
 public class CosmasTreeTest {
-	
+
 
 	String query;
 	ArrayList<JsonNode> operands;
@@ -28,7 +27,7 @@
 	QuerySerializer qs = new QuerySerializer();
 	ObjectMapper mapper = new ObjectMapper();
 	JsonNode res;
-	
+
 	@Test
 	public void testContext() throws QueryException, JsonProcessingException, IOException {
 		String contextString = "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld";
@@ -37,8 +36,8 @@
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(contextString, res.get("@context").asText());
 	}
-	
-	
+
+
 	@Test
 	public void testSingleToken() throws QueryException, JsonProcessingException, IOException {
 		query = "der";
@@ -49,7 +48,7 @@
 		assertEquals("der", 				res.at("/query/wrap/key").asText());
 		assertEquals("orth", 				res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "&Mann";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -59,9 +58,9 @@
 		assertEquals("lemma", 				res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
 	}
-		
 
-	
+
+
 	@Test
 	public void testWildcardToken() throws QueryException, JsonProcessingException, IOException {
 		query = "*der";
@@ -72,13 +71,13 @@
 		assertEquals("*der", 				res.at("/query/wrap/key").asText());
 		assertEquals("orth", 				res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "*de*?r";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("*de*?r", 				res.at("/query/wrap/key").asText());
 	}
-//	
+	//	
 	@Test
 	public void testCaseSensitivityFlag() throws QueryException, JsonProcessingException, IOException {
 		query = "$deutscher";
@@ -89,7 +88,7 @@
 		assertEquals(true,					res.at("/query/wrap/caseInsensitive").asBoolean());
 		assertEquals("orth", 				res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "$deutscher Bundestag";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -103,7 +102,7 @@
 		assertEquals("Bundestag",			res.at("/query/operands/1/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/1/wrap/caseInsensitive").isMissingNode());
 	}
-	
+
 	@Test
 	public void testMORPH() throws QueryException, JsonProcessingException, IOException {
 		query = "MORPH(p=V)";
@@ -114,7 +113,7 @@
 		assertEquals("V",					res.at("/query/wrap/key").asText());
 		assertEquals("p",					res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "MORPH(V)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -122,7 +121,7 @@
 		assertEquals("korap:term", 			res.at("/query/wrap/@type").asText());
 		assertEquals("V",					res.at("/query/wrap/key").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "MORPH(tt/p=V)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -132,7 +131,7 @@
 		assertEquals("p",					res.at("/query/wrap/layer").asText());
 		assertEquals("tt",					res.at("/query/wrap/foundry").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "MORPH(mate/m=temp:pres)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -143,7 +142,7 @@
 		assertEquals("m",					res.at("/query/wrap/layer").asText());
 		assertEquals("mate",				res.at("/query/wrap/foundry").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "MORPH(tt/p=V & mate/m!=temp:pres)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -159,7 +158,7 @@
 		assertEquals("mate",				res.at("/query/wrap/operands/1/foundry").asText());
 		assertEquals("match:ne",			res.at("/query/wrap/operands/1/match").asText());
 	}
-	
+
 	@Test
 	public void testSequence() throws QueryException, JsonProcessingException, IOException {
 		query = "der Mann";
@@ -170,7 +169,7 @@
 		assertEquals("der",					res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/2").isMissingNode());
-		
+
 		query = "der Mann schläft";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -180,7 +179,7 @@
 		assertEquals("Mann",				res.at("/query/operands/1/wrap/key").asText());
 		assertEquals("schläft",				res.at("/query/operands/2/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/3").isMissingNode());
-		
+
 		query = "der Mann schläft lang";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -191,7 +190,7 @@
 		assertEquals("schläft",				res.at("/query/operands/2/wrap/key").asText());
 		assertEquals("lang",				res.at("/query/operands/3/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/4").isMissingNode());
-		
+
 		query = "der #ELEM(W)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -201,7 +200,7 @@
 		assertEquals("w",					res.at("/query/operands/1/key").asText());
 		assertEquals("korap:span",			res.at("/query/operands/1/@type").asText());
 		assertEquals(true,					res.at("/query/operands/2").isMissingNode());
-		
+
 		query = "der #ELEM(W) Mann";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -212,7 +211,7 @@
 		assertEquals("korap:span",			res.at("/query/operands/1/@type").asText());
 		assertEquals("Mann",				res.at("/query/operands/2/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/3").isMissingNode());
-		
+
 		query = "der MORPH(p=ADJA) Mann";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -235,7 +234,7 @@
 		assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/2").isMissingNode());
-		
+
 		query = "(Sonne scheint) oder Mond";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -247,7 +246,7 @@
 		assertEquals("scheint",				res.at("/query/operands/0/operands/1/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
 		assertEquals(true,					res.at("/query/operands/2").isMissingNode());
-		
+
 		query = "(Sonne scheint) oder (Mond scheint)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -281,7 +280,7 @@
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/wrap/key").asText());
 		assertEquals("korap:token",			res.at("/query/operands/1/@type").asText());
 		assertEquals("scheint",				res.at("/query/operands/1/wrap/key").asText());
-		
+
 		query = "scheint und (Sonne oder Mond)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -297,7 +296,7 @@
 		assertEquals("operation:or",		res.at("/query/operands/1/operation").asText());
 		assertEquals("Sonne",				res.at("/query/operands/1/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/1/operands/1/wrap/key").asText());
-		
+
 		query = "Regen und scheint und (Sonne oder Mond)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -321,7 +320,7 @@
 		assertEquals("Sonne",				res.at("/query/operands/1/operands/1/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/1/operands/1/operands/1/wrap/key").asText());
 	}
-	
+
 	@Test
 	public void testOPNOT() throws QueryException, JsonProcessingException, IOException {
 		query = "Sonne nicht Mond";
@@ -337,7 +336,7 @@
 		assertEquals("korap:token",			res.at("/query/operands/0/@type").asText());
 		assertEquals("Sonne",				res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/1/wrap/key").asText());
-		
+
 		query = "Sonne nicht Mond nicht Sterne";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -359,7 +358,7 @@
 		assertEquals(true,					res.at("/query/operands/1/distances/0/exclude").asBoolean());
 		assertEquals("Mond",				res.at("/query/operands/1/operands/0/wrap/key").asText());
 		assertEquals("Sterne",				res.at("/query/operands/1/operands/1/wrap/key").asText());
-		
+
 		query = "(Sonne nicht Mond) nicht Sterne";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -382,7 +381,7 @@
 		assertEquals("korap:token",			res.at("/query/operands/1/@type").asText());
 		assertEquals("Sterne",				res.at("/query/operands/1/wrap/key").asText());
 	}
-	
+
 	@Test
 	public void testOPPROX() throws QueryException, JsonProcessingException, IOException {
 		query = "Sonne /+w1:4 Mond";
@@ -405,7 +404,7 @@
 		assertEquals("korap:token",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
 		assertEquals("Sonne",				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "Sonne /+w1:4,s0,p1:3 Mond";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -431,7 +430,7 @@
 		assertEquals("korap:token",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
 		assertEquals("Sonne",				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "Sonne /+w4 Mond";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -439,7 +438,7 @@
 		assertEquals("w",					res.at("/query/operands/0/distances/0/key").asText());
 		assertEquals(0,						res.at("/query/operands/0/distances/0/boundary/min").asInt());
 		assertEquals(4,						res.at("/query/operands/0/distances/0/boundary/max").asInt());
-		
+
 		query = "Sonne /-w4 Mond";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -449,7 +448,7 @@
 		assertEquals(4,						res.at("/query/operands/0/distances/0/boundary/max").asInt());
 		assertEquals("Mond",				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Sonne",				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "Sonne /w4 Mond";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -461,7 +460,7 @@
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
 		assertEquals(false,					res.at("/query/operands/0/inOrder").asBoolean());
 	}
-	
+
 	@Test
 	public void testOPPROXNested() throws QueryException, JsonProcessingException, IOException {	
 		query = "Sonne /+w1:4 Mond /+w1:7 Sterne";
@@ -493,14 +492,14 @@
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals(130,					res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/classOut").asInt());
 		assertEquals("Sterne",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "Sonne /+w1:4 Mond /-w1:7 Sterne";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("Sonne",				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Sterne",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Mond",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "Sonne /-w4 Mond /+w2 Sterne";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -532,7 +531,7 @@
 		assertEquals("Sterne",				res.at("/query/operands/0/operands/0/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
 
 	}
-	
+
 	@Test
 	public void testOPIN() throws QueryException, JsonProcessingException, IOException {
 		query = "wegen #IN <s>";
@@ -543,7 +542,7 @@
 		assertEquals(130,							res.at("/query/classRef/0").asInt());
 		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
 		assertEquals("operation:class",				res.at("/query/operands/0/operation").asText());
-		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/@type").asText());
 		assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/0").isMissingNode());
@@ -559,21 +558,21 @@
 		assertEquals(130,							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
 		assertEquals("korap:token",					res.at("/query/operands/0/operands/0/operands/1/operands/0/@type").asText());
 		assertEquals("wegen",						res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "wegen #IN(L) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
-		
+
 		query = "wegen #IN(F) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
-		
+
 		query = "wegen #IN(FI) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -581,32 +580,32 @@
 		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/1").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
-		
+
 		query = "wegen #IN(FE) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
-		
+
 		query = "wegen #IN(%, L) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:includes",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/exclude").asBoolean());
-		
+
 		query = "wegen #IN(FE,ALL,%,MIN) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(true,							res.at("/query/reset").asBoolean());
-		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/exclude").asBoolean());
-		
+
 	}
-	
+
 	@Test
 	public void testOPOV() throws QueryException, JsonProcessingException, IOException {
 		query = "wegen #OV <s>";
@@ -617,7 +616,7 @@
 		assertEquals(130,							res.at("/query/classRef/0").asInt());
 		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
 		assertEquals("operation:class",				res.at("/query/operands/0/operation").asText());
-		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/@type").asText());
 		assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/0").isMissingNode());
@@ -633,35 +632,35 @@
 		assertEquals(130,							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
 		assertEquals("korap:token",					res.at("/query/operands/0/operands/0/operands/1/operands/0/@type").asText());
 		assertEquals("wegen",						res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "wegen #OV(L) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals("frames:overlapsLeft",			res.at("/query/operands/0/operands/0/frames/1").asText());
-		
+
 		query = "wegen #OV(F) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:intersects",	res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 		assertEquals(true,							res.at("/query/operands/0/operands/0/frames/1").isMissingNode());
-		
+
 		query = "wegen #OV(FI) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:unequals",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:unequals",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
-		
+
 		query = "wegen #OV(FE) <s>";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
-		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck").asText());
+		assertEquals("classRefCheck:equals",		res.at("/query/operands/0/classRefCheck/0").asText());
 		assertEquals("frames:matches",				res.at("/query/operands/0/operands/0/frames/0").asText());
 	}
 
-	
+
 	@Test
 	public void testBEG_END() throws QueryException, JsonProcessingException, IOException {
 		query = "#BEG(der /w3:5 Mann)";
@@ -681,7 +680,7 @@
 		assertEquals("korap:token",			res.at("/query/operands/0/operands/0/@type").asText());
 		assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Mann",				res.at("/query/operands/0/operands/1/wrap/key").asText());
-		
+
 		query = "#BEG(der /w3:5 Mann) /+w10 kommt";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -716,7 +715,7 @@
 		assertEquals(129,					res.at("/query/operands/0/operands/1/classOut").asInt());
 		assertEquals("korap:token",			res.at("/query/operands/0/operands/1/operands/0/@type").asText());
 		assertEquals("kommt",				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "kommt /+w10 #BEG(der /w3:5 Mann)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -751,7 +750,7 @@
 		assertEquals(129,					res.at("/query/operands/0/operands/0/classOut").asInt());
 		assertEquals("korap:token",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
 		assertEquals("kommt",				res.at("/query/operands/0/operands/0/operands/0/wrap/key").asText());
-		
+
 		query = "#END(der /w3:5 Mann)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -770,7 +769,7 @@
 		assertEquals("der",					res.at("/query/operands/0/operands/0/wrap/key").asText());
 		assertEquals("Mann",				res.at("/query/operands/0/operands/1/wrap/key").asText());
 	}
-	
+
 	@Test
 	public void testELEM() throws QueryException, JsonProcessingException, IOException {
 		query = "#ELEM(S)";
@@ -778,7 +777,7 @@
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("korap:span",		res.at("/query/@type").asText());
 		assertEquals("s",				res.at("/query/key").asText());
-		
+
 		query = "#ELEM(W ANA=N)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -788,7 +787,7 @@
 		assertEquals("N",				res.at("/query/attr/key").asText());
 		assertEquals("p",				res.at("/query/attr/layer").asText());
 		assertEquals("match:eq",		res.at("/query/attr/match").asText());
-		
+
 		query = "#ELEM(W ANA != 'N V')";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -804,7 +803,7 @@
 		assertEquals("V",				res.at("/query/attr/operands/1/key").asText());
 		assertEquals("p",				res.at("/query/attr/operands/1/layer").asText());
 		assertEquals("match:ne",		res.at("/query/attr/operands/1/match").asText());
-		
+
 		query = "#ELEM(W ANA != 'N A V' Genre = Sport)";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -819,7 +818,7 @@
 		assertEquals("V",				res.at("/query/attr/operands/0/operands/2/key").asText());
 		assertEquals("Genre",			res.at("/query/attr/operands/1/layer").asText());
 		assertEquals("Sport",			res.at("/query/attr/operands/1/key").asText());
-		
+
 		query = "#ELEM(W ANA != 'N A V' Genre != 'Sport Politik')";
 		qs.setQuery(query, "cosmas2");
 		res = mapper.readTree(qs.toJSON());
@@ -841,305 +840,283 @@
 		assertEquals("Politik",			res.at("/query/attr/operands/1/operands/1/key").asText());
 		assertEquals("match:ne",		res.at("/query/attr/operands/1/operands/1/match").asText());
 	}
-//	@Test
-//	public void testOPALL() throws QueryException {
-//		query="#ALL(gehen /w1:10 voran)";
-//		String all1 =
-//				"{@type=korap:group, operation=operation:sequence, " +
-//					"operands=[" +
-//						"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=match:eq}}," +
-//						"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=match:eq}}" +
-//					"], inOrder=false, " +
-//					"distances=[" +
-//						"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-//					"]" +
-//				"}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(all1.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query="#ALL(gehen /w1:10 (voran /w1:4 schnell))";
-//		String all2 =
-//				"{@type=korap:group, operation=operation:sequence, " +
-//					"operands=[" +
-//						"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=match:eq}}," +
-//							"{@type=korap:group, operation=operation:sequence, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=match:eq}}," +
-//									"{@type=korap:token, wrap={@type=korap:term, key=schnell, layer=orth, match=match:eq}}" +
-//								"], inOrder=false, " +
-//								"distances=[" +
-//									"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=4}, min=1, max=4}" +
-//								"]" +
-//							"}" +
-//					"], inOrder=false, " +
-//					"distances=[" +
-//						"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-//					"]" +
-//				"}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(all2.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//	}
-//	
-//	@Test
-//	public void testOPNHIT() throws QueryException {
-//		query="#NHIT(gehen /w1:10 voran)";
-//		String nhit1 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:class, classRefOp=classRefOp:inversion, classIn=[130,131], classOut=129, operands=[" +
-//						"{@type=korap:group, operation=operation:sequence, " +
-//							"operands=[" +
-//								"{@type=korap:group, operation=operation:class, class=130 , classOut=130, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=match:eq}}" +
-//								"]}," +	
-//								"{@type=korap:group, operation=operation:class, class=131 , classOut=131, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=match:eq}}" +
-//								"]}" +	
-//							"], inOrder=false, " +
-//							"distances=[" +
-//								"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-//							"]" +
-//						"}" +
-//					"]}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(nhit1.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//
-////		query="#NHIT(gehen %w1:10 voran)";
-////		String nhit2 = 
-////				"{@type=korap:reference, operation=operation:focus, classRef=129, operands=[" +
-////					"{@type=korap:group, operation=operation:sequence, " +
-////						"operands=[" +
-////							"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=match:eq}}" +
-////							"{@type=korap:group, operation=operation:class, class= , classOut=129, operands=[" +
-////								"{@type=korap:group, operation=operation:repetition, operands=[" +
-////									"{@type=korap:token}" +
-////								"], boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}}" +
-////							"]}," +	
-////							"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=match:eq}}" +
-////						"], inOrder=false, " +
-////						"distances=[" +
-////							"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-////						"]" +
-////					"}" +
-////				"]}";
-////		ct = new CosmasTree(query);
-////		map = ct.getRequestMap().get("query").toString();
-////		assertEquals(nhit2.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query="#NHIT(gehen /+w1:10 voran /w1:10 Beispiel)";
-//		String nhit3 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:class, classRefOp=classRefOp:inversion, classIn=[130,131], classOut=129, operands=[" +
-//						"{@type=korap:group, operation=operation:sequence, " +
-//							"operands=[" +
-//								"{@type=korap:group, operation=operation:class, class=130, classOut=130, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=match:eq}}" +
-//								"]}," +
-//								"{@type=korap:group, operation=operation:class, class=131, classOut=131, operands=[" +
-//									"{@type=korap:reference, operation=operation:focus, classRef=[132], operands=[" +
-//										"{@type=korap:group, operation=operation:sequence, " +
-//											"operands=[" +
-//												"{@type=korap:group, operation=operation:class, class=132, classOut=132, operands=[" +
-//													"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=match:eq}}" +
-//												"]}," +
-//												"{@type=korap:group, operation=operation:class, class=132, classOut=132, operands=[" +	
-//													"{@type=korap:token, wrap={@type=korap:term, key=Beispiel, layer=orth, match=match:eq}}" +
-//												"]}" +
-//											"], inOrder=false, " +
-//											"distances=[" +
-//												"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-//											"]" +
-//										"}" +
-//									"]}" +
-//								"]}" +
-//							"], inOrder=true, " +
-//							"distances=[" +
-//								"{@type=korap:distance, key=w, boundary={@type=korap:boundary, min=1, max=10}, min=1, max=10}" +
-//							"]" +
-//						"}" +
-//					"]}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(nhit3.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//	}
-//	
-//	@Test
-//	public void testOPBED() throws QueryException {
-//		query = "#BED(der , sa)";
-//		String bed1 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands= [" +
-//					"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//						"{@type=korap:span, key=s}," +
-//						"{@type=korap:group, operation=operation:class, class=129, classOut=129, operands=[" +
-//							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=match:eq}}" +
-//						"]}" +
-//					"], frame=frame:startswith}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(bed1.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query = "#BED(der Mann , +pe)";
-//		String bed2 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands= [" +
-//						"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//							"{@type=korap:reference, operation=operation:focus, spanRef=[-1,1], operands=[" +
-//								"{@type=korap:span, key=p}" +
-//							"]}," +
-//							"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
-//								"{@type=korap:group, operation=operation:class, class=129, classOut=129, 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=Mann, layer=orth, match=match:eq}}" +
-//									"]}" +
-//								"]}" +
-//							"]}" +
-//						"], frame=frame:matches}" +
-//					"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(bed2.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query = "#BED(der Mann , sa,-pa)";
-//		String bed3 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//						"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//							"{@type=korap:span, key=s}," +
-//							"{@type=korap:group, operation=operation:class, class=129, classOut=129, 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=Mann, layer=orth, match=match:eq}}" +
-//								"]}" +
-//							"]}" +
-//						"], frame=frame:startswith}," +
-//						"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//							"{@type=korap:span, key=p}," +
-//							"{@type=korap:group, operation=operation:class, class=130, classOut=130, 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=Mann, layer=orth, match=match:eq}}" +
-//								"]}" +
-//							"]}" +
-//						"], frame=frame:startswith, exclude=true}" +
-//					"], frame=frame:matches}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(bed3.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//	}
-//	
-//	@Test
-//	public void testColonSeparatedConditions() throws QueryException {
-//		
-//		query = "Der:sa";
-//		String col1 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//						"{@type=korap:span, key=s}," +
-//						"{@type=korap:group, operation=operation:class, class=129, classOut=129, operands=[" +
-//							"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=match:eq}}" +
-//						"]}" +
-//					"], frame=frame:startswith}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(col1.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query = "Mann:sa,-pa,+te";
-//		String col2 = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//						"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//							"{@type=korap:span, key=s}," +
-//							"{@type=korap:group, operation=operation:class, class=129, classOut=129, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//							"]}" +
-//						"], frame=frame:startswith}," +
-//						"{@type=korap:reference, operation=operation:focus, classRef=[130], operands=[" +
-//							"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +	
-//								"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//									"{@type=korap:span, key=p}," +
-//									"{@type=korap:group, operation=operation:class, class=130, classOut=130, operands=[" +
-//											"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//									"]}" +
-//								"], frame=frame:startswith, exclude=true}," +
-//								"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//									"{@type=korap:reference, operation=operation:focus, spanRef=[-1,1], operands=[" +
-//										"{@type=korap:span, key=t}" +
-//									"]}," +
-//									"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
-//										"{@type=korap:group, operation=operation:class, class=131, classOut=131, operands=[" +
-//												"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//										"]}" +
-//									"]}" +
-//								"], frame=frame:matches}" +
-//							"], frame=frame:matches}" +
-//						"]}" +
-//					"], frame=frame:matches}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(col2.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//		
-//		query = "Mann:sa,-pa,+te,se";
-//		expected = 
-//				"{@type=korap:reference, operation=operation:focus, classRef=[129], operands=[" +
-//					"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//						"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//							"{@type=korap:span, key=s}," +
-//							"{@type=korap:group, operation=operation:class, class=129, classOut=129, operands=[" +
-//									"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//							"]}" +
-//						"], frame=frame:startswith}," +
-//						"{@type=korap:reference, operation=operation:focus, classRef=[130], operands=[" +
-//							"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +	
-//								"{@type=korap:group, operation=operation:position, frames=[frames:startswith], operands=[" +
-//									"{@type=korap:span, key=p}," +
-//									"{@type=korap:group, operation=operation:class, class=130, classOut=130, operands=[" +
-//											"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//									"]}" +
-//								"], frame=frame:startswith, exclude=true}," +
-//								"{@type=korap:reference, operation=operation:focus, classRef=[131], operands=[" +
-//									"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +	
-//										"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//											"{@type=korap:reference, operation=operation:focus, spanRef=[-1,1], operands=[" +
-//												"{@type=korap:span, key=t}" +
-//											"]}," +
-//											"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
-//												"{@type=korap:group, operation=operation:class, class=131, classOut=131, operands=[" +
-//														"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//												"]}" +
-//											"]}" +
-//										"], frame=frame:matches}," +
-//										"{@type=korap:group, operation=operation:position, frames=[frames:matches], operands=[" +
-//											"{@type=korap:reference, operation=operation:focus, spanRef=[-1,1], operands=[" +
-//												"{@type=korap:span, key=s}" +
-//											"]}," +
-//											"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
-//												"{@type=korap:group, operation=operation:class, class=132, classOut=132, operands=[" +
-//														"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=match:eq}}" +
-//												"]}" +
-//											"]}" +
-//										"], frame=frame:matches}" +
-//									"], frame=frame:matches}" +
-//								"]}" +
-//							"], frame=frame:matches}" +
-//						"]}" +
-//					"], frame=frame:matches}" +
-//				"]}";
-//		ct = new CosmasTree(query);
-//		map = ct.getRequestMap().get("query").toString();
-//		assertEquals(expected.replaceAll(" ", ""), map.replaceAll(" ", ""));
-//	}
-}
-	
+	@Test
+	public void testOPALL() throws QueryException, JsonProcessingException, IOException {
+		query = "#ALL(gehen /w1:10 voran)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:group",			res.at("/query/@type").asText());
+		assertEquals("operation:sequence",	res.at("/query/operation").asText());
+		assertEquals("gehen",				res.at("/query/operands/0/wrap/key").asText());
+		assertEquals("voran",				res.at("/query/operands/1/wrap/key").asText());
+		assertEquals("korap:distance",		res.at("/query/distances/0/@type").asText());
+		assertEquals("w",					res.at("/query/distances/0/key").asText());
+		assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
+		assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
+
+		query = "#ALL(gehen /w1:10 (voran /w1:4 schnell))";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:group",			res.at("/query/@type").asText());
+		assertEquals("operation:sequence",	res.at("/query/operation").asText());
+		assertEquals("korap:distance",		res.at("/query/distances/0/@type").asText());
+		assertEquals("w",					res.at("/query/distances/0/key").asText());
+		assertEquals(1,						res.at("/query/distances/0/boundary/min").asInt());
+		assertEquals(10,					res.at("/query/distances/0/boundary/max").asInt());
+		assertEquals("gehen",				res.at("/query/operands/0/wrap/key").asText());
+		assertEquals("korap:group",			res.at("/query/operands/1/@type").asText());
+		assertEquals("operation:sequence",	res.at("/query/operands/1/operation").asText());
+		assertEquals("korap:distance",		res.at("/query/operands/1/distances/0/@type").asText());
+		assertEquals("w",					res.at("/query/operands/1/distances/0/key").asText());
+		assertEquals(1,						res.at("/query/operands/1/distances/0/boundary/min").asInt());
+		assertEquals(4,						res.at("/query/operands/1/distances/0/boundary/max").asInt());
+		assertEquals("voran",				res.at("/query/operands/1/operands/0/wrap/key").asText());
+		assertEquals("schnell",				res.at("/query/operands/1/operands/1/wrap/key").asText());
 
 
+	}
 
+	@Test
+	public void testOPNHIT() throws QueryException, JsonProcessingException, IOException {
+		query = "#NHIT(gehen /w1:10 voran)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",		res.at("/query/@type").asText());
+		assertEquals("operation:focus",		res.at("/query/operation").asText());
+		assertEquals(129,					res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
+		assertEquals("classRefOp:inversion",res.at("/query/operands/0/classRefOp").asText());
+		assertEquals(130,					res.at("/query/operands/0/classIn/0").asInt());
+		assertEquals(131,					res.at("/query/operands/0/classIn/1").asInt());
+		assertEquals(129,					res.at("/query/operands/0/classOut").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals("korap:distance",		res.at("/query/operands/0/operands/0/distances/0/@type").asText());
+		assertEquals("w",					res.at("/query/operands/0/operands/0/distances/0/key").asText());
+		assertEquals(1,						res.at("/query/operands/0/operands/0/distances/0/boundary/min").asInt());
+		assertEquals(10,					res.at("/query/operands/0/operands/0/distances/0/boundary/max").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("operation:class",		res.at("/query/operands/0/operands/0/operands/0/operation").asText());
+		assertEquals(130,					res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
+		assertEquals(131,					res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("korap:token",			res.at("/query/operands/0/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("gehen",				res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
+		assertEquals("voran",				res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
 
+		query = "#NHIT(gehen /w1:10 voran /w1:10 Beispiel)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",		res.at("/query/@type").asText());
+		assertEquals("operation:focus",		res.at("/query/operation").asText());
+		assertEquals(129,					res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:class",		res.at("/query/operands/0/operation").asText());
+		assertEquals("classRefOp:inversion",res.at("/query/operands/0/classRefOp").asText());
+		assertEquals(130,					res.at("/query/operands/0/classIn/0").asInt());
+		assertEquals(131,					res.at("/query/operands/0/classIn/1").asInt());
+		assertEquals(129,					res.at("/query/operands/0/classOut").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals("korap:distance",		res.at("/query/operands/0/operands/0/distances/0/@type").asText());
+		assertEquals("w",					res.at("/query/operands/0/operands/0/distances/0/key").asText());
+		assertEquals(1,						res.at("/query/operands/0/operands/0/distances/0/boundary/min").asInt());
+		assertEquals(10,					res.at("/query/operands/0/operands/0/distances/0/boundary/max").asInt());
+		assertEquals("korap:group",			res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("operation:class",		res.at("/query/operands/0/operands/0/operands/0/operation").asText());
+		assertEquals(130,					res.at("/query/operands/0/operands/0/operands/0/classOut").asInt());
+		assertEquals(131,					res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("gehen",				res.at("/query/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
+		assertEquals("operation:focus",		res.at("/query/operands/0/operands/0/operands/1/operands/0/operation").asText());
+		assertEquals(132,					res.at("/query/operands/0/operands/0/operands/1/operands/0/classRef/0").asInt());
+		assertEquals("operation:sequence",	res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operation").asText());
+		assertEquals(132,					res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/0/classOut").asInt());
+		assertEquals("voran",				res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/0/operands/0/wrap/key").asText());
+		assertEquals(132,					res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("Beispiel",			res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
 
+	}
 
+	@Test
+	public void testOPBED() throws QueryException, JsonProcessingException, IOException {
+		query = "#BED(der , sa)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/frames/0").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/1/classOut").asInt());
+		assertEquals("korap:token",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("s",							res.at("/query/operands/0/operands/0/key").asText());
+
+		query = "#BED(der Mann , +pe)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
+		assertEquals("korap:reference",				res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals(-1,							res.at("/query/operands/0/operands/0/spanRef/0").asInt());
+		assertEquals(1,								res.at("/query/operands/0/operands/0/spanRef/1").asInt());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("p",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
+		assertEquals("korap:reference",				res.at("/query/operands/0/operands/1/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals(0,								res.at("/query/operands/0/operands/1/spanRef/0").asInt());
+		assertEquals(1,								res.at("/query/operands/0/operands/1/spanRef/1").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/1/operands/0/classOut").asInt());
+		assertEquals("operation:sequence",			res.at("/query/operands/0/operands/1/operands/0/operands/0/operation").asText());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/wrap/key").asText());
+		assertEquals("Mann",						res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/wrap/key").asText());
+
+		query = "#BED(der Mann , sa,-pa)";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
+
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("operation:sequence",			res.at("/query/operands/0/operands/0/operands/1/operands/0/operation").asText());
+		assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/0/wrap/key").asText());
+		assertEquals("Mann",						res.at("/query/operands/0/operands/0/operands/1/operands/0/operands/1/wrap/key").asText());
+
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/1/frames/0").asText());
+		assertEquals(true,							res.at("/query/operands/0/operands/1/exclude").asBoolean());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/1/operation").asText());
+		assertEquals(130,							res.at("/query/operands/0/operands/1/operands/1/classOut").asInt());
+		assertEquals("operation:sequence",			res.at("/query/operands/0/operands/1/operands/1/operands/0/operation").asText());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key").asText());
+		assertEquals("Mann",						res.at("/query/operands/0/operands/1/operands/1/operands/0/operands/1/wrap/key").asText());
+
+	}
+
+	@Test
+	public void testColonSeparatedConditions() throws QueryException, JsonProcessingException, IOException {
+		query = "der:sa";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/frames/0").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/1/classOut").asInt());
+		assertEquals("korap:token",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("s",							res.at("/query/operands/0/operands/0/key").asText());
+
+		query = "der:sa,-pa";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/1/frames/0").asText());
+		assertEquals(true,							res.at("/query/operands/0/operands/1/exclude").asBoolean());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/1/operation").asText());
+		assertEquals(130,							res.at("/query/operands/0/operands/1/operands/1/classOut").asInt());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/1/operands/0/wrap/key").asText());
+
+		query = "der:sa,-pa,+te";
+		qs.setQuery(query, "cosmas2");
+		res = mapper.readTree(qs.toJSON());
+		assertEquals("korap:reference",				res.at("/query/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operation").asText());
+		assertEquals(129,							res.at("/query/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/frames/0").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/0/frames/0").asText());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("s",							res.at("/query/operands/0/operands/0/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/0/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/0/operands/1/operation").asText());
+		assertEquals(129,							res.at("/query/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("der",							res.at("/query/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+		assertEquals("korap:reference",				res.at("/query/operands/0/operands/1/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operation").asText());
+		assertEquals(130,							res.at("/query/operands/0/operands/1/classRef/0").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/operands/1/operands/0/frames/0").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/operands/0/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operands/0/operation").asText());
+		assertEquals("frames:startswith",			res.at("/query/operands/0/operands/1/operands/0/operands/0/frames/0").asText());
+		assertEquals(true,							res.at("/query/operands/0/operands/1/operands/0/operands/0/exclude").asBoolean());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/@type").asText());
+		assertEquals("p",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/0/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operation").asText());
+		assertEquals(130,							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/classOut").asInt());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/0/operands/1/operands/0/wrap/key").asText());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/operands/1/@type").asText());
+		assertEquals("operation:position",			res.at("/query/operands/0/operands/1/operands/0/operands/1/operation").asText());
+		assertEquals("frames:matches",				res.at("/query/operands/0/operands/1/operands/0/operands/1/frames/0").asText());
+		assertEquals("korap:reference",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation").asText());
+		assertEquals(-1,							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/0").asInt());
+		assertEquals(1,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/spanRef/1").asInt());
+		assertEquals("korap:span",					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/@type").asText());
+		assertEquals("t",							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/0/key").asText());
+		assertEquals("korap:reference",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/@type").asText());
+		assertEquals("operation:focus",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operation").asText());
+		assertEquals(0,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/0").asInt());
+		assertEquals(1,								res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/spanRef/1").asInt());
+		assertEquals("korap:group",					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/@type").asText());
+		assertEquals("operation:class",				res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operation").asText());
+		assertEquals(131,							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/classOut").asInt());
+		assertEquals("der",							res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/1/operands/0/operands/0/wrap/key").asText());
+	}
+}
\ No newline at end of file
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 8abb911..3dc2429 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -923,20 +923,20 @@
 		assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
 		assertEquals(1, 					res.at("/query/operands/0/operands/1/classOut").asInt());
 		assertEquals("Mann", 				res.at("/query/operands/0/operands/1/operands/0/wrap/key").asText());
-		
+
 		query = "focus([orth=Der]{[orth=Mann][orth=geht]})";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("operation:sequence", 	res.at("/query/operands/0/operands/1/operands/0/operation").asText());
 		assertEquals("Mann", 				res.at("/query/operands/0/operands/1/operands/0/operands/0/wrap/key").asText());
 		assertEquals("geht", 				res.at("/query/operands/0/operands/1/operands/0/operands/1/wrap/key").asText());
-		
+
 		query = "focus(2:[orth=Der]{2:[orth=Mann][orth=geht]})";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(2, 					res.at("/query/classRef/0").asInt());
 		assertEquals(2, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-		
+
 		query = "focus(3:startswith(<s>,{3:<np>}))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -947,13 +947,13 @@
 		assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operation").asText());
 		assertEquals(3, 					res.at("/query/operands/0/operands/1/classOut").asInt());
 		assertEquals("frames:startswith", 	res.at("/query/operands/0/frames/0").asText());
-		
+
 		query = "focus(1000:startswith(<s>,{1000:<np>}))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(127, 					res.at("/query/classRef/0").asInt());
 		assertEquals(127, 					res.at("/query/operands/0/operands/1/classOut").asInt());
-		
+
 		query = "focus(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -970,7 +970,7 @@
 		assertEquals("operation:sequence", 	res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operation").asText());
 		assertEquals("operation:class", 	res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/operation").asText());
 		assertEquals(2, 					res.at("/query/operands/0/operands/1/operands/0/operands/1/operands/0/operands/1/classOut").asInt());
-		
+
 		query = "split(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -978,7 +978,7 @@
 		assertEquals(true, 					res.at("/query/classRef/1").isMissingNode());
 		assertEquals("korap:reference", 	res.at("/query/@type").asText());
 		assertEquals("operation:split", 	res.at("/query/operation").asText());
-		
+
 		query = "split(2|3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}}))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -987,7 +987,7 @@
 		assertEquals("classRefOp:intersection", res.at("/query/classRefOp").asText());
 		assertEquals("korap:reference", 		res.at("/query/@type").asText());
 		assertEquals("operation:split", 		res.at("/query/operation").asText());
-		
+
 		query = "focus(1:{[base=der]}{1:[pos=ADJA]})";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -995,7 +995,7 @@
 		assertEquals(1, 					res.at("/query/operands/0/operands/0/classOut").asInt());
 		assertEquals(1, 					res.at("/query/operands/0/operands/1/classOut").asInt());
 	}
-	
+
 	@Test
 	public void testSubmatch() throws QueryException, JsonProcessingException, IOException {
 		query = "submatch(1,:<s>)";
@@ -1006,7 +1006,7 @@
 		assertEquals(1, 					res.at("/query/spanRef/0").asInt());
 		assertEquals(true, 					res.at("/query/spanRef/1").isMissingNode());
 		assertEquals("s", 					res.at("/query/operands/0/key").asText());
-		
+
 		query = "submatch(1,4:<s>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1014,7 +1014,7 @@
 		assertEquals("operation:focus", 	res.at("/query/operation").asText());
 		assertEquals(1, 					res.at("/query/spanRef/0").asInt());
 		assertEquals(4, 					res.at("/query/spanRef/1").asInt());
-		
+
 		query = "submatch(1,4:contains(<s>,[base=Haus]))";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1036,7 +1036,7 @@
 		assertEquals("korap:relation", 		res.at("/query/relation/@type").asText());
 		assertEquals("s", 					res.at("/query/operands/0/key").asText());
 		assertEquals("np", 					res.at("/query/operands/1/key").asText());
-		
+
 		query = "relatesTo([base=Baum],<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1045,13 +1045,13 @@
 		assertEquals("korap:relation", 		res.at("/query/relation/@type").asText());
 		assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("np", 					res.at("/query/operands/1/key").asText());
-		
+
 		query = "relatesTo(Baum,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("orth", 				res.at("/query/operands/0/wrap/layer").asText());
 		assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
-		
+
 		query = "relatesTo(mate/d=HEAD:<np>,[base=Baum])";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1061,7 +1061,7 @@
 		assertEquals("mate", 				res.at("/query/relation/foundry").asText());
 		assertEquals("d", 					res.at("/query/relation/layer").asText());
 		assertEquals("HEAD", 				res.at("/query/relation/key").asText());
-		
+
 		query = "dominates(Baum,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1069,13 +1069,13 @@
 		assertEquals("Baum", 				res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("korap:relation", 		res.at("/query/relation/@type").asText());
 		assertEquals("c", 					res.at("/query/relation/layer").asText());
-		
+
 		query = "dominates(cnx/c:<vp>,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("cnx", 				res.at("/query/relation/foundry").asText());
 		assertEquals("c", 					res.at("/query/relation/layer").asText());
-		
+
 		query = "dominates(cnx/c*:<vp>,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1083,26 +1083,26 @@
 		assertEquals("c", 					res.at("/query/relation/layer").asText());
 		assertEquals(0, 					res.at("/query/relation/boundary/min").asInt());
 		assertEquals(true, 					res.at("/query/relation/boundary/max").isMissingNode());
-		
+
 		query = "dominates(cnx/c{1,5}:<vp>,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(1, 					res.at("/query/relation/boundary/min").asInt());
 		assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
-		
+
 		query = "dominates(cnx/c{,5}:<vp>,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(0, 					res.at("/query/relation/boundary/min").asInt());
 		assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
-		
+
 		query = "dominates(cnx/c{5}:<vp>,<np>)";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals(5, 					res.at("/query/relation/boundary/min").asInt());
 		assertEquals(5, 					res.at("/query/relation/boundary/max").asInt());
 	}
-	
+
 	@Test
 	public void testAlign() throws QueryException, JsonProcessingException, IOException {
 		query = "[orth=der]^[orth=Mann]";
@@ -1113,7 +1113,7 @@
 		assertEquals("operation:class", 	res.at("/query/operands/1/operation").asText());
 		assertEquals(129, 					res.at("/query/operands/1/classOut").asInt());
 		assertEquals(129, 					res.at("/meta/alignment").asInt());
-		
+
 		query = "[orth=der]^[orth=große][orth=Mann]";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1124,7 +1124,7 @@
 		assertEquals("Mann", 				res.at("/query/operands/1/operands/0/operands/1/wrap/key").asText());
 		assertEquals(129, 					res.at("/query/operands/1/classOut").asInt());
 		assertEquals(129, 					res.at("/meta/alignment").asInt());
-		
+
 		query = "([base=a]^[base=b])|[base=c]";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1136,7 +1136,7 @@
 		assertEquals("c", 					res.at("/query/operands/1/wrap/key").asText());
 		assertEquals(129, 					res.at("/query/operands/0/operands/1/classOut").asInt());
 		assertEquals(129, 					res.at("/meta/alignment").asInt());
-		
+
 		query = "([base=a]^[base=b][base=c])|[base=d]";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1144,7 +1144,7 @@
 		assertEquals("b", 					res.at("/query/operands/0/operands/1/operands/0/operands/0/wrap/key").asText());
 		assertEquals("c", 					res.at("/query/operands/0/operands/1/operands/0/operands/1/wrap/key").asText());
 		assertEquals("d", 					res.at("/query/operands/1/wrap/key").asText());
-		
+
 		query = "([base=a]^[base=b]^[base=c])|[base=d]";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1155,7 +1155,7 @@
 		assertEquals(129, 					res.at("/meta/alignment/0").asInt());
 		assertEquals(130, 					res.at("/meta/alignment/1").asInt());
 	}
-	
+
 	@Test
 	public void testSimpleQueries() throws QueryException, JsonProcessingException, IOException {
 		query = "Baum";
@@ -1166,7 +1166,7 @@
 		assertEquals("Baum",				res.at("/query/wrap/key").asText());
 		assertEquals("orth", 				res.at("/query/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/wrap/match").asText());
-		
+
 		query = "Der Baum";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1180,14 +1180,14 @@
 		assertEquals("match:eq",			res.at("/query/operands/0/wrap/match").asText());
 		assertEquals("orth", 				res.at("/query/operands/1/wrap/layer").asText());
 		assertEquals("match:eq",			res.at("/query/operands/1/wrap/match").asText());
-		
+
 		query = "Der große Baum";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
 		assertEquals("Der",					res.at("/query/operands/0/wrap/key").asText());
 		assertEquals("große",				res.at("/query/operands/1/wrap/key").asText());
 		assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
-		
+
 		query = "Der (große|kleine) Baum";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1196,7 +1196,7 @@
 		assertEquals("große",				res.at("/query/operands/1/operands/0/wrap/key").asText());
 		assertEquals("kleine",				res.at("/query/operands/1/operands/1/wrap/key").asText());
 		assertEquals("Baum",				res.at("/query/operands/2/wrap/key").asText());
-		
+
 		query = "der große Baum | der kleine Baum";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
@@ -1207,7 +1207,7 @@
 		assertEquals("der",					res.at("/query/operands/1/operands/0/wrap/key").asText());
 		assertEquals("kleine",				res.at("/query/operands/1/operands/1/wrap/key").asText());
 		assertEquals("Baum",				res.at("/query/operands/1/operands/2/wrap/key").asText());
-		
+
 		query = "Der [p=ADJA] Baum";
 		qs.setQuery(query, "poliqarpplus");
 		res = mapper.readTree(qs.toJSON());
