diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
index 1a93456..6ec374e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
@@ -45,10 +45,10 @@
         // ELEMENT_WITH_TUI_AND_CERTAINTY_VALUE (67),
         MILESTONE(65);
 		
-		private int value;
+        private byte value;
 
-		private PayloadTypeIdentifier(int value) {
-			this.value = value;
+        private PayloadTypeIdentifier (int value) {
+            this.value = (byte) value;
 		}
     }
     
@@ -125,8 +125,6 @@
             return;
 		}
 
-
-
 		if (!payload.isEmpty()) {
             // Get payload one by one
             final int length = payload.get(0).length;
@@ -147,8 +145,8 @@
 
 			// FIX ME
 			// Copy the start and end character offsets
-			b = Arrays.copyOfRange(bb.array(), 1, 9);
-			this.matchPayload = Collections.singletonList(b);
+            b = Arrays.copyOfRange(bb.array(), 1, 9);
+            this.matchPayload = Collections.singletonList(b);
             return;
         }
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
index fcc8645..02d9656 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
@@ -10,7 +10,6 @@
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermContext;
-import org.apache.lucene.search.spans.Spans;
 import org.apache.lucene.search.spans.TermSpans;
 import org.apache.lucene.util.Bits;
 import org.slf4j.Logger;
@@ -57,10 +56,20 @@
     private TermSpans relationTermSpan;
 
     protected Logger logger = LoggerFactory.getLogger(RelationSpans.class);
-    private List<CandidateRelationSpan> candidateList;
+    private List<CandidateSpan> candidateList;
     private byte tempSourceNum, tempTargetNum;
     private byte sourceClass, targetClass;
 
+    public static enum PayloadTypeIdentifier {
+        TERM_TO_TERM(32), TERM_TO_ELEMENT(33), ELEMENT_TO_TERM(34), ELEMENT_TO_ELEMENT(
+                35);
+
+        private byte value;
+
+        private PayloadTypeIdentifier (int value) {
+            this.value = (byte) value;
+        }
+    }
 
     /**
      * Constructs RelationSpans from the given
@@ -112,7 +121,7 @@
     private boolean advance () throws IOException {
         while (hasMoreSpans || !candidateList.isEmpty()) {
             if (!candidateList.isEmpty()) {
-                CandidateRelationSpan cs = candidateList.get(0);
+                CandidateSpan cs = candidateList.get(0);
                 this.matchDocNumber = cs.getDoc();
                 this.matchStartPosition = cs.getStart();
                 this.matchEndPosition = cs.getEnd();
@@ -146,7 +155,8 @@
     private void setCandidateList () throws IOException {
         while (hasMoreSpans && relationTermSpan.doc() == currentDoc
                 && relationTermSpan.start() == currentPosition) {
-            CandidateRelationSpan cs = new CandidateRelationSpan(
+
+            CandidateSpan cs = new CandidateSpan(
                     relationTermSpan);
             readPayload(cs);
             setPayload(cs);
@@ -167,7 +177,7 @@
      * @param cs
      *            a CandidateRelationSpan
      */
-    private void readPayload (CandidateRelationSpan cs) {
+    private void readPayload(CandidateSpan cs) {
         List<byte[]> payload = (List<byte[]>) cs.getPayloads();
         int length = payload.get(0).length;
         ByteBuffer bb = ByteBuffer.allocate(length);
@@ -176,34 +186,33 @@
         cs.setLeftStart(cs.start);
 
         int i;
-        switch (length) {
-            case 10: // Token to token
-                i = bb.getInt(0);
-                cs.setLeftEnd(cs.start + 1);
-                cs.setRightStart(i);
-                cs.setRightEnd(i + 1);
-                break;
-
-            case 14: // Token to span
-                cs.setLeftEnd(cs.start + 1);
-                cs.setRightStart(bb.getInt(0));
-                cs.setRightEnd(bb.getInt(4));
-                break;
-
-            case 15: // Span to token
-                cs.setEnd(bb.getInt(0));
-                cs.setLeftEnd(cs.end);
-                i = bb.getInt(5);
-                cs.setRightStart(i);
-                cs.setRightEnd(i + 1);
-                break;
-
-            case 18: // Span to span
-                cs.setEnd(bb.getInt(0));
-                cs.setLeftEnd(cs.end);
-                cs.setRightStart(bb.getInt(4));
-                cs.setRightEnd(bb.getInt(8));
-                break;
+        this.payloadTypeIdentifier = bb.get(0);
+        
+        if (payloadTypeIdentifier == PayloadTypeIdentifier.TERM_TO_TERM.value){ // length 11            
+            i = bb.getInt(1);
+            cs.setLeftEnd(cs.start + 1);
+            cs.setRightStart(i);
+            cs.setRightEnd(i + 1);
+        }
+        else if (payloadTypeIdentifier == PayloadTypeIdentifier.TERM_TO_ELEMENT.value) { // length
+            // 15
+            cs.setLeftEnd(cs.start + 1);
+            cs.setRightStart(bb.getInt(1));
+            cs.setRightEnd(bb.getInt(5));
+        }
+        else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_TERM.value) { // length
+            // 15
+            cs.setEnd(bb.getInt(1));
+            cs.setLeftEnd(cs.end);
+            i = bb.getInt(5);
+            cs.setRightStart(i);
+            cs.setRightEnd(i + 1);
+        }
+        else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_ELEMENT.value) {
+            cs.setEnd(bb.getInt(1));
+            cs.setLeftEnd(cs.end);
+            cs.setRightStart(bb.getInt(5));
+            cs.setRightEnd(bb.getInt(9));
         }
 
         cs.setRightId(bb.getShort(length - 2)); //right id
@@ -213,7 +222,7 @@
     }
 
 
-    private void setPayload (CandidateRelationSpan cs) throws IOException {
+    private void setPayload(CandidateSpan cs) throws IOException {
         ArrayList<byte[]> payload = new ArrayList<byte[]>();
         if (relationTermSpan.isPayloadAvailable()) {
             payload.addAll(relationTermSpan.getPayload());
@@ -331,63 +340,4 @@
         this.rightEnd = rightEnd;
     }
 
-    /**
-     * CandidateRelationSpan stores a state of RelationSpans. In a
-     * list,
-     * CandidateRelationSpans are ordered first by the position of the
-     * relation
-     * left side.
-     */
-    class CandidateRelationSpan extends CandidateSpan {
-
-        private int rightStart, rightEnd;
-        private short leftId, rightId;
-
-
-        public CandidateRelationSpan (Spans span) throws IOException {
-            super(span);
-        }
-
-
-        public int getRightEnd () {
-            return rightEnd;
-        }
-
-
-        public void setRightEnd (int rightEnd) {
-            this.rightEnd = rightEnd;
-        }
-
-
-        public int getRightStart () {
-            return rightStart;
-        }
-
-
-        public void setRightStart (int rightStart) {
-            this.rightStart = rightStart;
-        }
-
-
-        public short getLeftId () {
-            return leftId;
-        }
-
-
-        public void setLeftId (short leftId) {
-            this.leftId = leftId;
-        }
-
-
-        public short getRightId () {
-            return rightId;
-        }
-
-
-        public void setRightId (short rightId) {
-            this.rightId = rightId;
-        }
-
-    }
-
 }
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
index 995f32d..687ef5f 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
@@ -245,20 +245,22 @@
                 "[(0-12)s:Frankenstein|_0$<i>0<i>12|<>:nn$<b>64<i>0<i>12<i>1<b>0<s>18|"
                         + "<>:s$<b>64<i>0<i>37<i>4<b>0<s>1|"
                         + "<>:np$<b>64<i>0<i>13<i>1<b>0<s>2|"
-                        + "<:stanford/d:tag$<i>1<s>1<s>18<s>19]"
+                        + "<:stanford/d:tag$<b>32<i>1<s>1<s>18<s>19]"
 
                         + "[(14-19)s:treat|_1$<i>14<i>19|<>:vb$<b>64<i>14<i>19<i>2<b>0<s>19|"
                         + "<>:vp$<b>64<i>14<i>36<i>4<b>0<s>3|"
-                        + ">:stanford/d:tag$<i>0<s>2<s>19<s>18|"
-                        + ">:stanford/d:tag$<i>3<s>3<s>19<s>21|"
-                        + ">:stanford/d:tag$<i>4<s>4<s>19<s>22]"
+                        + ">:stanford/d:tag$<b>32<i>0<s>2<s>19<s>18|"
+                        + ">:stanford/d:tag$<b>32<i>3<s>3<s>19<s>21|"
+                        + ">:stanford/d:tag$<b>32<i>4<s>4<s>19<s>22]"
 
-                        + "[(20-22)s:my|_2$<i>20<i>22|<>:prp$<b>64<i>20<i>22<i>3<s>20|<>:np$<b>64<i>20<i>31<i>3<s>4]"
+                        + "[(20-22)s:my|_2$<i>20<i>22|<>:prp$<b>64<i>20<i>22<i>3<b>0<s>20|"
+                        + "<>:np$<b>64<i>20<i>31<i>3<b>0<s>4]"
 
-                        + "[(23-31)s:daughter|_3$<i>23<i>31|<>:nn$<b>64<i>23<i>31<i>4<s>21|"
-                        + ">:stanford/d:tag$<i>2<s>5<s>21<s>20]"
+                        + "[(23-31)s:daughter|_3$<i>23<i>31|<>:nn$<b>64<i>23<i>31<i>4<b>0<s>21|"
+                        + ">:stanford/d:tag$<b>32<i>2<s>5<s>21<s>20]"
 
-                        + "[(32-36)s:well|_4$<i>32<i>36|<>:rb$<b>64<i>32<i>36<i>5<s>22|<>:advp$<b>64<i>32<i>36<i>4<s>5]");
+                        + "[(32-36)s:well|_4$<i>32<i>36|<>:rb$<b>64<i>32<i>36<i>5<b>0<s>22|"
+                        + "<>:advp$<b>64<i>32<i>36<i>4<b>0<s>5]");
         return fd;
     }
 
@@ -273,20 +275,24 @@
                 "[(0-12)s:Frankenstein|_0$<i>0<i>12|<>:nn$<b>64<i>0<i>12<i>1<b>0<s>18|"
                         + "<>:s$<b>64<i>0<i>37<i>5<b>0<s>1|"
                         + "<>:np$<b>64<i>0<i>13<i>1<b>0<s>2|"
-                        + "<:stanford/d:tag$<i>1<s>1<s>18<s>19]"
+                        + "<:stanford/d:tag$<b>32<i>1<s>1<s>18<s>19]"
 
                         + "[(14-19)s:treat|_1$<i>14<i>19|<>:vb$<b>64<i>14<i>19<i>2<b>0<s>19|"
                         + "<>:vp$<b>64<i>14<i>36<i>5<b>0<s>3|"
-                        + ">:stanford/d:tag$<i>0<s>2<s>19<s>18|"
-                        + ">:stanford/d:tag$<i>3<s>3<s>19<s>21|"
-                        + ">:stanford/d:tag$<i>4<s>4<s>19<s>22]"
+                        + ">:stanford/d:tag$<b>32<i>0<s>2<s>19<s>18|"
+                        + ">:stanford/d:tag$<b>32<i>3<s>3<s>19<s>21|"
+                        + ">:stanford/d:tag$<b>32<i>4<s>4<s>19<s>22]"
 
-                        + "[(20-22)s:my|_2$<i>20<i>22|<>:prp$<b>64<i>20<i>22<i>3<b>0<s>20|<>:np$<b>64<i>20<i>31<i>4<b>0<s>4]"
+                        + "[(20-22)s:my|_2$<i>20<i>22|"
+                        + "<>:prp$<b>64<i>20<i>22<i>3<b>0<s>20|"
+                        + "<>:np$<b>64<i>20<i>31<i>4<b>0<s>4]"
 
                         + "[(23-31)s:daughter|_3$<i>23<i>31|<>:nn$<b>64<i>23<i>31<i>4<b>0<s>21|"
-                        + ">:stanford/d:tag$<i>2<s>5<s>21<s>20]"
+                        + ">:stanford/d:tag$<b>32<i>2<s>5<s>21<s>20]"
 
-                        + "[(32-36)s:well|_4$<i>32<i>36|<>:rb$<b>64<i>32<i>36<i>5<b>0<s>22|<>:advp$<b>64<i>32<i>36<i>5<b>0<s>5]"
+                        + "[(32-36)s:well|_4$<i>32<i>36|"
+                        + "<>:rb$<b>64<i>32<i>36<i>5<b>0<s>22|"
+                        + "<>:advp$<b>64<i>32<i>36<i>5<b>0<s>5]"
 
                         + "[(38-41)s:She|_5$<i>38<i>41|<>:prp$<b>64<i>38<i>41<i>6<b>0<s>23|"
                         + "<>:np$<b>64<i>38<i>41<i>6<b>0<s>36|"
@@ -299,10 +305,10 @@
                         + "<>:np$<b>64<i>45<i>96<i>18<b>0<s>9]"
 
                         + "[(49-52)s:one|_8$<i>49<i>52|<>:nn$<b>64<i>49<i>52<i>9<b>0<s>26|"
-                        + ">:stanford/d:tag$<i>5<s>6<s>26<s>23|"
-                        + ">:stanford/d:tag$<i>6<s>7<s>26<s>24|"
-                        + ">:stanford/d:tag$<i>7<s>8<s>26<s>25|"
-                        + ">:stanford/d:tag$<i>10<s>9<s>26<s>28]"
+                        + ">:stanford/d:tag$<b>32<i>5<s>6<s>26<s>23|"
+                        + ">:stanford/d:tag$<b>32<i>6<s>7<s>26<s>24|"
+                        + ">:stanford/d:tag$<b>32<i>7<s>8<s>26<s>25|"
+                        + ">:stanford/d:tag$<b>32<i>10<s>9<s>26<s>28]"
 
                         + "[(53-57)s:that|_9$<i>53<i>57|<>:rp$<b>64<i>53<i>57<i>10<b>0<s>27|"
                         + "<>:sb$<b>64<i>53<i>96<i>18<b>0<s>10]"
@@ -310,15 +316,15 @@
                         + "[(58-63)s:saved|_10$<i>58<i>63|<>:vb$<b>64<i>58<i>63<i>11<b>0<s>28|"
                         + "<>:s$<b>64<i>58<i>96<i>18<b>0<s>11|"
                         + "<>:vp$<b>64<i>58<i>96<i>18<b>0<s>12|"
-                        + ">:stanford/d:tag$<i>9<s>10<s>28<s>27|"
-                        + ">:stanford/d:tag$<i>12<s>11<s>28<s>30|"
-                        + ">:stanford/d:tag$<i>15<s>12<s>28<s>33]"
+                        + ">:stanford/d:tag$<b>32<i>9<s>10<s>28<s>27|"
+                        + ">:stanford/d:tag$<b>32<i>12<s>11<s>28<s>30|"
+                        + ">:stanford/d:tag$<b>32<i>15<s>12<s>28<s>33]"
 
                         + "[(64-68)s:your|_11$<i>64<i>68|<>:prp$<b>64<i>64<i>68<i>12<b>0<s>29|"
                         + "<>:np$<b>64<i>64<i>75<i>13<b>0<s>13]"
 
                         + "[(69-75)s:master|_12$<i>69<i>75|<>:nn$<b>64<i>69<i>75<i>13<b>0<s>30|"
-                        + ">:stanford/d:tag$<i>11<s>13<s>30<s>29]"
+                        + ">:stanford/d:tag$<b>32<i>11<s>13<s>30<s>29]"
 
                         + "[(76-79)s:who|_13$<i>76<i>79|<>:rp$<b>64<i>76<i>79<i>14<b>0<s>31|"
                         + "<>:sb$<b>64<i>76<i>96<i>18<b>0<s>14]"
@@ -329,15 +335,15 @@
 
                         + "[(84-88)s:hold|_15$<i>84<i>88|<>:vb$<b>64<i>84<i>88<i>16<b>0<s>33|"
                         + "<>:vp$<b>64<i>84<i>96<i>18<b>0<s>16|"
-                        + ">:stanford/d:tag$<i>13<s>14<s>33<s>31|"
-                        + ">:stanford/d:tag$<i>14<s>15<s>33<s>32|"
-                        + ">:stanford/d:tag$<i>17<s>16<s>33<s>35]"
+                        + ">:stanford/d:tag$<b>32<i>13<s>14<s>33<s>31|"
+                        + ">:stanford/d:tag$<b>32<i>14<s>15<s>33<s>32|"
+                        + ">:stanford/d:tag$<b>32<i>17<s>16<s>33<s>35]"
 
                         + "[(89-91)s:so|_16$<i>89<i>91|<>:rb$<b>64<i>89<i>91<i>17<b>0<s>341|"
                         + "<>:adjp$<b>64<i>89<i>96<i>18<b>0<s>17]"
 
                         + "[(92-96)s:dear|_17$<i>92<i>96|<>:jj$<b>64<i>92<i>96<i>18<b>0<s>35|"
-                        + ">:stanford/d:tag$<i>16<s>17<s>35<s>34]");
+                        + ">:stanford/d:tag$<b>32<i>16<s>17<s>35<s>34]");
 
         return fd;
     }
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
index 22cbc67..07b8e50 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
@@ -75,16 +75,19 @@
         fd.addTV(
                 "base",
                 "ceccecdeed",
-                "[(0-1)s:c$<s>1|_0#0-1|>:xip/syntax-dep_rel$<i>6<s>1<s>1<s>1]"
-                        + "[(1-2)s:e$<s>1|_1#1-2|<:xip/syntax-dep_rel$<i>9<s>1<s>1<s>1|>:xip/syntax-dep_rel$<i>4<s>1<s>1<s>1]"
-                        + "[(2-3)s:c|_2#2-3]"
-                        + "[(3-4)s:c$<s>1|s:b$<s>2|_3#3-4|<:xip/syntax-dep_rel$<i>9<s>1<s>1<s>1]"
-                        + "[(4-5)s:e$<s>1|s:d$<s>2|_4#4-5|<:xip/syntax-dep_rel$<i>1<s>1<s>1<s>1]"
-                        + "[(5-6)s:c|_5#5-6]"
-                        + "[(6-7)s:d$<s>1|_6#6-7|<:xip/syntax-dep_rel$<i>1<s>1<s>1<s>1]"
-                        + "[(7-8)s:e|_7#7-8]"
-                        + "[(8-9)s:e|s:b|_8#8-9]"
-                        + "[(9-10)s:d$<s>1|_9#9-10|>:xip/syntax-dep_rel$<i>1<s>2<s>1<s>1|>:xip/syntax-dep_rel$<i>3<s>1<s>1<s>1]");
+                "[(0-1)s:c$<s>1|_0$<i>0<i>1"
+                        + "|>:xip/syntax-dep_rel$<b>32<i>6<s>1<s>1<s>1]"
+                        + "[(1-2)s:e$<s>1|_1$<i>1<i>2|"
+                        + "<:xip/syntax-dep_rel$<b>32<i>9<s>1<s>1<s>1|"
+                        + ">:xip/syntax-dep_rel$<b>32<i>4<s>1<s>1<s>1]"
+                        + "[(2-3)s:c|_2$<i>2<i>3]"
+                        + "[(3-4)s:c$<s>1|s:b$<s>2|_3$<i>3<i>4|<:xip/syntax-dep_rel$<b>32<i>9<s>1<s>1<s>1]"
+                        + "[(4-5)s:e$<s>1|s:d$<s>2|_4$<i>4<i>5|<:xip/syntax-dep_rel$<b>32<i>1<s>1<s>1<s>1]"
+                        + "[(5-6)s:c|_5$<i>5<i>6]"
+                        + "[(6-7)s:d$<s>1|_6$<i>6<i>7|<:xip/syntax-dep_rel$<b>32<i>1<s>1<s>1<s>1]"
+                        + "[(7-8)s:e|_7$<i>7<i>8]"
+                        + "[(8-9)s:e|s:b|_8$<i>8<i>9]"
+                        + "[(9-10)s:d$<s>1|_9$<i>9<i>10|>:xip/syntax-dep_rel$<b>32<i>1<s>2<s>1<s>1|>:xip/syntax-dep_rel$<b>32<i>3<s>1<s>1<s>1]");
         return fd;
     }
 
@@ -95,23 +98,23 @@
         fd.addTV(
                 "base",
                 "ceccecdeed",
-                "[(0-1)s:c$<s>2|<>:p#0-3$<i>3<s>1|_0#0-1|"
-                        + ">:xip/syntax-dep_rel$<i>3<i>6<i>9<s>2<s>1<s>1|"
-                        + ">:xip/syntax-dep_rel$<i>6<i>9<s>1<s>2<s>1|"
-                        + "r@:func=subj$<s>2]"
-                        + "[(1-2)s:e|_1#1-2|<>:p#1-3$<i>3<s>1]"
-                        + "[(2-3)s:c|_2#2-3]"
-                        + "[(3-4)s:c|s:b|_3#3-4]"
-                        + "[(4-5)s:e|s:d|_4#4-5]"
-                        + "[(5-6)s:c|_5#5-6]"
-                        + "[(6-7)s:d$<s>2|<>:p#6-9$<i>9<s>1|_6#6-7|"
-                        + "<:xip/syntax-dep_rel$<i>9<b>0<i>1<s>1<s>1<s>2|"
-                        + ">:xip/syntax-dep_rel$<i>9<b>0<i>9<s>3<s>1<s>1|"
-                        + "<:xip/syntax-dep_rel$<i>9<i>1<i>3<s>2<s>1<s>1|"
-                        + "r@:func=obj$<s>2]"
-                        + "[(7-8)s:e|_7#7-8]"
-                        + "[(8-9)s:e|s:b|_8#8-9]"
-                        + "[(9-10)s:d$<s>1|_9#9-10|<:xip/syntax-dep_rel$<i>6<i>9<s>2<s>1<s>1]");
+                "[(0-1)s:c$<s>2|<>:p$<b>64<i>0<i>3<i>3<b>0<s>1|_0$<i>0<i>1|"
+                        + ">:xip/syntax-dep_rel$<b>35<i>3<i>6<i>9<s>2<s>1<s>1|"
+                        + ">:xip/syntax-dep_rel$<b>33<i>6<i>9<s>1<s>2<s>1|"
+                        + "@:func=subj$<b>18<s>2]"
+                        + "[(1-2)s:e|_1$<i>1<i>2|<>:p$<b>64<i>1<i>3<i>3<b>0<s>1]"
+                        + "[(2-3)s:c|_2$<i>2<i>3]"
+                        + "[(3-4)s:c|s:b|_3$<i>3<i>4]"
+                        + "[(4-5)s:e|s:d|_4$<i>4<i>5]"
+                        + "[(5-6)s:c|_5$<i>5<i>6]"
+                        + "[(6-7)s:d$<s>2|<>:p$<b>64<i>6<i>9<i>9<b>0<s>1|_6$<i>6<i>7|"
+                        + "<:xip/syntax-dep_rel$<b>34<i>9<i>1<s>1<s>1<s>2|"
+                        + ">:xip/syntax-dep_rel$<b>34<i>9<i>9<s>3<s>1<s>1|"
+                        + "<:xip/syntax-dep_rel$<b>35<i>9<i>1<i>3<s>2<s>1<s>1|"
+                        + "@:func=obj$<b>18<s>2]"
+                        + "[(7-8)s:e|_7$<i>7<i>8]"
+                        + "[(8-9)s:e|s:b|_8$<i>8<i>9]"
+                        + "[(9-10)s:d$<s>1|_9$<i>9<i>10|<:xip/syntax-dep_rel$<b>33<i>6<i>9<s>2<s>1<s>1]");
         return fd;
     }
 
@@ -122,62 +125,67 @@
         fd.addTV(
                 "base",
                 "Ich kaufe die Blümen für meine Mutter.",
-                "[(0-3)s:Ich|_0#0-3|pos:NN$<s>1|<>:s#0-38$<i>7<s>2|<>:np#0-3$<i>1<s>3|"
-                        + ">:child-of$<i>0<i>7<s>1<s>3<s>2|"
-                        + ">:child-of$<i>0<i>1<s>2<s>1<s>3|"
-                        + "<:child-of$<i>0<s>3<s>3<s>1|"
-                        + "<:child-of$<i>7<i>0<i>1<s>4<s>2<s>3|"
-                        + "<:child-of$<i>7<i>1<i>7<s>5<s>2<s>2|"
-                        + "<:dep$<i>0<s>2<s>1<s>1|"
-                        + "r@:func=sbj$<i>0<i>7<s>1]"
+                "[(0-3)s:Ich|_0$<i>0<i>3|pos:NN$<s>1|<>:s$<b>64<i>0<i>38<i>7<b>0<s>2|<>:np$<b>64<i>0<i>3<i>1<b>0<s>3|"
+                        + ">:child-of$<b>33<i>0<i>7<s>4<s>3<s>2|"
+                        + ">:child-of$<b>33<i>0<i>1<s>5<s>1<s>3|"
+                        + "<:child-of$<b>32<i>0<s>6<s>3<s>1|"
+                        + "<:child-of$<b>35<i>7<i>0<i>1<s>7<s>2<s>3|"
+                        + "<:child-of$<b>35<i>7<i>1<i>7<s>8<s>2<s>2|"
+                        + "<:dep$<b>32<i>0<s>9<s>1<s>1|"
+                        + "@:func=sbj$<b>18<i>7<s>4]"
                         +
 
-                        "[(1-2)s:kaufe|_1#4-9|pos:V$<s>1|<>:vp#4-38$<i>7<s>2|"
-                        + ">:child-of$<i>7<i>0<i>7<s>6<s>2<s>2|"
-                        + ">:child-of$<i>1<i>7<s>2<s>7<s>2|"
-                        + "<:child-of$<i>7<b>0<i>2<s>8<s>2<s>1|"
-                        + "<:child-of$<i>7<i>2<i>7<s>9<s>2<s>4|"
-                        + ">:dep$<i>0<s>3<s>1<s>1|"
-                        + ">:dep$<i>3<s>4<s>1<s>1]"
+                        "[(1-2)s:kaufe|_1$<i>4<i>9|pos:V$<s>1|<>:vp$<b>64<i>4<i>38<i>7<b>0<s>2|"
+                        + ">:child-of$<b>35<i>7<i>0<i>7<s>6<s>2<s>2|"
+                        + ">:child-of$<b>33<i>1<i>7<s>2<s>7<s>2|"
+                        + "<:child-of$<b>34<i>7<i>2<s>8<s>2<s>1|"
+                        + "<:child-of$<b>35<i>7<i>2<i>7<s>9<s>2<s>4|"
+                        + ">:dep$<b>32<i>0<s>3<s>1<s>1|"
+                        + ">:dep$<b>32<i>3<s>4<s>1<s>1]"
                         +
 
-                        "[(2-3)s:die|_2#10-13|pos:ART$<s>1|tt:DET$<s>2|<>:np#10-20$<i>4<s>3|<>:np#10-38$<i>7<s>4|"
-                        + ">:child-of$<i>4<i>2<i>7<s>10<s>3<s>4|"
-                        + ">:child-of$<i>2<i>4<s>11<s>1<s>3|"
-                        + ">:child-of$<i>7<i>1<i>7<s>12<s>4<s>2|"
-                        + "<:child-of$<i>4<b>0<i>2<s>13<s>3<s>1|"
-                        + "<:child-of$<i>4<b>0<i>3<s>14<s>3<s>1|"
-                        + "<:child-of$<i>7<i>2<i>4<s>15<s>4<s>3|"
-                        + "<:child-of$<i>7<i>4<i>7<s>16<s>4<s>2|"
-                        + ">:parent-of$<i>7<i>4<i>7<s>17<s>4<s>2|"
-                        + "<:dep$<i>3<s>3<s>1<s>1]" +
+                        "[(2-3)s:die|_2$<i>10<i>13|pos:ART$<s>1|tt:DET$<s>2|<>:np$<b>64<i>10<i>20<i>4<b>0<s>3|<>:np$<b>64<i>10<i>38<i>7<b>0<s>4|"
+                        + ">:child-of$<b>35<i>4<i>2<i>7<s>10<s>3<s>4|"
+                        + ">:child-of$<b>33<i>2<i>4<s>11<s>1<s>3|"
+                        + ">:child-of$<b>35<i>7<i>1<i>7<s>12<s>4<s>2|"
+                        + "<:child-of$<b>34<i>4<i>2<s>13<s>3<s>1|"
+                        + "<:child-of$<b>34<i>4<i>3<s>14<s>3<s>1|"
+                        + "<:child-of$<b>35<i>7<i>2<i>4<s>15<s>4<s>3|"
+                        + "<:child-of$<b>35<i>7<i>4<i>7<s>16<s>4<s>2|"
+                        + ">:parent-of$<b>35<i>7<i>4<i>7<s>17<s>4<s>2|"
+                        + "<:dep$<b>32<i>3<s>3<s>1<s>1|" 
+                        + "@:func=head$<b>18<i>4<s>3]"
 
-                        "[(3-4)s:Blümen|_3#14-20|pos:NN$<s>1|"
-                        + ">:child-of$<i>2<i>4<s>17<s>1<s>3|"
-                        + "<:dep$<i>1<s>2<s>1<s>1|" + ">:dep$<i>2<s>3<s>1<s>1|"
-                        + ">:dep$<i>4<s>4<s>1<s>1|"
-                        + "r@:func=head$<i>2<i>4<s>3|"
-                        + "r@:func=obj$<i>2<i>4<s>3]" +
+                        + "[(3-4)s:Blümen|_3$<i>14<i>20|pos:NN$<s>1|"
+                        + ">:child-of$<b>33<i>2<i>4<s>17<s>1<s>3|"
+                        + "<:dep$<b>32<i>1<s>2<s>1<s>1|"
+                        + ">:dep$<b>32<i>2<s>3<s>1<s>1|"
+                        + ">:dep$<b>32<i>4<s>4<s>1<s>1|"                        
+                        + "@:func=obj$<b>18<i>4<s>3]"
 
-                        "[(4-5)s:für|_4#21-24|pos:PREP$<s>1|<>:pp#21-38$<i>7<s>2|"
-                        + ">:child-of$<i>4<i>7<s>18<s>1<s>2|"
-                        + ">:child-of$<i>7<i>2<i>7<s>19<s>2<s>4|"
-                        + "<:child-of$<i>7<b>0<i>5<s>20<s>2<s>1|"
-                        + "<:child-of$<i>7<i>5<i>7<s>21<s>2<s>2|"
-                        + "<:dep$<i>3<s>1<s>1<s>1|" + ">:dep$<i>6<s>3<s>1<s>1]"
+
+                        + "[(4-5)s:für|_4$<i>21<i>24|pos:PREP$<s>1|<>:pp$<b>64<i>21<i>38<i>7<b>0<s>2|"
+                        + ">:child-of$<b>33<i>4<i>7<s>18<s>1<s>2|"
+                        + ">:child-of$<b>35<i>7<i>2<i>7<s>19<s>2<s>4|"
+                        + "<:child-of$<b>34<i>7<i>5<s>20<s>2<s>1|"
+                        + "<:child-of$<b>35<i>7<i>5<i>7<s>21<s>2<s>2|"
+                        + "<:dep$<b>32<i>3<s>1<s>1<s>1|"
+                        + ">:dep$<b>32<i>6<s>3<s>1<s>1]"
                         +
 
-                        "[(5-6)s:meine|_5#25-30|pos:ART$<s>1|<>:np#25-38$<i>7<s>2|"
-                        + ">:child-of$<i>5<i>7<s>22<s>1<s>2|"
-                        + ">:child-of$<i>7<i>4<i>7<s>23<s>2<s>2|"
-                        + "<:child-of$<i>7<b>0<i>5<s>24<s>2<s>1|"
-                        + "<:child-of$<i>7<b>0<i>6<s>25<s>2<s>1|"
-                        + "<:dep$<i>6<s>3<s>1<s>1]" +
-
-                        "[(6-7)s:Mutter.|_6#31-38|pos:NN$<s>1|"
-                        + ">:child-of$<i>5<i>7<s>26<s>1<s>2|"
-                        + ">:dep$<i>5<s>2<s>1<s>1|" + "<:dep$<i>4<s>3<s>1<s>1|"
-                        + "r@:func=head$<i>5<i>7<s>3]");
+                        "[(5-6)s:meine|_5$<i>25<i>30|pos:ART$<s>1|<>:np$<b>64<i>25<i>38<i>7<b>0<s>2|"
+                        + ">:child-of$<b>33<i>5<i>7<s>22<s>1<s>2|"
+                        + ">:child-of$<b>35<i>7<i>4<i>7<s>23<s>2<s>2|"
+                        + "<:child-of$<b>34<i>7<i>5<s>24<s>2<s>1|"
+                        + "<:child-of$<b>34<i>7<i>6<s>25<s>2<s>1|"
+                        + "<:dep$<b>32<i>6<s>3<s>1<s>1|" 
+                        + "@:func=head$<b>18<i>7<s>3]"
+        
+                        + "[(6-7)s:Mutter.|_6$<i>31<i>38|pos:NN$<s>1|"
+                        + ">:child-of$<b>33<i>5<i>7<s>26<s>1<s>2|"
+                        + ">:dep$<b>32<i>5<s>2<s>1<s>1|"
+                        + "<:dep$<b>32<i>4<s>3<s>1<s>1]");
+                        
 
         return fd;
     }
@@ -197,6 +205,7 @@
         kr = ki.search(sq, (short) 10);
 
         assertEquals((long) 7, kr.getTotalResults());
+
         // token to token
         assertEquals(0, kr.getMatch(0).getLocalDocID());
         assertEquals(0, kr.getMatch(0).getStartPos());
@@ -306,10 +315,13 @@
         fq.setRemoveTemporaryClasses(true);
         fq.setSorted(false);
 
+        SpanAttributeQuery saq = new SpanAttributeQuery(new SpanTermQuery(
+                new Term("base", "@:func=sbj")), true);
+
+        kr = ki.search(saq, (short) 20);
+
         // child-of with attr func=sbj
-        SpanWithAttributeQuery wq = new SpanWithAttributeQuery(fq,
-                new SpanAttributeQuery(new SpanTermQuery(new Term("base",
-                        "r@:func=sbj")), true), true);
+        SpanWithAttributeQuery wq = new SpanWithAttributeQuery(fq, saq, true);
 
         kr = ki.search(wq, (short) 20);
         assertEquals((long) 1, kr.getTotalResults());
@@ -319,7 +331,8 @@
         // child-of without attr func=sbj
         wq = new SpanWithAttributeQuery(fq,
                 new SpanAttributeQuery(new SpanTermQuery(new Term("base",
-                        "r@:func=sbj")), true, true), true);
+ "@:func=sbj")), true, true),
+                true);
         kr = ki.search(wq, (short) 20);
         assertEquals((long) 12, kr.getTotalResults());
     }
@@ -407,19 +420,13 @@
 
         kr = ki.search(fq, (short) 10);
         assertEquals((long) 6, kr.getTotalResults());
-        // for (Match km : kr.getMatches()) {
-        // System.out.println(km.getStartPos() + "," + km.getEndPos()
-        // + " "
-        // + km.getSnippetBrackets());
-        // }
+
         SpanAttributeQuery aq = new SpanAttributeQuery(new SpanTermQuery(
-                new Term("base", "r@:func=head")), true);
+                new Term("base", "@:func=head")), true);
         kr = ki.search(aq, (short) 10);
 
         // dependency relation, which is also a head
-        SpanWithAttributeQuery wq = new SpanWithAttributeQuery(fq,
-                new SpanAttributeQuery(new SpanTermQuery(new Term("base",
-                        "r@:func=head")), true), true);
+        SpanWithAttributeQuery wq = new SpanWithAttributeQuery(fq, aq, true);
 
         kr = ki.search(wq, (short) 20);
 
