diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
index 16878f4..679b430 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ClassSpans.java
@@ -33,8 +33,6 @@
     protected SpanQuery operand;
     protected Boolean hasmorespans = false;
 
-    protected ByteBuffer bb;
-
     private final Logger log = LoggerFactory.getLogger(ClassSpans.class);
 
     // This advices the java compiler to ignore all loggings
@@ -70,7 +68,6 @@
         // The highlighted payload
         this.classedPayload = new ArrayList<byte[]>(3);
 
-        this.bb = ByteBuffer.allocate(10);
     };
 
 
@@ -146,8 +143,11 @@
         };
 
         // Todo: Better allocate using a Factory!
-        bb.clear();
-        bb.put((byte) 0).putInt(spans.start()).putInt(spans.end()).put(number);
+		ByteBuffer bb = ByteBuffer.allocate(10);
+		bb.put((byte) 0);
+		bb.putInt(spans.start());
+		bb.putInt(spans.end());
+		bb.put(number);
         /*
         System.err.println(
                            "####################### " + 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedExclusionSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedExclusionSpans.java
index 6b6fee0..b510282 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedExclusionSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedExclusionSpans.java
@@ -332,7 +332,9 @@
      * @return a byte array of extension offsets and class number
      */
     private byte[] createExtensionPayloads (int start, int end) {
-        ByteBuffer buffer = ByteBuffer.allocate(9);
+		ByteBuffer buffer = ByteBuffer.allocate(10);
+		Byte classPTI = 0;
+		buffer.put(classPTI);
         buffer.putInt(start);
         buffer.putInt(end);
         buffer.put(classNumber);
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
index 29e8900..14d9746 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ExpandedSpans.java
@@ -176,7 +176,9 @@
      * @return a byte array of extension offsets and the class number
      */
     private byte[] createExtensionPayloads (int start, int end) {
-        ByteBuffer buffer = ByteBuffer.allocate(9);
+		ByteBuffer buffer = ByteBuffer.allocate(10);
+		Byte classPTI = 0;
+		buffer.put(classPTI);
         buffer.putInt(start);
         buffer.putInt(end);
         buffer.put(classNumber);
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
index b134c72..84fe076 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/FocusSpans.java
@@ -165,37 +165,35 @@
         for (byte[] payload : firstSpans.getPayload()) {
             // No class payload - ignore
             // this may be problematic for other calculated payloads!
-            /*
-            if ((!matchTemporaryClass && payload.length == 9)
-                    || (matchTemporaryClass && payload.length == 10)) {
-            */
 
-            if (payload[0] == 0) {
-                if (classNumbers.contains(payload[9])) {
-                    isClassFound = true;
-                    classStart = byte2int(payload, 1);
-                    classEnd = byte2int(payload, 5);
+            if ((!matchTemporaryClass && payload.length == 10)
+                    || (matchTemporaryClass && payload.length == 11)) {
 
-                    if (isStart || classStart < minPos) {
-                        minPos = classStart;
-                        isStart = false;
+                if (payload[0] == 0) {
+                    if (classNumbers.contains(payload[9])) {
+                        isClassFound = true;
+                        classStart = byte2int(payload, 1);
+                        classEnd = byte2int(payload, 5);
+
+                        if (isStart || classStart < minPos) {
+                            minPos = classStart;
+                            isStart = false;
+                        }
+                        if (classEnd > maxPos) {
+                            maxPos = classEnd;
+                        }
                     }
-                    if (classEnd > maxPos) {
-                        maxPos = classEnd;
-                    }
+
+                    if (removeTemporaryClasses) {
+                        continue;
+                    };
                 }
+			}
 
-                if (removeTemporaryClasses) {
-                    continue;
-                };
-            }
-        
-            /*
-            if (payload.length == 8
-                    || (removeTemporaryClasses && payload.length == 10)) {
+            if (//payload.length == 8 || 
+                    (removeTemporaryClasses && payload.length == 11)) {
                 continue;
             }
-            */
 
             candidateSpan.getPayloads().add(payload.clone());
         }
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
index 7d855e0..e17bdcf 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ReferenceSpans.java
@@ -51,10 +51,10 @@
         matchPayload.clear();
 
         for (byte[] payload : firstSpans.getPayload()) {
-            if (payload.length == 9 && payload[8] == classNum) {
+			if (payload.length == 10 && payload[9] == classNum) {
                 if (isFound) {
-                    if (start == byte2int(payload, 0)
-                            && end == byte2int(payload, 4)) {
+					if (start == byte2int(payload, 1)
+							&& end == byte2int(payload, 5)) {
                         match = true;
                         continue;
                     }
@@ -62,8 +62,8 @@
                     break;
                 }
 
-                start = byte2int(payload, 0);
-                end = byte2int(payload, 4);
+				start = byte2int(payload, 1);
+				end = byte2int(payload, 5);
                 isFound = true;
                 matchPayload.add(payload);
             }
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 72cfc82..c8306ea 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
@@ -285,11 +285,13 @@
             boolean keep) {
         ByteBuffer buffer = null;
         if (keep) {
-            buffer = ByteBuffer.allocate(9);
+			buffer = ByteBuffer.allocate(10);
         }
         else {
-            buffer = ByteBuffer.allocate(10);
+			buffer = ByteBuffer.allocate(11);
         }
+		Byte classPTI = 0;
+		buffer.put(classPTI);
         buffer.putInt(start);
         buffer.putInt(end);
         buffer.put(classNumber);
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 e40fbc4..b7125d5 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
@@ -21,6 +21,7 @@
 import de.ids_mannheim.korap.query.SpanRelationMatchQuery;
 import de.ids_mannheim.korap.query.SpanRelationQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
+import de.ids_mannheim.korap.response.Match;
 import de.ids_mannheim.korap.response.Result;
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -70,12 +71,12 @@
         SpanReferenceQuery ref = new SpanReferenceQuery(sdq, (byte) 3, true);
         // System.out.println(ref.toString());
 
-        kr = ki.search(ref, (short) 10);
-        // for (Match km : kr.getMatches()) {
-        // System.out.println(km.getStartPos() + "," + km.getEndPos()
-        // + " "
-        // + km.getSnippetBrackets());
-        // }
+		kr = ki.search(ref, (short) 10);
+		for (Match km : kr.getMatches()) {
+			System.out.println(km.getStartPos() + "," + km.getEndPos() + " "
+					+ km.getSnippetBrackets());
+		}
+		System.out.println(kr.getTotalResults());
         assertEquals(
                 "spanReference(spanDistance(focus(1: focus(#[1,2]spanSegment("
                         + "focus(#1: spanSegment(spanRelation(base:<:child-of), focus(2: spanNext("
