align operator as group (unfinished)
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 aef3f6e..124b41b 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
@@ -222,7 +222,7 @@
 		stackedTokens= 0;
 		stackedFields = 0;
 		
-		if (debug ) {
+		if (debug) {
 			System.err.println(" "+objectStack);
 			System.err.println(" "+tokenStack);
 			System.out.println(openNodeCats);
@@ -242,7 +242,7 @@
 			cqHasOccSibling = false;
 			cqHasOccChild = false;
 			// disregard empty segments in simple queries (parsed by ANTLR as empty cq_segments) 
-			ignoreCq_segment = (node.getChildCount() == 1 && (node.getChild(0).toStringTree(poliqarpParser).equals(" ") || getNodeCat(node.getChild(0)).equals("spanclass") || getNodeCat(node.getChild(0)).equals("position")));
+			ignoreCq_segment = (node.getChildCount() == 1 && (node.getChild(0).toStringTree(poliqarpParser).equals(" ") || getNodeCat(node.getChild(0)).equals("spanclass") || getNodeCat(node.getChild(0)).equals("position") || getNodeCat(node.getChild(0)).equals("position")));
 			if (!ignoreCq_segment) {
 				LinkedHashMap<String,Object> sequence = new LinkedHashMap<String,Object>();
 				// Step 0:  cq_segments has 'occ' child -> introduce group as super group to the sequence/token/group
@@ -517,22 +517,14 @@
 			} 
 		}
 		
-		if (nodeCat.equals("cq_seg_align")) {
+		if (nodeCat.equals("align")) {
 			LinkedHashMap<String,Object> alignGroup = new LinkedHashMap<String,Object>();
 			objectStack.push(alignGroup);
-			stackedObjects++;
+//			stackedObjects++;
 			// Step I: get info
-			// find position of ^ operator
-			Integer i;
-			for (i=0; i<node.getChildCount(); i++) {
-				if (node.getChild(i).toStringTree(poliqarpParser).startsWith("^")) {
-					break;
-				}
-			}
 			// fill group
 			alignGroup.put("@type", "korap:group");
-			alignGroup.put("relation", "align");
-			alignGroup.put("align", i);
+			alignGroup.put("relation", "left-align");
 			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)
@@ -779,7 +771,7 @@
 	 * @param childCat The category of the potential child.
 	 * @return true iff one or more children belong to the specified category
 	 */
-	private boolean hasChild(ParseTree node, String childCat) {
+	public boolean hasChild(ParseTree node, String childCat) {
 		for (int i=0; i<node.getChildCount(); i++) {
 			if (getNodeCat(node.getChild(i)).equals(childCat)) {
 				return true;
@@ -857,12 +849,11 @@
 //				"<s><np>([base=bar][base=foo])*",
 //				"shrink(1:contains(<s>,{1:<np>}))",
 //				"contains(<s>,startswith(<np>,[p=Det]))",
-//				"shrink(1: contains(<s>,{1:<np>}))",
-//				"contains(<s>, startswith(<np>,[p=Det]))",
+//				"contains(<s>, startswith(<np>,[p=Det]))",base=c]",
 //				
-//				"[orth=der]^[orth=Mann]",
+				"[orth=der]^[orth=Mann]",
 //				"([base=bar][base=foo])*",
-				"([base=a]^[base=b])|[base=c]"
+				"([base=a]^[base=b])|[base=c]",
 		};
 		PoliqarpPlusTree.debug=true;
 		for (String q : queries) {
diff --git a/src/test/java/PoliqarpPlusTreeTest.java b/src/test/java/PoliqarpPlusTreeTest.java
index 64a56df..06ec6d0 100644
--- a/src/test/java/PoliqarpPlusTreeTest.java
+++ b/src/test/java/PoliqarpPlusTreeTest.java
@@ -488,6 +488,7 @@
 		assertEquals(shr5.replaceAll(" ", ""), map.replaceAll(" ", ""));
 	}
 	
+	
 	@Test
 	public void testLayers() throws QueryException {
 		// [base=Mann]
@@ -500,9 +501,11 @@
 	public void testAlign() {
 		// [orth=der]^[orth=Mann]
 		String align1 = 
-				"{@type=korap:group, relation=align, align=1, operands=[" +
+				"{@type=korap:sequence, operands=[" +
 					"{@type=korap:token, @value={@type=korap:term, @value=orth:der, relation==}}," +
-					"{@type=korap:token, @value={@type=korap:term, @value=orth:Mann, relation==}}" +
+					"{@type=korap:group, relation=left-align, operands=[" +
+						"{@type=korap:token, @value={@type=korap:term, @value=orth:Mann, relation==}}" +
+					"]}" +
 				"]}";
 		ppt = new PoliqarpPlusTree("[orth=der]^[orth=Mann]");
 		map = ppt.getRequestMap().get("query").toString();
@@ -511,9 +514,11 @@
 		// "([base=a]^[base=b])|[base=c]",
 		String align2 = 
 				"{@type=korap:group, relation=or, operands=[" +
-						"{@type=korap:group, relation=align, align=1, operands=[" +
+						"{@type=korap:sequence, operands=[" +
 							"{@type=korap:token, @value={@type=korap:term, @value=base:a, relation==}}," +
-							"{@type=korap:token, @value={@type=korap:term, @value=base:b, relation==}}" +
+							"{@type=korap:group, relation=left-align, operands=[" +
+								"{@type=korap:token, @value={@type=korap:term, @value=base:b, relation==}}" +
+							"]}" +
 						"]}," +
 						"{@type=korap:token, @value={@type=korap:term, @value=base:c, relation==}}" +
 				"]}";