diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
index 6a90a8e..0603710 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/CosmasTree.java
@@ -464,30 +464,20 @@
         // inlcusion or overlap
         if (nodeCat.equals("OPIN") || nodeCat.equals("OPOV")) {
             // Step I: create group
-            LinkedHashMap<String, Object> submatchgroup = new LinkedHashMap<String, Object>();
-            submatchgroup.put("@type", "korap:group");
-            submatchgroup.put("operation", "operation:" + "submatch");
-            ArrayList<Integer> classRef = new ArrayList<Integer>();
-            classRef.add(classRefCounter);
-            submatchgroup.put("classRef", classRef);
+            LinkedHashMap<String, Object> submatchgroup = makeReference(classRefCounter);
 
             ArrayList<Object> submatchoperands = new ArrayList<Object>();
-            LinkedHashMap<String, Object> posgroup = new LinkedHashMap<String, Object>();
+            LinkedHashMap<String, Object> posgroup = makePosition(null);
             submatchgroup.put("operands", submatchoperands);
             submatchoperands.add(posgroup);
-            posgroup.put("@type", "korap:group");
-//			String relation = nodeCat.equals("OPIN") ? "position" : "overlaps";
-            posgroup.put("operation", "operation:" + "position");
             if (nodeCat.equals("OPIN")) {
                 parseOPINOptions(node, posgroup);
             } else {
                 parseOPOVOptions(node, posgroup);
             }
-            ArrayList<Object> posoperands = new ArrayList<Object>();
-            posgroup.put("operands", posoperands);
             objectStack.push(posgroup);
             // mark this an inverted list
-            invertedOperandsLists.push(posoperands);
+            invertedOperandsLists.push((ArrayList<Object>) posgroup.get("operands"));
             stackedObjects++;
             // Step II: decide where to put
             putIntoSuperObject(submatchgroup, 1);
@@ -526,17 +516,11 @@
 
 
         if (nodeCat.equals("OPNHIT")) {
-            LinkedHashMap<String, Object> exclGroup = new LinkedHashMap<String, Object>();
-            exclGroup.put("@type", "korap:group");
-            exclGroup.put("operation", "operation:" + "submatch");
             ArrayList<Integer> classRef = new ArrayList<Integer>();
-
             classRef.add(classRefCounter);
-//			classRefCounter++;
             // yes, do this twice!
             classRef.add(classRefCounter + 1);
-//			classRefCounter++;
-            exclGroup.put("classRef", classRef);
+            LinkedHashMap<String, Object> exclGroup = makeReference(classRef);
             exclGroup.put("classRefOp", "classRefOp:" + "intersection");
             ArrayList<Object> operands = new ArrayList<Object>();
             exclGroup.put("operands", operands);
@@ -548,8 +532,8 @@
         if (nodeCat.equals("OPEND") || nodeCat.equals("OPBEG")) {
             // Step I: create group
             LinkedHashMap<String, Object> beggroup = new LinkedHashMap<String, Object>();
-            beggroup.put("@type", "korap:group");
-            beggroup.put("operation", "operation:" + "submatch");
+            beggroup.put("@type", "korap:reference");
+            beggroup.put("operation", "operation:focus");
             ArrayList<Integer> spanRef = new ArrayList<Integer>();
             if (nodeCat.equals("OPBEG")) {
                 spanRef.add(0);
@@ -573,29 +557,21 @@
             Tree conditions = node.getChild(optsChild).getChild(0);
 
             // create a containing group expressing the submatch constraint on the first argument
-            LinkedHashMap<String, Object> submatchgroup = new LinkedHashMap<String, Object>();
-            submatchgroup.put("@type", "korap:group");
-            submatchgroup.put("operation", "operation:" + "submatch");
             ArrayList<Integer> spanRef = new ArrayList<Integer>();
             spanRef.add(1);
-            submatchgroup.put("classRef", spanRef);
+            LinkedHashMap<String, Object> submatchgroup = makeReference(spanRef);
             ArrayList<Object> submatchoperands = new ArrayList<Object>();
             submatchgroup.put("operands", submatchoperands);
-            putIntoSuperObject(submatchgroup, 0);
+            putIntoSuperObject(submatchgroup);
 
             // Distinguish two cases. Normal case: query has just one condition, like #BED(X, sa) ...
             if (conditions.getChildCount() == 1) {
                 CosmasCondition c = new CosmasCondition(conditions.getChild(0));
 
                 // create the group expressing the position constraint
-                LinkedHashMap<String, Object> posgroup = new LinkedHashMap<String, Object>();
-                posgroup.put("@type", "korap:group");
-                posgroup.put("operation", "operation:" + "position");
-
-                posgroup.put("frame", "frame:" + c.position);
+                LinkedHashMap<String, Object> posgroup = makePosition(c.position);
+                ArrayList<Object> operands = (ArrayList<Object>) posgroup.get("operands");
                 if (c.negated) posgroup.put("exclude", true);
-                ArrayList<Object> operands = new ArrayList<Object>();
-                posgroup.put("operands", operands);
 
                 // create span representing the element expressed in the condition
                 LinkedHashMap<String, Object> bedElem = new LinkedHashMap<String, Object>();
@@ -603,10 +579,7 @@
                 bedElem.put("key", c.elem);
 
                 // create a class group containing the argument, in order to submatch the arg.
-                LinkedHashMap<String, Object> classGroup = new LinkedHashMap<String, Object>();
-                classGroup.put("@type", "korap:group");
-                classGroup.put("operation", "operation:class");
-                classGroup.put("class", classRefCounter);
+                LinkedHashMap<String, Object> classGroup = makeSpanClass(classRefCounter);
                 classRefCounter++;
                 classGroup.put("operands", new ArrayList<Object>());
                 objectStack.push(classGroup);
diff --git a/src/test/java/CosmasTreeTest.java b/src/test/java/CosmasTreeTest.java
index a4e31cf..c73062b 100644
--- a/src/test/java/CosmasTreeTest.java
+++ b/src/test/java/CosmasTreeTest.java
@@ -317,7 +317,7 @@
 	public void testOPIN() throws QueryException {
 		query="wegen #IN <s>";
 		String opin1 = 
-					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+					"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -331,7 +331,7 @@
 		
 		query="wegen #IN(L) <s>";
 		String opin2 = 
-					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+					"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -345,13 +345,13 @@
 		
 		query="wegen #IN(%, L) <s>";
 		String opin3 = 
-					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
-						"{@type=korap:group, operation=operation:position, frame=frame:startswith, exclude=true, operands=[" +
+					"{@type=korap:reference, operation=operation:focus, 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=match:eq}}" +
 							"]}" +
-						"]}" +
+						"], exclude=true}" +
 					"]}";
 		ct = new CosmasTree(query);
 		map = ct.getRequestMap().get("query").toString();
@@ -359,13 +359,13 @@
 		
 		query="wegen #IN('FE,ALL,%,MIN') <s>";
 		String opin4 = 
-					"{@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:reference, operation=operation:focus, classRef=[1], operands=[" +
+						"{@type=korap:group, operation=operation:position, frame=frame:matches, 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=match:eq}}" +
 							"]}" +
-						"]}" +
+						"], range=all, exclude=true, grouping=false}" +
 					"]}";
 		ct = new CosmasTree(query);
 		map = ct.getRequestMap().get("query").toString();
@@ -376,7 +376,7 @@
 	public void testOPOV() throws QueryException {
 		query="wegen #OV <s>";
 		String opov1 = 
-					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+					"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -390,7 +390,7 @@
 		
 		query="wegen #OV(L) <s>";
 		String opov2 = 
-					"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+					"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -426,7 +426,7 @@
 		// 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=korap:group, operation=operation:submatch, spanRef=[0,1], operands=[" +
+				"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
 					"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
 						"{@type=korap:distance, key=w, min=3, max=5}" +
 					"]," +
@@ -444,7 +444,7 @@
 				"{@type=korap:group, operation=operation:sequence, inOrder=true, distances=[" +
 					"{@type=korap:distance, key=w, min=0, max=10}" +
 				"], operands=[" +
-					"{@type=korap:group, operation=operation:submatch, spanRef=[0,1], operands=[" +
+					"{@type=korap:reference, operation=operation:focus, spanRef=[0,1], operands=[" +
 						"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
 							"{@type=korap:distance, key=w, min=3, max=5}" +
 						"]," +
@@ -461,7 +461,7 @@
 		
 		query="#END(der /w3:5 Mann)";
 		String end1 = 
-				"{@type=korap:group, operation=operation:submatch, spanRef=[-1,1], operands=[" +
+				"{@type=korap:reference, operation=operation:focus, spanRef=[-1,1], operands=[" +
 					"{@type=korap:group, operation=operation:sequence, inOrder=false, distances=[" +
 						"{@type=korap:distance, key=w, min=3, max=5}" +
 					"], " +
@@ -565,7 +565,7 @@
 	public void testOPNHIT() throws QueryException {
 		query="#NHIT(gehen /w1:10 voran)";
 		String nhit1 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1,2], classRefOp=classRefOp:intersection, operands=[" +
+				"{@type=korap:reference, operation=operation:focus, classRef=[1,2], classRefOp=classRefOp:intersection, operands=[" +
 					"{@type=korap:group, operation=operation:sequence, inOrder=false, " +
 						"distances=[" +
 							"{@type=korap:distance, key=w, min=1, max=10}" +
@@ -589,7 +589,7 @@
 	public void testOPBED() throws QueryException {
 		query = "#BED(der , sa)";
 		String bed1 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1], operands= [" +
+				"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -603,7 +603,7 @@
 		
 		query = "#BED(der Mann , +pe)";
 		String bed2 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1], operands= [" +
+				"{@type=korap:reference, operation=operation:focus, classRef=[1], operands= [" +
 						"{@type=korap:group, operation=operation:position, frame=frame:endswith, operands=[" +
 							"{@type=korap:span, key=p}," +
 							"{@type=korap:group, operation=operation:class, class=1, operands=[" +
@@ -620,7 +620,7 @@
 		
 		query = "#BED(der Mann , sa,-pa)";
 		String bed3 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+				"{@type=korap:reference, operation=operation:focus, classRef=[1], operands=[" +
 					"{@type=korap:group, operation=operation:sequence, distances=[" +
 						"{@type=korap:distance, key=w, min=0, max=0}" +
 					"], operands=[" +
@@ -654,7 +654,7 @@
 		
 		query = "Der:sa";
 		String col1 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+				"{@type=korap:reference, operation=operation:focus, 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=[" +
@@ -668,7 +668,7 @@
 		
 		query = "Mann:sa,-pa,+te)";
 		String col2 = 
-				"{@type=korap:group, operation=operation:submatch, classRef=[1], operands=[" +
+				"{@type=korap:reference, operation=operation:focus, classRef=[1], operands=[" +
 					"{@type=korap:group, operation=operation:sequence, distances=[" +
 						"{@type=korap:distance, key=w, min=0, max=0}" +
 					"], operands=[" +
