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 6f471e4..2eaff8b 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
@@ -440,8 +440,8 @@
 			submatchgroup.put("@operands", submatchoperands);
 			submatchoperands.add(posgroup);
 			posgroup.put("@type", "korap:group");
-			String relation = nodeCat.equals("OPIN") ? "position" : "overlaps";
-			posgroup.put("@relation", relation);
+//			String relation = nodeCat.equals("OPIN") ? "position" : "overlaps";
+			posgroup.put("@relation", "position");
 			
 			if (nodeCat.equals("OPIN")) {
 				parseOPINOptions(node, posgroup);
@@ -616,7 +616,7 @@
 		String position = "";
 		if (posnode != null) {
 			String value = posnode.getChild(0).toStringTree();
-			position = translateTextAreaArgument(value);
+			position = translateTextAreaArgument(value, "in");
 			if (value.equals("N")) {
 				negatePosition = !negatePosition;
 			}
@@ -656,12 +656,9 @@
 		String position = "";
 		if (posnode != null) {
 			String value = posnode.getChild(0).toStringTree();
-			position = translateTextAreaArgument(value);
-		} else {
-			position = "any";
+			position = "-"+translateTextAreaArgument(value, "ov");
 		}
-		posgroup.put("@position", position);
-		position = openNodeCats.get(1).equals("OPIN") ? "contains" : "full";
+		posgroup.put("@position", "overlaps"+position);
 		
 		if (exclnode != null) {
 			if (exclnode.getChild(0).toStringTree().equals("YES")) {
@@ -681,22 +678,23 @@
 	 * http://www.ids-mannheim.de/cosmas2/win-app/hilfe/suchanfrage/eingabe-grafisch/syntax/ARGUMENT_I.html or
 	 * http://www.ids-mannheim.de/cosmas2/win-app/hilfe/suchanfrage/eingabe-grafisch/syntax/ARGUMENT_O.html, respectively.
 	 * @param argument
+	 * @param mode 
 	 * @return
 	 */
-	private String translateTextAreaArgument(String argument) {
+	private String translateTextAreaArgument(String argument, String mode) {
 		String position = "";
 		switch (argument) {
 		case "L":
-			position = "startswith";
+			position = mode.equals("in") ? "startswith" : "left";
 			break;
 		case "R":
-			position = "endswith";
+			position = mode.equals("in") ? "endswith" : "right";
 			break;
 		case "F":
 			position = "leftrightmatch";
 			break;
 		case "FE":
-			position = "ident";
+			position = "matches";
 			break;
 		case "FI":
 			position = "leftrightmatch-noident";
@@ -767,7 +765,8 @@
 				"wegen #IN(%, L) <s>",
 				"wegen #IN(%) <s>",
 				"(Mann oder Frau) #IN <s>",
-				"#BEG(der /w3:5 Mann) /+w10 kommt"
+				"#BEG(der /w3:5 Mann) /+w10 kommt",
+				"&würde /w0 MORPH(V)"
 				};
 		CosmasTree.debug=true;
 		for (String q : queries) {
diff --git a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
index 530f597..6679466 100644
--- a/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
+++ b/src/main/java/de/ids_mannheim/korap/query/serialize/PoliqarpPlusTree.java
@@ -260,7 +260,8 @@
 			ignoreCq_segment = (node.getChildCount() == 1 && (node.getChild(0).toStringTree(poliqarpParser).equals(" ") || QueryUtils.getNodeCat(node.getChild(0)).equals("spanclass") || QueryUtils.getNodeCat(node.getChild(0)).equals("position")));
 			// ignore this node if it only serves as an aligned sequence container
 			if (node.getChildCount()>1) {
-				if (QueryUtils.getNodeCat(node.getChild(1)).equals("cq_segments") && QueryUtils.hasChild(node.getChild(1), "align")) {
+				if (QueryUtils.getNodeCat(node.getChild(1)).equals("cq_segments") && QueryUtils.hasChild(node.getChild(1), "alignment")) {
+//				if (QueryUtils.getNodeCat(node.getChild(0)).equals("align")) {	
 					ignoreCq_segment = true;
 				}
 			}
@@ -594,7 +595,7 @@
 			} 
 		}
 		
-		if (nodeCat.equals("align")) {
+		if (nodeCat.equals("alignment")) {
 			alignNext = true;
 			LinkedHashMap<String,Object> alignGroup = new LinkedHashMap<String,Object>();
 			// push but don't increase the stackedObjects counter in order to keep this
@@ -602,16 +603,17 @@
 			// operands are siblings of this align node rather than children, i.e. the group
 			// would be removed from the stack before seeing its operands.
 			objectStack.push(alignGroup);
+			stackedObjects++;
 			// Step I: get info
 			// fill group
 			alignGroup.put("@type", "korap:group");
-			alignGroup.put("@relation", "left-align");
+			alignGroup.put("@alignment", "left");
 			alignGroup.put("@operands", new ArrayList<Object>());
 			// Step II: decide where to put the group
 			// add group to sequence only if it is not an only child (in that case, sq_segments has already added the info and is just waiting for the relevant info)
 			if (node.getParent().getChildCount()>1) {
 				ArrayList<Object> topSequenceOperands = (ArrayList<Object>) objectStack.get(1).get("@operands");
-				topSequenceOperands.add(alignGroup); 
+				topSequenceOperands.add(alignGroup);
 			} else if (openNodeCats.get(2).equals("query")) {
 				requestMap.put("query", alignGroup);	
 			} else {
@@ -801,10 +803,10 @@
 		}
 		
 		// pop the align group that was introduced by previous 'align' but never closed
-		if (isAligned) {
-			isAligned=false;
-			objectStack.pop();
-		}
+//		if (isAligned) {
+//			isAligned=false;
+//			objectStack.pop();
+//		}
 		
 		// Stuff that happens when leaving a node (taking items off the stacks)
 		for (int i=0; i<objectsToPop.get(0); i++) {
@@ -935,13 +937,25 @@
 		/*
 		 * For testing
 		 */
+		
+		PoliqarpPlusTree pt1 = new PoliqarpPlusTree("[base=Hund] | [base=Katze][base=Maus]");
+		PoliqarpPlusTree pt2 = new PoliqarpPlusTree("[base=Hund] | [base=Katze] [base=Maus]");
+		System.err.println(pt1.getRequestMap().equals(pt2.getRequestMap()));
+		
 		String[] queries = new String[] {
-				"startswith(<s>,[][base=der][base=Mann])",
-//				"[][base=Mann]",
-				"[base=Hund][][base=Katze][][][base=Maus]",
-				"[base=Hund][]?[][base=Katze]",
-				"split([base=der]{[base=Mann]})",
-				"[base=Mann&gen=m&cas=N]"
+//				"startswith(<s>,[][base=der][base=Mann])",
+////				"[][base=Mann]",
+//				"[base=Hund][][base=Katze][][][base=Maus]",
+//				"[base=Hund][]?[][base=Katze]",
+//				"split([base=der]{[base=Mann]})",
+//				"[base=Mann&gen=m&cas=N]",
+//				"[base=Hund] | [base=Katze][base=Maus]",
+//				"Baum | Haus",
+//				"Baum | Stein Haus",
+//				"^contains(<s>,<np>)",
+//				"([base=a]^[base=b][base=c])|[base=d]",
+				"[orth=der]^[orth=große][orth=Mann]",
+				"([base=a]^[base=b]^[base=c])|[base=d]"
 		};
 		PoliqarpPlusTree.debug=true;
 		for (String q : queries) {
diff --git a/src/test/java/CosmasTreeTest.java b/src/test/java/CosmasTreeTest.java
index efe86f6..fac29e7 100644
--- a/src/test/java/CosmasTreeTest.java
+++ b/src/test/java/CosmasTreeTest.java
@@ -332,7 +332,7 @@
 		query="wegen #IN('FE,ALL,%,MIN') <s>";
 		String opin4 = 
 					"{@type=korap:group, @relation=submatch, @classRef=1, @operands=[" +
-						"{@type=korap:group, @relation=position, @position=ident, range=all, @exclude=true, grouping=false, @operands=[" +
+						"{@type=korap:group, @relation=position, @position=matches, range=all, @exclude=true, grouping=false, @operands=[" +
 							"{@type=korap:span, @value=s}," +
 							"{@type=korap:group, class=1, @operands=[" +
 								"{@type=korap:token, @value={@type=korap:term, @value=wegen, @attr=orth, @relation==}}" +
@@ -349,7 +349,7 @@
 		query="wegen #OV <s>";
 		String opov1 = 
 					"{@type=korap:group, @relation=submatch, @classRef=1, @operands=[" +
-						"{@type=korap:group, @relation=overlaps, @position=any, @operands=[" +
+						"{@type=korap:group, @relation=position, @position=overlaps, @operands=[" +
 							"{@type=korap:span, @value=s}," +
 							"{@type=korap:group, class=1, @operands=[" +
 								"{@type=korap:token, @value={@type=korap:term, @value=wegen, @attr=orth, @relation==}}" +
@@ -363,7 +363,7 @@
 		query="wegen #OV(L) <s>";
 		String opov2 = 
 					"{@type=korap:group, @relation=submatch, @classRef=1, @operands=[" +
-						"{@type=korap:group, @relation=overlaps, @position=startswith, @operands=[" +
+						"{@type=korap:group, @relation=position, @position=overlaps-left, @operands=[" +
 							"{@type=korap:span, @value=s}," +
 							"{@type=korap:group, class=1, @operands=[" +
 								"{@type=korap:token, @value={@type=korap:term, @value=wegen, @attr=orth, @relation==}}" +
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 6090867..078cf8e 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -643,7 +643,7 @@
 		String align1 = 
 				"{@type=korap:sequence, @operands=[" +
 					"{@type=korap:token, @value={@type=korap:term, @value=der, @attr=orth, @relation==}}," +
-					"{@type=korap:group, @relation=left-align, @operands=[" +
+					"{@type=korap:group, @alignment=left, @operands=[" +
 						"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=orth, @relation==}}" +
 					"]}" +
 				"]}";
@@ -651,12 +651,28 @@
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(align1.replaceAll(" ", ""), map.replaceAll(" ", ""));
 		
+		// [orth=der]^[orth=große][orth=Mann]
+		String query = "[orth=der]^[orth=große][orth=Mann]";
+		String align1b = 
+				"{@type=korap:sequence, @operands=[" +
+					"{@type=korap:token, @value={@type=korap:term, @value=der, @attr=orth, @relation==}}," +
+					"{@type=korap:group, @alignment=left, @operands=[" +
+						"{@type=korap:sequence, @operands=[" +
+							"{@type=korap:token, @value={@type=korap:term, @value=große, @attr=orth, @relation==}}," +
+							"{@type=korap:token, @value={@type=korap:term, @value=Mann, @attr=orth, @relation==}}" +
+						"]}" +
+					"]}" +
+				"]}";
+		ppt = new PoliqarpPlusTree(query);
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(align1b.replaceAll(" ", ""), map.replaceAll(" ", ""));
+		
 		// "([base=a]^[base=b])|[base=c]",
 		String align2 = 
 				"{@type=korap:group, @relation=or, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=a, @attr=base, @relation==}}," +
-							"{@type=korap:group, @relation=left-align, @operands=[" +
+							"{@type=korap:group, @alignment=left, @operands=[" +
 								"{@type=korap:token, @value={@type=korap:term, @value=b, @attr=base, @relation==}}" +
 							"]}" +
 						"]}," +
@@ -671,10 +687,12 @@
 				"{@type=korap:group, @relation=or, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=a, @attr=base, @relation==}}," +
-							"{@type=korap:group, @relation=left-align, @operands=[" +
-								"{@type=korap:token, @value={@type=korap:term, @value=b, @attr=base, @relation==}}" +
-							"]}," +
-							"{@type=korap:token, @value={@type=korap:term, @value=c, @attr=base, @relation==}}" +
+							"{@type=korap:group, @alignment=left, @operands=[" +
+								"{@type=korap:sequence, @operands=[" +
+									"{@type=korap:token, @value={@type=korap:term, @value=b, @attr=base, @relation==}}," +
+									"{@type=korap:token, @value={@type=korap:term, @value=c, @attr=base, @relation==}}" +
+								"]}" +
+							"]}" +
 						"]}," +
 						"{@type=korap:token, @value={@type=korap:term, @value=d, @attr=base, @relation==}}" +
 				"]}";
@@ -687,11 +705,13 @@
 				"{@type=korap:group, @relation=or, @operands=[" +
 						"{@type=korap:sequence, @operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=a, @attr=base, @relation==}}," +
-							"{@type=korap:group, @relation=left-align, @operands=[" +
-								"{@type=korap:token, @value={@type=korap:term, @value=b, @attr=base, @relation==}}" +
-							"]}," +
-							"{@type=korap:group, @relation=left-align, @operands=[" +
-								"{@type=korap:token, @value={@type=korap:term, @value=c, @attr=base, @relation==}}" +
+							"{@type=korap:group, @alignment=left, @operands=[" +
+								"{@type=korap:sequence, @operands=[" +
+									"{@type=korap:token, @value={@type=korap:term, @value=b, @attr=base, @relation==}}," +
+									"{@type=korap:group, @alignment=left, @operands=[" +
+										"{@type=korap:token, @value={@type=korap:term, @value=c, @attr=base, @relation==}}" +
+									"]}" +
+								"]}" +
 							"]}" +
 						"]}," +
 						"{@type=korap:token, @value={@type=korap:term, @value=d, @attr=base, @relation==}}" +
@@ -742,6 +762,20 @@
 		ppt = new PoliqarpPlusTree("Baum | Stein");
 		map = ppt.getRequestMap().get("query").toString();
 		assertEquals(simple4.replaceAll(" ", ""), map.replaceAll(" ", ""));		
+		
+		// Baum | Stein Haus
+		String query = "(Baum | Stein) Haus";
+		String simple5 = 
+				"{@type=korap:sequence, @operands=[" +
+					"{@type=korap:group, @relation=or, @operands=[" +
+						"{@type=korap:token, @value={@type=korap:term, @value=Baum, @attr=orth, @relation==}}, " +						
+						"{@type=korap:token, @value={@type=korap:term, @value=Stein, @attr=orth, @relation==}}" +
+					"]}," +
+					"{@type=korap:token, @value={@type=korap:term, @value=Haus, @attr=orth, @relation==}} " +			
+				"]}";
+		ppt = new PoliqarpPlusTree(query);
+		map = ppt.getRequestMap().get("query").toString();
+		assertEquals(simple5.replaceAll(" ", ""), map.replaceAll(" ", ""));		
 	}
 }
 
