diff --git a/src/test/java/CosmasTreeTest.java b/src/test/java/CosmasTreeTest.java
index fac29e7..1933e20 100644
--- a/src/test/java/CosmasTreeTest.java
+++ b/src/test/java/CosmasTreeTest.java
@@ -57,6 +57,11 @@
 	}
 	
 	@Test
+	public void testCaseSensitivityFlag() throws QueryException {
+		//TODO ignorieroperator $ http://www.ids-mannheim.de/cosmas2/web-app/hilfe/suchanfrage/eingabe-zeile/syntax/ignorierung.html
+	}
+	
+	@Test
 	public void testMORPH() throws QueryException {
 		query="#MORPH(V)";
 		String morph1 = 
@@ -474,7 +479,7 @@
 		assertEquals(all1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
-	@Test
+//	@Test
 	public void testOPNHIT() throws QueryException {
 		query="#NHIT(gehen /w1:10 voran)";
 		String nhit1 = 
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 078cf8e..70c8231 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -401,13 +401,15 @@
 	@Test 
 	public void testClasses() throws QueryException {
 		// {[base=Mann]}
-		String cls1 = "{@type=korap:group, class=0, @operands=[" +
+		String cls1 = "{@type=korap:group, @relation=class, class=0, @operands=[" +
 				"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=base, @relation==}}" +
 				"]}";
-		assertTrue(equalsQueryContent(cls1, "{[base=Mann]}"));
+		ppt = new PoliqarpPlusTree("{[base=Mann]}");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(cls1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
 		// {[base=Mann][orth=Frau]}
-		String cls2 = "{@type=korap:group, class=0, @operands=[" +
+		String cls2 = "{@type=korap:group, @relation=class, class=0, @operands=[" +
 				 "{@type=korap:sequence, @operands=[" +
 				  "{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=base, @relation==}}," +
 				  "{@type=korap:token, @value={@type=korap:term, @value=Frau, @attr=orth, @relation==}}" +
@@ -418,7 +420,7 @@
 		// [p=NN]{[base=Mann][orth=Frau]}
 		String cls3 = "{@type=korap:sequence, @operands=[" +
 						"{@type=korap:token, @value={@type=korap:term, @value=NN, @attr=p, @relation==}}," +
-						"{@type=korap:group, class=0, @operands=[" +
+						"{@type=korap:group, @relation=class, class=0, @operands=[" +
 							"{@type=korap:sequence, @operands=[" +
 								"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=base, @relation==}}," +
 								"{@type=korap:token, @value={@type=korap:term, @value=Frau, @attr=orth, @relation==}}" +
@@ -429,7 +431,7 @@
 		
 		// {[base=Mann][orth=Frau]}[p=NN]
 		String cls4 = "{@type=korap:sequence, @operands=[" +
-						"{@type=korap:group, class=0, @operands=[" +
+						"{@type=korap:group, @relation=class, class=0, @operands=[" +
 						   "{@type=korap:sequence, @operands=[" +
 						     "{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=base, @relation==}}," +
 						     "{@type=korap:token, @value={@type=korap:term, @value=Frau, @attr=orth, @relation==}}" +
@@ -442,9 +444,9 @@
 		assertEquals(cls4.replaceAll(" ", ""), map.replaceAll(" ", ""));
 
 		// {2:{1:[tt/p=ADJA]}[mate/p=NN]}"
-		String cls5 = "{@type=korap:group, class=2, @operands=[" +
+		String cls5 = "{@type=korap:group, @relation=class, class=2, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
-						   "{@type=korap:group, class=1, @operands=[" +
+						   "{@type=korap:group, @relation=class, class=1, @operands=[" +
 						     "{@type=korap:token, @value={@type=korap:term, @value=ADJA, @attr=p, @foundry=tt, @relation==}}" +
 						   "]}," +
 						   "{@type=korap:token, @value={@type=korap:term, @value=NN, @attr=p, @foundry=mate, @relation==}}" + 
@@ -517,10 +519,10 @@
 	public void testShrinkSplit() throws QueryException {
 		// shrink([orth=Der]{[orth=Mann]})
 		String shr1 = 
-			"{@type=korap:group, @relation=shrink, classRef=0, @operands=[" +
+			"{@type=korap:group, @relation=shrink, classRef=[0], @operands=[" +
 				"{@type=korap:sequence, @operands=[" +
 					"{@type=korap:token, @value={@type=korap:term, @value=Der, @attr=orth, @relation==}}," +
-					"{@type=korap:group, class=0, @operands=[" +
+					"{@type=korap:group, @relation=class, class=0, @operands=[" +
 						"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=orth, @relation==}}" +
 					"]}" +
 				"]}" +
@@ -531,10 +533,10 @@
 		
 		// shrink([orth=Der]{[orth=Mann][orth=geht]})
 		String shr2 = 
-			"{@type=korap:group, @relation=shrink, classRef=0, @operands=[" +
+			"{@type=korap:group, @relation=shrink, classRef=[0], @operands=[" +
 				"{@type=korap:sequence, @operands=[" +
 					"{@type=korap:token, @value={@type=korap:term, @value=Der, @attr=orth, @relation==}}," +
-					"{@type=korap:group, class=0, @operands=[" +
+					"{@type=korap:group, @relation=class, class=0, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=orth, @relation==}}," +
 							"{@type=korap:token, @value={@type=korap:term, @value=geht, @attr=orth, @relation==}}" +
@@ -548,10 +550,10 @@
 		
 		// shrink(1:[orth=Der]{1:[orth=Mann][orth=geht]})
 		String shr3 = 
-			"{@type=korap:group, @relation=shrink, classRef=1, @operands=[" +
+			"{@type=korap:group, @relation=shrink, classRef=[1], @operands=[" +
 				"{@type=korap:sequence, @operands=[" +
 					"{@type=korap:token, @value={@type=korap:term, @value=Der, @attr=orth, @relation==}}," +
-					"{@type=korap:group, class=1, @operands=[" +
+					"{@type=korap:group, @relation=class, class=1, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=orth, @relation==}}," +
 							"{@type=korap:token, @value={@type=korap:term, @value=geht, @attr=orth, @relation==}}" +
@@ -565,10 +567,10 @@
 		
 		// shrink(1:startswith(<s>,{1:<np>}))
 		String shr4 = 
-			"{@type=korap:group, @relation=shrink, classRef=1, @operands=[" +
+			"{@type=korap:group, @relation=shrink, classRef=[1], @operands=[" +
 				"{@type=korap:group, @relation=position, @position=startswith, @operands=[" +
 					"{@type=korap:span, @value=s}," +
-					"{@type=korap:group, class=1, @operands=[" +
+					"{@type=korap:group, @relation=class, class=1, @operands=[" +
 						"{@type=korap:span, @value=np}" +
 					"]}" +
 				"]}" +
@@ -579,16 +581,16 @@
 		
 		// shrink(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
 		String shr5 = 
-			"{@type=korap:group, @relation=shrink, classRef=3, @operands=[" +
+			"{@type=korap:group, @relation=shrink, classRef=[3], @operands=[" +
 				"{@type=korap:group, @relation=position, @position=startswith, @operands=[" +
 					"{@type=korap:span, @value=s}," +
-					"{@type=korap:group, class=3, @operands=[" +
+					"{@type=korap:group, @relation=class, class=3, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=der, @attr=base, @relation==}}," +
-							"{@type=korap:group, class=1, @operands=[" +
+							"{@type=korap:group, @relation=class, class=1, @operands=[" +
 								"{@type=korap:sequence, @operands=[" +
 									"{@type=korap:token, @value={@type=korap:term, @value=ADJA, @attr=p, @foundry=mate, @relation==}}," +
-									"{@type=korap:group, class=2, @operands=[" +
+									"{@type=korap:group, @relation=class, class=2, @operands=[" +
 										"{@type=korap:token, @value={@type=korap:term, @value=NN, @attr=p, @foundry=tt, @relation==}}" +
 									"]}" + 
 								"]}" +
@@ -603,16 +605,16 @@
 		
 		// split(3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
 		String shr6 = 
-			"{@type=korap:group, @relation=split, classRef=3, @operands=[" +
+			"{@type=korap:group, @relation=split, classRef=[3], @operands=[" +
 				"{@type=korap:group, @relation=position, @position=startswith, @operands=[" +
 					"{@type=korap:span, @value=s}," +
-					"{@type=korap:group, class=3, @operands=[" +
+					"{@type=korap:group, @relation=class, class=3, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=der, @attr=base, @relation==}}," +
-							"{@type=korap:group, class=1, @operands=[" +
+							"{@type=korap:group, @relation=class, class=1, @operands=[" +
 								"{@type=korap:sequence, @operands=[" +
 									"{@type=korap:token, @value={@type=korap:term, @value=ADJA, @attr=p, @foundry=mate, @relation==}}," +
-									"{@type=korap:group, class=2, @operands=[" +
+									"{@type=korap:group, @relation=class, class=2, @operands=[" +
 										"{@type=korap:token, @value={@type=korap:term, @value=NN, @attr=p, @foundry=tt, @relation==}}" +
 									"]}" + 
 								"]}" +
@@ -624,6 +626,30 @@
 		ppt = new PoliqarpPlusTree("split(3:startswith(<s>,{3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) ");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(shr6.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
+		// split(2|3: startswith(<s>, {3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) 
+		String shr7 = 
+			"{@type=korap:group, @relation=split, classRef=[2, 3], classRefOp=intersection, @operands=[" +
+				"{@type=korap:group, @relation=position, @position=startswith, @operands=[" +
+					"{@type=korap:span, @value=s}," +
+					"{@type=korap:group, @relation=class, class=3, @operands=[" +
+						"{@type=korap:sequence, @operands=[" +
+							"{@type=korap:token, @value={@type=korap:term, @value=der, @attr=base, @relation==}}," +
+							"{@type=korap:group, @relation=class, class=1, @operands=[" +
+								"{@type=korap:sequence, @operands=[" +
+									"{@type=korap:token, @value={@type=korap:term, @value=ADJA, @attr=p, @foundry=mate, @relation==}}," +
+									"{@type=korap:group, @relation=class, class=2, @operands=[" +
+										"{@type=korap:token, @value={@type=korap:term, @value=NN, @attr=p, @foundry=tt, @relation==}}" +
+									"]}" + 
+								"]}" +
+							"]}" +
+						"]}" +
+					"]}" +
+				"]}" +
+			"]}";
+		ppt = new PoliqarpPlusTree("split(2|3:startswith(<s>,{3:[base=der]{1:[mate/p=ADJA]{2:[tt/p=NN]}}})) ");
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(shr7.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
 	
@@ -638,7 +664,7 @@
 	}
 	
 	@Test
-	public void testAlign() {
+	public void testAlign() throws QueryException {
 		// [orth=der]^[orth=Mann]
 		String align1 = 
 				"{@type=korap:sequence, @operands=[" +
@@ -724,7 +750,7 @@
 	}
 	
 	@Test
-	public void testSimpleQueries() {
+	public void testSimpleQueries() throws QueryException {
 		// Baum
 		String simple1 = 
 				"{@type=korap:token, @value={@type=korap:term, @value=Baum, @attr=orth, @relation==}}";
