diff --git a/src/test/java/CosmasTreeTest.java b/src/test/java/CosmasTreeTest.java
index 24306b5..1b28c5a 100644
--- a/src/test/java/CosmasTreeTest.java
+++ b/src/test/java/CosmasTreeTest.java
@@ -7,7 +7,7 @@
 
 public class CosmasTreeTest {
 	
-	CosmasTree ppt;
+	CosmasTree ct;
 	String map;
 	String query;
 	
@@ -19,20 +19,20 @@
 	
 	private boolean equalsQueryContent(String res, String query) throws QueryException {
 		res = res.replaceAll(" ", "");
-		ppt = new CosmasTree(query);
-		String queryMap = ppt.getRequestMap().get("query").toString().replaceAll(" ", "");
+		ct = new CosmasTree(query);
+		String queryMap = ct.getRequestMap().get("query").toString().replaceAll(" ", "");
 		return res.equals(queryMap);
 	}
 	
 //	@Test
 	public void testContext() throws QueryException {
-		String contextString = "{korap = http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/, " +
+		String contextString = "{korap = http://korap.ids-mannheim.de/ns/KorAP/json-ld/v0.1/, " +
 							"boundary = korap:boundary/,"+
 							"group = korap:group/,"+ 
 							"operation = {@id = group:operation/, @type = @id},"+
 							"class = {@id = group:class, @type = xsd:integer},"+
 							"operands = {@id = group:operands, @container = @list},"+
-							"frame = {@id = group:frame/, @type = xsd:integer},"+
+							"frame = {@id = group:frame/, @type = @id},"+
 							"classRef = {@id = group:classRef, @type = xsd:integer},"+
 							"spanRef = {@id = group:spanRef, @type = xsd:integer},"+
 							"classRefOp = {@id = group:classRefOp, @type = @id},"+
@@ -40,11 +40,10 @@
 							"max = {@id = boundary:max, @type = xsd:integer},"+
 							"exclude = {@id = group:exclude, @type = xsd:boolean},"+
 							"distances = {@id = group:distances, @container = @list},"+
-							"inOrder = {@id = group:inOrder, @type = xsd:boolean},"+
+							"inOrder = {@id = group:inOrder, @type = xsd:boolean}"+
 							"}";
-		ppt = new CosmasTree("Test");
-//		assertTrue(equalsContent(contextString, ppt.getRequestMap().get("@context")));
-		assertEquals(contextString.replaceAll(" ", ""), ppt.getRequestMap().get("@context"));
+		ct = new CosmasTree("Test");
+		assertEquals(contextString.replaceAll(" ", ""), ct.getRequestMap().get("@context").toString().replaceAll(" ", ""));
 	}
 	
 	
@@ -52,23 +51,23 @@
 	public void testSingleToken() throws QueryException {
 		query="der";
 		String single1 = 
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}";
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(single1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="Mann";
 		String single2 = 
-				"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}";
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(single2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="&Mann";
 		String single3 = 
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}";
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(single3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -81,9 +80,9 @@
 	public void testMORPH() throws QueryException {
 		query="#MORPH(V)";
 		String morph1 = 
-					"{type=token, key={type=term, key=V, match=eq}}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+					"{@type=korap:token, wrap={@type=korap:term, key=V, match=eq}}";
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(morph1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -91,35 +90,35 @@
 	public void testSequence() throws QueryException {
 		query="der Mann";
 		String seq1 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(seq1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="der Mann schläft";
 		String seq2 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=schläft, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=schläft, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(seq2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="der Mann schläft lang";
 		String seq3 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=schläft, layer=orth, match=eq}}," +
-					"{type=token, key={type=term, key=lang, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=schläft, layer=orth, match=eq}}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=lang, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(seq3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -127,41 +126,41 @@
 	public void testOPOR() throws QueryException {
 		query="Sonne oder Mond";
 		String disj1 = 
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(disj1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="(Sonne scheint) oder Mond";
 		String disj2 = 
-					"{type=group, operation=or, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=scheint, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=scheint, layer=orth, match=eq}}" +
 						"]}," +
-						"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(disj2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="(Sonne scheint) oder (Mond scheint)";
 		String disj3 = 
-				"{type=group, operation=or, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=scheint, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=scheint, layer=orth, match=eq}}" +
 						"]}," +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=scheint, layer=orth, match=eq}}" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=scheint, layer=orth, match=eq}}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(disj3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 	}
@@ -170,28 +169,28 @@
 	public void testOPORAND() throws QueryException {
 		query="(Sonne oder Mond) und scheint";
 		String orand1 = 
-				"{type=group, operation=and, operands=[" +
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:and, operands=[" +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 					"]}," +
-					"{type=token, key={type=term, key=scheint, layer=orth, match=eq}}" +
+					"{@type=korap:token, wrap={@type=korap:term, key=scheint, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(orand1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="scheint und (Sonne oder Mond)";
 		String orand2 = 
-				"{type=group, operation=and, operands=[" +
-					"{type=token, key={type=term, key=scheint, layer=orth, match=eq}}," +
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:and, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=scheint, layer=orth, match=eq}}," +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 					"]}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(orand2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -199,85 +198,85 @@
 	public void testOPPROX() throws QueryException {
 		query="Sonne /+w1:4 Mond";
 		String prox1 = 
-					"{type=group, operation=sequence, inOrder=true, " +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=distance, measure=w, min=1, max=4}" +
+							"{@type=korap:distance, key=w, min=1, max=4}" +
 						"], " +
 						"operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="Sonne /+w1:4,s0,p1:3 Mond";
 		String prox2 = 
-					"{type=group, operation=sequence, inOrder=true, " +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=group, operation=and, operands=[" +
-								"{type=distance, measure=w, min=1, max=4}," +
-								"{type=distance, measure=s, min=0, max=0}," +
-								"{type=distance, measure=p, min=1, max=3}" +
+							"{@type=korap:group, operation=operation:and, operands=[" +
+								"{@type=korap:distance, key=w, min=1, max=4}," +
+								"{@type=korap:distance, key=s, min=0, max=0}," +
+								"{@type=korap:distance, key=p, min=1, max=3}" +
 							"]}" +
 						"], " +
 						"operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="Sonne %+w1:4,s0,p1:3 Mond";
 		String prox3 = 
-				"{type=group, operation=sequence, inOrder=true, " +
+				"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=group, operation=and, operands=[" +
-								"{type=distance, measure=w, min=1, max=4, exclude=true}," +
-								"{type=distance, measure=s, min=0, max=0, exclude=true}," +
-								"{type=distance, measure=p, min=1, max=3, exclude=true}" +
+							"{@type=korap:group, operation=operation:and, operands=[" +
+								"{@type=korap:distance, key=w, min=1, max=4, exclude=true}," +
+								"{@type=korap:distance, key=s, min=0, max=0, exclude=true}," +
+								"{@type=korap:distance, key=p, min=1, max=3, exclude=true}" +
 							"]}" +
 						"], " +
 						"operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="Sonne /+w4 Mond";
 		String prox4 = 
-					"{type=group, operation=sequence, inOrder=true, " +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=distance, measure=w, min=0, max=4}" +
+							"{@type=korap:distance, key=w, min=0, max=4}" +
 						"], " +
 						"operands=[" +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox4.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="Sonne /-w4 Mond";
 		String prox5 = 
-					"{type=group, operation=sequence, inOrder=true, " +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=distance, measure=w, min=0, max=4}" +
+							"{@type=korap:distance, key=w, min=0, max=4}" +
 						"], " +
 						"operands=[" +
-							"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox5.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -285,24 +284,24 @@
 	public void testOPPROXNested() throws QueryException {	
 		query="Sonne /-w4 Mond /+w2 Sterne";
 		String prox6 = 
-					"{type=group, operation=sequence, inOrder=true, " +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 						"distances=[" +
-							"{type=distance, measure=w, min=0, max=4}" +
+							"{@type=korap:distance, key=w, min=0, max=4}" +
 						"], " +
 						"operands=[" +
-							"{type=group, operation=sequence, inOrder=true, " +
+							"{@type=korap:group, operation=operation:sequence, inOrder=true, " +
 								"distances=[" +
-									"{type=distance, measure=w, min=0, max=2}" +
+									"{@type=korap:distance, key=w, min=0, max=2}" +
 								"], " +
 								"operands=[" +
-									"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}," +
-									"{type=token, key={type=term, key=Sterne, layer=orth, match=eq}}" +
+									"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}," +
+									"{@type=korap:token, wrap={@type=korap:term, key=Sterne, layer=orth, match=eq}}" +
 								"]}," +
-							"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}" +
 						"]" +
 					"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(prox6.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -310,58 +309,58 @@
 	public void testOPIN() throws QueryException {
 		query="wegen #IN <s>";
 		String opin1 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=contains, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opin1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="wegen #IN(L) <s>";
 		String opin2 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=startswith, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opin2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="wegen #IN(%, L) <s>";
 		String opin3 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=startswith, exclude=true, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:startswith, exclude=true, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opin3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="wegen #IN('FE,ALL,%,MIN') <s>";
 		String opin4 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=matches, range=all, exclude=true, grouping=false, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:matches, range=all, exclude=true, grouping=false, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opin4.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -369,30 +368,30 @@
 	public void testOPOV() throws QueryException {
 		query="wegen #OV <s>";
 		String opov1 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=overlaps, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:overlaps, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opov1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="wegen #OV(L) <s>";
 		String opov2 = 
-					"{type=group, operation=submatch, classRef=1, operands=[" +
-						"{type=group, operation=position, frame=overlaps-left, operands=[" +
-							"{type=span, key=s}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=token, key={type=term, key=wegen, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:overlaps-left, operands=[" +
+							"{@type=korap:span, key=s}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=wegen, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opov2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -400,12 +399,12 @@
 	public void testOPNOT() throws QueryException {
 		query="Sonne nicht Mond";
 		String opnot1 = 
-					"{type=group, operation=not, operands=[" +
-						"{type=token, key={type=term, key=Sonne, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mond, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:not, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Sonne, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mond, layer=orth, match=eq}}" +
 					"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(opnot1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -417,52 +416,52 @@
 		// http://www.ids-mannheim.de/cosmas2/web-app/hilfe/suchanfrage/eingabe-zeile/thematische-bsp/bsp-satzlaenge.html
 		query="#BEG(der /w3:5 Mann)";
 		String beg1 = 
-				"{type=group, operation=submatch, @spanRef=[0,1], operands=[" +
-					"{type=group, operation=sequence, inOrder=false, distances=[" +
-						"{type=distance, measure=w, min=3, max=5}" +
+				"{@type=korap:group, operation=operation:submatch, @spanRef=[0,1], operands=[" +
+					"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
+						"{@type=korap:distance, key=w, min=3, max=5}" +
 					"]," +
 					"operands = [" +
-						"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 					"]}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(beg1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="#BEG(der /w3:5 Mann) /+w10 kommt"; // nesting #BEG() in a distance group
 		String beg2 = 
-				"{type=group, operation=sequence, inOrder=true, distances=[" +
-					"{type=distance, measure=w, min=0, max=10}" +
+				"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+					"{@type=korap:distance, key=w, min=0, max=10}" +
 				"], operands=[" +
-					"{type=group, operation=submatch, @spanRef=[0,1], operands=[" +
-						"{type=group, operation=sequence, inOrder=false, distances=[" +
-							"{type=distance, measure=w, min=3, max=5}" +
+					"{@type=korap:group, operation=operation:submatch, @spanRef=[0,1], operands=[" +
+						"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
+							"{@type=korap:distance, key=w, min=3, max=5}" +
 						"]," +
 						"operands = [" +
-							"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 						"]}" +
 					"]}," +
-					"{type=token, key={type=term, key=kommt, layer=orth, match=eq}}" +
+					"{@type=korap:token, wrap={@type=korap:term, key=kommt, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(beg2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query="#END(der /w3:5 Mann)";
 		String end1 = 
-				"{type=group, operation=submatch, @spanRef=[-1,1], operands=[" +
-					"{type=group, operation=sequence, inOrder=false, distances=[" +
-						"{type=distance, measure=w, min=3, max=5}" +
+				"{@type=korap:group, operation=operation:submatch, @spanRef=[-1,1], operands=[" +
+					"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
+						"{@type=korap:distance, key=w, min=3, max=5}" +
 					"], " +
 					"operands = [" +
-						"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 					"]}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(end1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -471,9 +470,9 @@
 	public void testELEM() throws QueryException {
 		// http://www.ids-mannheim.de/cosmas2/web-app/hilfe/suchanfrage/eingabe-zeile/syntax/elem.html
 		query="#ELEM(S)";
-		String elem1 = "{type=span, key=s}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		String elem1 = "{@type=korap:span, key=s}";
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(elem1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -481,17 +480,17 @@
 	public void testOPALL() throws QueryException {
 		query="#ALL(gehen /w1:10 voran)";
 		String all1 =
-				"{type=group, operation=sequence, inOrder=false, " +
+				"{@type=korap:group, operation=operation:sequence, inOrder=false, " +
 					"distances=[" +
-						"{type=distance, measure=w, min=1, max=10}" +
+						"{@type=korap:distance, key=w, min=1, max=10}" +
 					"], " +
 					"operands=[" +
-						"{type=token, key={type=term, key=gehen, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=voran, layer=orth, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=eq}}" +
 					"]" +
 				"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(all1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -499,17 +498,17 @@
 	public void testOPNHIT() throws QueryException {
 		query="#NHIT(gehen /w1:10 voran)";
 		String nhit1 = 
-				"{type=group, operation=sequence, inOrder=false, " +
+				"{@type=korap:group, operation=operation:sequence, inOrder=false, " +
 					"distances=[" +
-						"{type=distance, measure=w, min=1, max=10}" +
+						"{@type=korap:distance, key=w, min=1, max=10}" +
 					"], " +
 					"operands=[" +
-						"{type=token, key={type=term, key=gehen, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=voran, layer=orth, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=gehen, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=voran, layer=orth, match=eq}}" +
 					"]" +
 				"}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(nhit1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
@@ -517,47 +516,47 @@
 	public void testOPBED() throws QueryException {
 		query = "#BED(der , sa)";
 		String bed1 = 
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=s}," +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(bed1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query = "#BED(der Mann , +pe)";
 		String bed2 = 
-				"{type=group, operation=position, frame=endswith, operands=[" +
-					"{type=span, key=p}," +
-					"{type=group, operation=sequence, operands=[" +
-						"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-						"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:position, frame=frame:endswith, operands=[" +
+					"{@type=korap:span, key=p}," +
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 					"]}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(bed2.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		query = "#BED(der Mann , sa,-pa)";
 		String bed3 = 
-				"{type=group, operation=and, operands=[" +
-					"{type=group, operation=position, frame=startswith, operands=[" +
-						"{type=span, key=s}," +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:and, operands=[" +
+					"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+						"{@type=korap:span, key=s}," +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 						"]}" +
 					"]}," +
-					"{type=group, operation=position, frame=startswith, exclude=true, operands=[" +
-						"{type=span, key=p}," +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+					"{@type=korap:group, operation=operation:position, frame=frame:startswith, exclude=true, operands=[" +
+						"{@type=korap:span, key=p}," +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 						"]}" +
 					"]}" +
 				"]}";
-		ppt = new CosmasTree(query);
-		map = ppt.getRequestMap().get("query").toString();
+		ct = new CosmasTree(query);
+		map = ct.getRequestMap().get("query").toString();
 		assertEquals(bed3.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 1837a1b..5a69053 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -2,6 +2,7 @@
 
 import org.junit.Test;
 
+import de.ids_mannheim.korap.query.serialize.CosmasTree;
 import de.ids_mannheim.korap.query.serialize.PoliqarpPlusTree;
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -25,39 +26,53 @@
 	
 //	@Test
 	public void testContext() throws QueryException {
-		String contextString = "{korap=http://korap.ids-mannheim.de/ns/query, @language=de, operands={@id=korap:operands, @container=@list}, operation={@id=korap:relation, type=korap:relation#types}, class={@id=korap:class, type=xsd:integer}, query=korap:query, filter=korap:filter, meta=korap:meta}";
-		ppt = new PoliqarpPlusTree("[base=test]");
-//		assertTrue(equalsContent(contextString, ppt.getRequestMap().get("@context")));
-		assertEquals(contextString, ppt.getRequestMap().get("@context"));
+		String contextString = "{korap = http://korap.ids-mannheim.de/ns/KorAP/json-ld/v0.1/, " +
+							"boundary = korap:boundary/,"+
+							"group = korap:group/,"+ 
+							"operation = {@id = group:operation/, @type = @id},"+
+							"class = {@id = group:class, @type = xsd:integer},"+
+							"operands = {@id = group:operands, @container = @list},"+
+							"frame = {@id = group:frame/, @type = @id},"+
+							"classRef = {@id = group:classRef, @type = xsd:integer},"+
+							"spanRef = {@id = group:spanRef, @type = xsd:integer},"+
+							"classRefOp = {@id = group:classRefOp, @type = @id},"+
+							"min = {@id = boundary:min, @type = xsd:integer},"+
+							"max = {@id = boundary:max, @type = xsd:integer},"+
+							"exclude = {@id = group:exclude, @type = xsd:boolean},"+
+							"distances = {@id = group:distances, @container = @list},"+
+							"inOrder = {@id = group:inOrder, @type = xsd:boolean}"+
+							"}";
+		ppt = new PoliqarpPlusTree("Test");
+		assertEquals(contextString.replaceAll(" ", ""), ppt.getRequestMap().get("@context").toString().replaceAll(" ", ""));
 	}
 	
 	@Test
 	public void testSingleTokens() throws QueryException {
 		// [base=Mann]
-		String token1 = "{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}";
+		String token1 = "{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}";
 		assertTrue(equalsQueryContent(token1, "[base=Mann]"));
 		
 		// [orth!=Frau]
-		String token2 = "{type=token, key={type=term, key=Frau, layer=orth, match=ne}}";
+		String token2 = "{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=ne}}";
 		assertTrue(equalsQueryContent(token2, "[orth!=Frau]"));
 		
 		// [!p=NN]
-		String token3 = "{type=token, key={type=term, key=NN, layer=p, match=ne}}";
+		String token3 = "{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=ne}}";
 		assertTrue(equalsQueryContent(token3, "[!p=NN]"));
 		
 		// [!p!=NN]
-		String token4 = "{type=token, key={type=term, key=NN, layer=p, match=eq}}";
+		String token4 = "{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=eq}}";
 		assertTrue(equalsQueryContent(token4, "[!p!=NN]"));
 	}
 	
 	@Test
 	public void testElements() throws QueryException {
 		// <s>
-		String elem1 = "{type=span, key=s}";
+		String elem1 = "{@type=korap:span, key=s}";
 		assertTrue(equalsQueryContent(elem1, "<s>"));
 		
 		// <vp>
-		String elem2 = "{type=span, key=vp}";
+		String elem2 = "{@type=korap:span, key=vp}";
 		assertTrue(equalsQueryContent(elem2, "<vp>"));
 	}
 	
@@ -65,12 +80,12 @@
 	public void testEmptyTokens() throws QueryException {
 		// [base=der][][base=Mann]
 		String et1 = 
-			"{type=group, operation=sequence, inOrder=true, distances=[" +
-				"{type=distance, measure=w, min=1, max=1}" +
+			"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+				"{@type=korap:distance, key=w, min=1, max=1}" +
 			"], " +
 			"operands=[" +
-				"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+				"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 			"]}";
 		ppt = new PoliqarpPlusTree("[base=der][][base=Mann]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -78,12 +93,12 @@
 		
 		// [base=der][][][base=Mann]
 		String et2 = 
-			"{type=group, operation=sequence, inOrder=true, distances=[" +
-				"{type=distance, measure=w, min=2, max=2}" +
+			"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+				"{@type=korap:distance, key=w, min=2, max=2}" +
 			"], " +
 			"operands=[" +
-				"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+				"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 			"]}";
 		ppt = new PoliqarpPlusTree("[base=der][][][base=Mann]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -91,12 +106,12 @@
 		
 		// [base=der][][]?[base=Mann]
 		String et3 = 
-			"{type=group, operation=sequence, inOrder=true, distances=[" +
-				"{type=distance, measure=w, min=1, max=2}" +
+			"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+				"{@type=korap:distance, key=w, min=1, max=2}" +
 			"], " +
 			"operands=[" +
-				"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+				"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 			"]}";
 		ppt = new PoliqarpPlusTree("[base=der][][]?[base=Mann]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -105,10 +120,10 @@
 		
 		// startswith(<s>, [][base=Mann]
 		String et4 = 
-			"{type=group, operation=position, frame=startswith, operands=[" +	
-				"{type=span, key=s}," +
-				"{type=group, operation=sequence, offset-min=1, offset-max=1, operands=[" +
-					"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+			"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +	
+				"{@type=korap:span, key=s}," +
+				"{@type=korap:group, operation=operation:sequence, offset-min=1, offset-max=1, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 				"]}" +
 			"]}";
 		ppt = new PoliqarpPlusTree("startswith(<s>, [][base=Mann])");
@@ -117,17 +132,17 @@
 		
 		// [base=der][]{2,5}[base=Mann][]?[][base=Frau]   nested distances=
 		String et5 = 
-				"{type=group, operation=sequence, inOrder=true, distances=[" +
-					"{type=distance, measure=w, min=2, max=5}" +
+				"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+					"{@type=korap:distance, key=w, min=2, max=5}" +
 				"], " +
 				"operands=[" +
-					"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-					"{type=group, operation=sequence, inOrder=true, distances=[" +
-						"{type=distance, measure=w, min=1, max=2}" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+					"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
+						"{@type=korap:distance, key=w, min=1, max=2}" +
 					"], " +
 					"operands=[" +
-						"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}," +
-						"{type=token, key={type=term, key=Frau, layer=lemma, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=lemma, match=eq}}" +
 					"]}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("[base=der][]{2,5}[base=Mann][]?[][base=Frau]");
@@ -140,14 +155,14 @@
 	public void testCoordinatedFields() throws QueryException {
 		// [base=Mann&(cas=N|cas=A)]
 		String cof1 = 
-			"{type=token, key=" +
-				"{type=group, operands=[" +
-					"{type=term, key=Mann, layer=lemma, match=eq}," +
-					"{type=group, operands=[" +
-						"{type=term, key=N, layer=cas, match=eq}," +
-						"{type=term, key=A, layer=cas, match=eq}" +
-					"], operation=or}" +
-				"], operation=and}" +
+			"{@type=korap:token, wrap=" +
+				"{@type=korap:group, operands=[" +
+					"{@type=korap:term, key=Mann, layer=lemma, match=eq}," +
+					"{@type=korap:group, operands=[" +
+						"{@type=korap:term, key=N, layer=cas, match=eq}," +
+						"{@type=korap:term, key=A, layer=cas, match=eq}" +
+					"], operation=operation:or}" +
+				"], operation=operation:and}" +
 			"}";
 		ppt = new PoliqarpPlusTree("[base=Mann&(cas=N|cas=A)]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -161,12 +176,12 @@
 		
 		// [base=Mann&cas=N&gen=m]
 		String cof2 = 
-			"{type=token, key=" +
-				"{type=group, operands=[" +
-					"{type=term, key=Mann, layer=lemma, match=eq}," +
-					"{type=term, key=N, layer=cas, match=eq}," +
-					"{type=term, key=m, layer=gen, match=eq}" +
-				"], operation=and}" +
+			"{@type=korap:token, wrap=" +
+				"{@type=korap:group, operands=[" +
+					"{@type=korap:term, key=Mann, layer=lemma, match=eq}," +
+					"{@type=korap:term, key=N, layer=cas, match=eq}," +
+					"{@type=korap:term, key=m, layer=gen, match=eq}" +
+				"], operation=operation:and}" +
 			"}";
 		ppt = new PoliqarpPlusTree("[base=Mann&cas=N&gen=m]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -176,20 +191,20 @@
 	@Test
 	public void testOccurrence() throws QueryException {
 		// [base=foo]*
-		String occ1 = "{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					  "], operation=repetition, @min=0, @max=100}"; 
+		String occ1 = "{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					  "], operation=operation:repetition, min=0, max=100}"; 
 		ppt = new PoliqarpPlusTree("[base=foo]*");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// [base=foo]*[base=bar]
 		String occ2 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					"], operation=repetition, @min=0, @max=100 }," +
-					"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					"], operation=operation:repetition, min=0, max=100 }," +
+					"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}" +
 				"]}"; 
 		ppt = new PoliqarpPlusTree("[base=foo]*[base=bar]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -197,11 +212,11 @@
 		
 		// [base=bar][base=foo]*
 		String occ3 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-					"{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					"], operation=repetition, @min=0, @max=100 }" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+					"{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					"], operation=operation:repetition, min=0, max=100 }" +
 				"]}"; 
 		ppt = new PoliqarpPlusTree("[base=bar][base=foo]*");
 		map = ppt.getRequestMap().get("query").toString();
@@ -209,26 +224,26 @@
 		
 		// ([base=bar][base=foo])*
 		String occ4 = 
-				"{type=group, operands=[" +	
-					"{type=group, operation=sequence, operands=[" +
-						"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-						"{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operands=[" +	
+					"{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
 					"]}" +
-				"], operation=repetition, @min=0, @max=100 }" ;
+				"], operation=operation:repetition, min=0, max=100 }" ;
 		ppt = new PoliqarpPlusTree("([base=bar][base=foo])*");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ4.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// <s>([base=bar][base=foo])*
 		String occ5 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=span, key=s}," +
-					"{type=group, operands=[" +	
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-							"{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:group, operands=[" +	
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
 						"]}" +
-					"], operation=repetition, @min=0, @max=100 }" +
+					"], operation=operation:repetition, min=0, max=100 }" +
 				"]}" ;
 		ppt = new PoliqarpPlusTree("<s>([base=bar][base=foo])*");
 		map = ppt.getRequestMap().get("query").toString();
@@ -236,15 +251,15 @@
 		
 		// <s><np>([base=bar][base=foo])*
 		String occ6 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=span, key=s}," +
-					"{type=span, key=np}," +
-					"{type=group, operands=[" +	
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-							"{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:span, key=np}," +
+					"{@type=korap:group, operands=[" +	
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
 						"]}" +
-					"], operation=repetition, @min=0, @max=100 }" +
+					"], operation=operation:repetition, min=0, max=100 }" +
 				"]}" ;
 		ppt = new PoliqarpPlusTree("<s><np>([base=bar][base=foo])*");
 		map = ppt.getRequestMap().get("query").toString();
@@ -254,16 +269,16 @@
 		// comment: embedded sequence shouldn't really be here, but does not really hurt, either. (?)
 		// really hard to get this behaviour out of the PQPlus grammar...
 		String occ7 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=span, key=s}," +
-					"{type=span, key=np}," +
-					"{type=group, operands=[" +	
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-							"{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:span, key=np}," +
+					"{@type=korap:group, operands=[" +	
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
 						"]}" +
-					"], operation=repetition, @min=0, @max=100 }," +
-					"{type=token, key={type=term, key=NN, layer=p, match=eq}}" +
+					"], operation=operation:repetition, min=0, max=100 }," +
+					"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=eq}}" +
 				"]}" ;
 		ppt = new PoliqarpPlusTree("<s><np>([base=bar][base=foo])*[p=NN]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -271,39 +286,39 @@
 		
 		// ([base=bar][base=foo])*[p=NN]
 		String occ8 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=group, operands=[" +	
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=bar, layer=lemma, match=eq}}," +
-							"{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:group, operands=[" +	
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=bar, layer=lemma, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
 						"]}" +
-					"], operation=repetition, @min=0, @max=100 }," +
-					"{type=token, key={type=term, key=NN, layer=p, match=eq}}" +
+					"], operation=operation:repetition, min=0, max=100 }," +
+					"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=eq}}" +
 				"]}" ;
 		ppt = new PoliqarpPlusTree("([base=bar][base=foo])*[p=NN]");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ8.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// [base=foo]+
-		String occ9 = "{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					  "], operation=repetition, @min=1, @max=100}"; 
+		String occ9 = "{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					  "], operation=operation:repetition, min=1, max=100}"; 
 		ppt = new PoliqarpPlusTree("[base=foo]+");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ9.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// [base=foo]?
-		String occ10 = "{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					  "], operation=repetition, @min=0, @max=1}"; 
+		String occ10 = "{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					  "], operation=operation:repetition, min=0, max=1}"; 
 		ppt = new PoliqarpPlusTree("[base=foo]?");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ10.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// [base=foo]{2,5}
-		String occ11 = "{type=group, operands=[" +
-					     "{type=token, key={type=term, key=foo, layer=lemma, match=eq}}" +
-					  "], operation=repetition, @min=2, @max=5}"; 
+		String occ11 = "{@type=korap:group, operands=[" +
+					     "{@type=korap:token, wrap={@type=korap:term, key=foo, layer=lemma, match=eq}}" +
+					  "], operation=operation:repetition, min=2, max=5}"; 
 		ppt = new PoliqarpPlusTree("[base=foo]{2,5}");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(occ11.replaceAll(" ", ""), map.replaceAll(" ", ""));
@@ -312,17 +327,17 @@
 	@Test
 	public void testTokenSequence() throws QueryException {
 		// [base=Mann][orth=Frau]
-		String seq1 = "{type=group, operation=sequence, operands=[" +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}, " +
-				"{type=token, key={type=term, key=Frau, layer=orth, match=eq}}" +
+		String seq1 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}, " +
+				"{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=eq}}" +
 				"]}";
 		assertTrue(equalsQueryContent(seq1, "[base=Mann][orth=Frau]"));
 		
 		// [base=Mann][orth=Frau][p=NN]
-		String seq2 = "{type=group, operation=sequence, operands=[" +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}, " +
-				"{type=token, key={type=term, key=Frau, layer=orth, match=eq}}, " +
-				"{type=token, key={type=term, key=NN,layer=p, match=eq}}" +
+		String seq2 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}, " +
+				"{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=eq}}, " +
+				"{@type=korap:token, wrap={@type=korap:term, key=NN,layer=p, match=eq}}" +
 				"]}";
 		assertTrue(equalsQueryContent(seq2, "[base=Mann][orth=Frau][p=NN]"));
 	}
@@ -331,12 +346,12 @@
 	public void testDisjSegments() throws QueryException {
 		// ([base=der]|[base=das])[base=Schild]
 		String disj1 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-						"{type=token, key={type=term, key=das, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=das, layer=lemma, match=eq}}" +
 					"]}," +
-					"{type=token, key={type=term, key=Schild, layer=lemma, match=eq}}" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Schild, layer=lemma, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("([base=der]|[base=das])[base=Schild]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -344,11 +359,11 @@
 		
 		// [base=Schild]([base=der]|[base=das])
 		String disj2 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Schild, layer=lemma, match=eq}}," +
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-						"{type=token, key={type=term, key=das, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Schild, layer=lemma, match=eq}}," +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+						"{@type=korap:token, wrap={@type=korap:term, key=das, layer=lemma, match=eq}}" +
 					"]}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("[base=Schild]([base=der]|[base=das])");
@@ -359,24 +374,24 @@
 	@Test
 	public void testTokenElemSequence() throws QueryException {
 		// [base=Mann]<vp>
-		String seq1 = "{type=group, operation=sequence, operands=[" +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}, " +
-				"{type=span, key=vp}" +
+		String seq1 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}, " +
+				"{@type=korap:span, key=vp}" +
 				"]}";
 		assertTrue(equalsQueryContent(seq1, "[base=Mann]<vp>"));
 		
 		// <vp>[base=Mann]
-		String seq2 = "{type=group, operation=sequence, operands=[" +
-				"{type=span, key=vp}, "+
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}} " +
+		String seq2 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:span, key=vp}, "+
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}} " +
 				"]}";
 		assertTrue(equalsQueryContent(seq2, "<vp>[base=Mann]"));
 		
 		// <vp>[base=Mann]<pp>
-		String seq3 = "{type=group, operation=sequence, operands=[" +
-				"{type=span, key=vp}, "+
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}, " +
-				"{type=span, key=pp} "+
+		String seq3 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:span, key=vp}, "+
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}, " +
+				"{@type=korap:span, key=pp} "+
 				"]}";
 		assertTrue(equalsQueryContent(seq3, "<vp>[base=Mann]<pp>"));
 	}
@@ -384,17 +399,17 @@
 	@Test
 	public void testElemSequence() throws QueryException {
 		// <np><vp>
-		String seq1 = "{type=group, operation=sequence, operands=[" +
-				"{type=span, key=np}," +
-				"{type=span, key=vp}" +
+		String seq1 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:span, key=np}," +
+				"{@type=korap:span, key=vp}" +
 				"]}";
 		assertTrue(equalsQueryContent(seq1, "<np><vp>"));
 		
 		// <np><vp><pp>
-		String seq2 = "{type=group, operation=sequence, operands=[" +
-				"{type=span, key=np}," +
-				"{type=span, key=vp}," +
-				"{type=span, key=pp}" +
+		String seq2 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+				"{@type=korap:span, key=np}," +
+				"{@type=korap:span, key=vp}," +
+				"{@type=korap:span, key=pp}" +
 				"]}";
 		assertTrue(equalsQueryContent(seq2, "<np><vp><pp>"));
 	}
@@ -402,55 +417,55 @@
 	@Test 
 	public void testClasses() throws QueryException {
 		// {[base=Mann]}
-		String cls1 = "{type=group, operation=class, class=0, operands=[" +
-				"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+		String cls1 = "{@type=korap:group, operation=operation:class, class=0, operands=[" +
+				"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("{[base=Mann]}");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(cls1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// {[base=Mann][orth=Frau]}
-		String cls2 = "{type=group, operation=class, class=0, operands=[" +
-				 "{type=group, operation=sequence, operands=[" +
-				  "{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}," +
-				  "{type=token, key={type=term, key=Frau, layer=orth, match=eq}}" +
+		String cls2 = "{@type=korap:group, operation=operation:class, class=0, operands=[" +
+				 "{@type=korap:group, operation=operation:sequence, operands=[" +
+				  "{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}," +
+				  "{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=eq}}" +
 				 "]}" +
 				"]}";
 		assertTrue(equalsQueryContent(cls2, "{[base=Mann][orth=Frau]}"));
 		
 		// [p=NN]{[base=Mann][orth=Frau]}
-		String cls3 = "{type=group, operation=sequence, operands=[" +
-						"{type=token, key={type=term, key=NN, layer=p, match=eq}}," +
-						"{type=group, operation=class, class=0, operands=[" +
-							"{type=group, operation=sequence, operands=[" +
-								"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}," +
-								"{type=token, key={type=term, key=Frau, layer=orth, match=eq}}" +
+		String cls3 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=eq}}," +
+						"{@type=korap:group, operation=operation:class, class=0, operands=[" +
+							"{@type=korap:group, operation=operation:sequence, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}," +
+								"{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=eq}}" +
 							"]}" +
 						"]}" +
 					  "]}";
 		assertTrue(equalsQueryContent(cls3, "[p=NN]{[base=Mann][orth=Frau]}"));
 		
 		// {[base=Mann][orth=Frau]}[p=NN]
-		String cls4 = "{type=group, operation=sequence, operands=[" +
-						"{type=group, operation=class, class=0, operands=[" +
-						   "{type=group, operation=sequence, operands=[" +
-						     "{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}," +
-						     "{type=token, key={type=term, key=Frau, layer=orth, match=eq}}" +
+		String cls4 = "{@type=korap:group, operation=operation:sequence, operands=[" +
+						"{@type=korap:group, operation=operation:class, class=0, operands=[" +
+						   "{@type=korap:group, operation=operation:sequence, operands=[" +
+						     "{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}," +
+						     "{@type=korap:token, wrap={@type=korap:term, key=Frau, layer=orth, match=eq}}" +
 						   "]}" +
 						"]}," +
-						"{type=token, key={type=term, key=NN, layer=p, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, match=eq}}" +
 					  "]}";
 		ppt = new PoliqarpPlusTree("{[base=Mann][orth=Frau]}[p=NN]");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(cls4.replaceAll(" ", ""), map.replaceAll(" ", ""));
 
 		// {2:{1:[tt/p=ADJA]}[mate/p=NN]}"
-		String cls5 = "{type=group, operation=class, class=2, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-						   "{type=group, operation=class, class=1, operands=[" +
-						     "{type=token, key={type=term, key=ADJA, layer=p, foundry=tt, match=eq}}" +
+		String cls5 = "{@type=korap:group, operation=operation:class, class=2, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+						   "{@type=korap:group, operation=operation:class, class=1, operands=[" +
+						     "{@type=korap:token, wrap={@type=korap:term, key=ADJA, layer=p, foundry=tt, match=eq}}" +
 						   "]}," +
-						   "{type=token, key={type=term, key=NN, layer=p, foundry=mate, match=eq}}" + 
+						   "{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, foundry=mate, match=eq}}" + 
 						"]}" +
 					  "]}";
 		ppt = new PoliqarpPlusTree("{2: {1:[tt/p=ADJA]}[mate/p=NN]}");
@@ -461,25 +476,25 @@
 	@Test
 	public void testPositions() throws QueryException {
 		// contains(<s>,<np>)
-		String pos1 = "{type=group, operation=position, frame=contains, operands=[" +
-				  "{type=span, key=s}," +
-				  "{type=span, key=np}" +
+		String pos1 = "{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+				  "{@type=korap:span, key=s}," +
+				  "{@type=korap:span, key=np}" +
 				"]}";
 		assertTrue(equalsQueryContent(pos1, "contains(<s>,<np>)"));
 		
 		// contains(<s>,[base=Mann])
-		String pos2 = "{type=group, operation=position, frame=contains, operands=[" +
-				  "{type=span, key=s}," +
-				  "{type=token, key= {type=term, key=Mann, layer=lemma, match=eq}}" +
+		String pos2 = "{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+				  "{@type=korap:span, key=s}," +
+				  "{@type=korap:token, wrap= {@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 				"]}";
 		assertTrue(equalsQueryContent(pos2, "contains(<s>,[base=Mann])"));
 		
 		// contains(<s>,[orth=der][orth=Mann])
-		String pos3 = "{type=group, operation=position, frame=contains, operands=[" +
-				  	"{type=span, key=s}," +
-				  	"{type=group, operation=sequence, operands=[" +
-				  		"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-				  		"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+		String pos3 = "{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+				  	"{@type=korap:span, key=s}," +
+				  	"{@type=korap:group, operation=operation:sequence, operands=[" +
+				  		"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+				  		"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 				  	"]}" +
 				  "]}";
 		ppt = new PoliqarpPlusTree("contains(<s>,[orth=der][orth=Mann])");
@@ -488,11 +503,11 @@
 		
 		// [base=Auto]contains(<s>,[base=Mann])
 		String pos4 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Auto, layer=lemma, match=eq}}," +
-					"{type=group, operation=position, frame=contains, operands=[" +
-				  		"{type=span, key=s}," +
-				  		"{type=token, key={type=term, key=Mann, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Auto, layer=lemma, match=eq}}," +
+					"{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+				  		"{@type=korap:span, key=s}," +
+				  		"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=lemma, match=eq}}" +
 				  	"]}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("[base=Auto]contains(<s>,[base=Mann])");
@@ -504,11 +519,11 @@
 	public void testNestedPositions() throws QueryException {
 		// contains(<s>,startswith(<np>,[orth=Der]))
 		String npos1 = 
-			"{type=group, operation=position, frame=contains, operands=[" +
-				"{type=span, key=s}," +
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=np}," +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}" +
+			"{@type=korap:group, operation=operation:position, frame=frame:contains, operands=[" +
+				"{@type=korap:span, key=s}," +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=np}," +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}" +
 				"]}" +
 			"]}";
 		ppt = new PoliqarpPlusTree("contains(<s>, startswith(<np>,[orth=Der]))");
@@ -520,11 +535,11 @@
 	public void testShrinkSplit() throws QueryException {
 		// shrink([orth=Der]{[orth=Mann]})
 		String shr1 = 
-			"{type=group, operation=submatch, classRef=[0], operands=[" +
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}," +
-					"{type=group, operation=class, class=0, operands=[" +
-						"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+			"{@type=korap:group, operation=operation:submatch, classRef=[0], operands=[" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}," +
+					"{@type=korap:group, operation=operation:class, class=0, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 					"]}" +
 				"]}" +
 			"]}";
@@ -534,13 +549,13 @@
 		
 		// shrink([orth=Der]{[orth=Mann][orth=geht]})
 		String shr2 = 
-			"{type=group, operation=submatch, classRef=[0], operands=[" +
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}," +
-					"{type=group, operation=class, class=0, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=geht, layer=orth, match=eq}}" +
+			"{@type=korap:group, operation=operation:submatch, classRef=[0], operands=[" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}," +
+					"{@type=korap:group, operation=operation:class, class=0, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=geht, layer=orth, match=eq}}" +
 						"]}" +
 					"]}" +
 				"]}" +
@@ -551,13 +566,13 @@
 		
 		// shrink(1:[orth=Der]{1:[orth=Mann][orth=geht]})
 		String shr3 = 
-			"{type=group, operation=submatch, classRef=[1], operands=[" +
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}," +
-					"{type=group, operation=class, class=1, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=geht, layer=orth, match=eq}}" +
+			"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}," +
+					"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=geht, layer=orth, match=eq}}" +
 						"]}" +
 					"]}" +
 				"]}" +
@@ -568,11 +583,11 @@
 		
 		// shrink(1:startswith(<s>,{1:<np>}))
 		String shr4 = 
-			"{type=group, operation=submatch, classRef=[1], operands=[" +
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=s}," +
-					"{type=group, operation=class, class=1, operands=[" +
-						"{type=span, key=np}" +
+			"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+						"{@type=korap:span, key=np}" +
 					"]}" +
 				"]}" +
 			"]}";
@@ -582,17 +597,17 @@
 		
 		// shrink(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
 		String shr5 = 
-			"{type=group, operation=submatch, classRef=[3], operands=[" +
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=s}," +
-					"{type=group, operation=class, class=3, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=group, operation=sequence, operands=[" +
-									"{type=token, key={type=term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
-									"{type=group, operation=class, class=2, operands=[" +
-										"{type=token, key={type=term, key=NN, layer=p, foundry=tt, match=eq}}" +
+			"{@type=korap:group, operation=operation:submatch, classRef=[3], operands=[" +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:group, operation=operation:class, class=3, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:group, operation=operation:sequence, operands=[" +
+									"{@type=korap:token, wrap={@type=korap:term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
+									"{@type=korap:group, operation=operation:class, class=2, operands=[" +
+										"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, foundry=tt, match=eq}}" +
 									"]}" + 
 								"]}" +
 							"]}" +
@@ -606,17 +621,17 @@
 		
 		// split(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
 		String shr6 = 
-			"{type=group, operation=split, classRef=[3], operands=[" +
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=s}," +
-					"{type=group, operation=class, class=3, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=group, operation=sequence, operands=[" +
-									"{type=token, key={type=term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
-									"{type=group, operation=class, class=2, operands=[" +
-										"{type=token, key={type=term, key=NN, layer=p, foundry=tt, match=eq}}" +
+			"{@type=korap:group, operation=operation:split, classRef=[3], operands=[" +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:group, operation=operation:class, class=3, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:group, operation=operation:sequence, operands=[" +
+									"{@type=korap:token, wrap={@type=korap:term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
+									"{@type=korap:group, operation=operation:class, class=2, operands=[" +
+										"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, foundry=tt, match=eq}}" +
 									"]}" + 
 								"]}" +
 							"]}" +
@@ -630,17 +645,17 @@
 		
 		// split(2|3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
 		String shr7 = 
-			"{type=group, operation=split, classRef=[2, 3], classRefOp=intersection, operands=[" +
-				"{type=group, operation=position, frame=startswith, operands=[" +
-					"{type=span, key=s}," +
-					"{type=group, operation=class, class=3, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=der, layer=lemma, match=eq}}," +
-							"{type=group, operation=class, class=1, operands=[" +
-								"{type=group, operation=sequence, operands=[" +
-									"{type=token, key={type=term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
-									"{type=group, operation=class, class=2, operands=[" +
-										"{type=token, key={type=term, key=NN, layer=p, foundry=tt, match=eq}}" +
+			"{@type=korap:group, operation=operation:split, classRef=[2, 3], classRefOp=classRefOp:intersection, operands=[" +
+				"{@type=korap:group, operation=operation:position, frame=frame:startswith, operands=[" +
+					"{@type=korap:span, key=s}," +
+					"{@type=korap:group, operation=operation:class, class=3, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=der, layer=lemma, match=eq}}," +
+							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
+								"{@type=korap:group, operation=operation:sequence, operands=[" +
+									"{@type=korap:token, wrap={@type=korap:term, key=ADJA, layer=p, foundry=mate, match=eq}}," +
+									"{@type=korap:group, operation=operation:class, class=2, operands=[" +
+										"{@type=korap:token, wrap={@type=korap:term, key=NN, layer=p, foundry=tt, match=eq}}" +
 									"]}" + 
 								"]}" +
 							"]}" +
@@ -657,7 +672,7 @@
 	@Test
 	public void testFoundries() throws QueryException {
 		// [tt/base=Mann]
-		String layer1 = "{type=token, key={type=term, key=Mann, layer=base, foundry=tt, match=eq}}";
+		String layer1 = "{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=base, foundry=tt, match=eq}}";
 		ppt = new PoliqarpPlusTree("[tt/base=Mann]");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(layer1.replaceAll(" ", ""), map.replaceAll(" ", ""));
@@ -668,10 +683,10 @@
 	public void testAlign() throws QueryException {
 		// [orth=der]^[orth=Mann]
 		String align1 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-					"{type=group, alignment=left, operands=[" +
-						"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+					"{@type=korap:group, alignment=left, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 					"]}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("[orth=der]^[orth=Mann]");
@@ -681,12 +696,12 @@
 		// [orth=der]^[orth=große][orth=Mann]
 		String query = "[orth=der]^[orth=große][orth=Mann]";
 		String align1b = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=der, layer=orth, match=eq}}," +
-					"{type=group, alignment=left, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=große, layer=orth, match=eq}}," +
-							"{type=token, key={type=term, key=Mann, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=der, layer=orth, match=eq}}," +
+					"{@type=korap:group, alignment=left, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=große, layer=orth, match=eq}}," +
+							"{@type=korap:token, wrap={@type=korap:term, key=Mann, layer=orth, match=eq}}" +
 						"]}" +
 					"]}" +
 				"]}";
@@ -696,14 +711,14 @@
 		
 		// "([base=a]^[base=b])|[base=c]",
 		String align2 = 
-				"{type=group, operation=or, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=a, layer=lemma, match=eq}}," +
-							"{type=group, alignment=left, operands=[" +
-								"{type=token, key={type=term, key=b, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=a, layer=lemma, match=eq}}," +
+							"{@type=korap:group, alignment=left, operands=[" +
+								"{@type=korap:token, wrap={@type=korap:term, key=b, layer=lemma, match=eq}}" +
 							"]}" +
 						"]}," +
-						"{type=token, key={type=term, key=c, layer=lemma, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=c, layer=lemma, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("([base=a]^[base=b])|[base=c]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -711,17 +726,17 @@
 		
 		// "([base=a]^[base=b][base=c])|[base=d]",
 		String align3 = 
-				"{type=group, operation=or, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=a, layer=lemma, match=eq}}," +
-							"{type=group, alignment=left, operands=[" +
-								"{type=group, operation=sequence, operands=[" +
-									"{type=token, key={type=term, key=b, layer=lemma, match=eq}}," +
-									"{type=token, key={type=term, key=c, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=a, layer=lemma, match=eq}}," +
+							"{@type=korap:group, alignment=left, operands=[" +
+								"{@type=korap:group, operation=operation:sequence, operands=[" +
+									"{@type=korap:token, wrap={@type=korap:term, key=b, layer=lemma, match=eq}}," +
+									"{@type=korap:token, wrap={@type=korap:term, key=c, layer=lemma, match=eq}}" +
 								"]}" +
 							"]}" +
 						"]}," +
-						"{type=token, key={type=term, key=d, layer=lemma, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=d, layer=lemma, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("([base=a]^[base=b][base=c])|[base=d]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -729,19 +744,19 @@
 		
 		// "([base=a]^[base=b]^[base=c])|[base=d]",
 		String align4 = 
-				"{type=group, operation=or, operands=[" +
-						"{type=group, operation=sequence, operands=[" +
-							"{type=token, key={type=term, key=a, layer=lemma, match=eq}}," +
-							"{type=group, alignment=left, operands=[" +
-								"{type=group, operation=sequence, operands=[" +
-									"{type=token, key={type=term, key=b, layer=lemma, match=eq}}," +
-									"{type=group, alignment=left, operands=[" +
-										"{type=token, key={type=term, key=c, layer=lemma, match=eq}}" +
+				"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:group, operation=operation:sequence, operands=[" +
+							"{@type=korap:token, wrap={@type=korap:term, key=a, layer=lemma, match=eq}}," +
+							"{@type=korap:group, alignment=left, operands=[" +
+								"{@type=korap:group, operation=operation:sequence, operands=[" +
+									"{@type=korap:token, wrap={@type=korap:term, key=b, layer=lemma, match=eq}}," +
+									"{@type=korap:group, alignment=left, operands=[" +
+										"{@type=korap:token, wrap={@type=korap:term, key=c, layer=lemma, match=eq}}" +
 									"]}" +
 								"]}" +
 							"]}" +
 						"]}," +
-						"{type=token, key={type=term, key=d, layer=lemma, match=eq}}" +
+						"{@type=korap:token, wrap={@type=korap:term, key=d, layer=lemma, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("([base=a]^[base=b]^[base=c])|[base=d]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -754,16 +769,16 @@
 	public void testSimpleQueries() throws QueryException {
 		// Baum
 		String simple1 = 
-				"{type=token, key={type=term, key=Baum, layer=orth, match=eq}}";
+				"{@type=korap:token, wrap={@type=korap:term, key=Baum, layer=orth, match=eq}}";
 		ppt = new PoliqarpPlusTree("Baum");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(simple1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// Der Baum
 		String simple2 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}, " +
-					"{type=token, key={type=term, key=Baum, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}, " +
+					"{@type=korap:token, wrap={@type=korap:term, key=Baum, layer=orth, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("Der Baum");
 		map = ppt.getRequestMap().get("query").toString();
@@ -771,10 +786,10 @@
 		
 		// Der große Baum
 		String simple3 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=token, key={type=term, key=Der, layer=orth, match=eq}}, " +
-					"{type=token, key={type=term, key=große, layer=orth, match=eq}}, " +						
-					"{type=token, key={type=term, key=Baum, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Der, layer=orth, match=eq}}, " +
+					"{@type=korap:token, wrap={@type=korap:term, key=große, layer=orth, match=eq}}, " +						
+					"{@type=korap:token, wrap={@type=korap:term, key=Baum, layer=orth, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("Der große Baum");
 		map = ppt.getRequestMap().get("query").toString();
@@ -782,9 +797,9 @@
 		
 		// Baum | Stein
 		String simple4 = 
-				"{type=group, operation=or, operands=[" +
-					"{type=token, key={type=term, key=Baum, layer=orth, match=eq}}, " +						
-					"{type=token, key={type=term, key=Stein, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:or, operands=[" +
+					"{@type=korap:token, wrap={@type=korap:term, key=Baum, layer=orth, match=eq}}, " +						
+					"{@type=korap:token, wrap={@type=korap:term, key=Stein, layer=orth, match=eq}}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("Baum | Stein");
 		map = ppt.getRequestMap().get("query").toString();
@@ -793,12 +808,12 @@
 		// Baum | Stein Haus
 		String query = "(Baum | Stein) Haus";
 		String simple5 = 
-				"{type=group, operation=sequence, operands=[" +
-					"{type=group, operation=or, operands=[" +
-						"{type=token, key={type=term, key=Baum, layer=orth, match=eq}}, " +						
-						"{type=token, key={type=term, key=Stein, layer=orth, match=eq}}" +
+				"{@type=korap:group, operation=operation:sequence, operands=[" +
+					"{@type=korap:group, operation=operation:or, operands=[" +
+						"{@type=korap:token, wrap={@type=korap:term, key=Baum, layer=orth, match=eq}}, " +						
+						"{@type=korap:token, wrap={@type=korap:term, key=Stein, layer=orth, match=eq}}" +
 					"]}," +
-					"{type=token, key={type=term, key=Haus, layer=orth, match=eq}} " +			
+					"{@type=korap:token, wrap={@type=korap:term, key=Haus, layer=orth, match=eq}} " +			
 				"]}";
 		ppt = new PoliqarpPlusTree(query);
 		map = ppt.getRequestMap().get("query").toString();
