diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
index e79ae03..d337a8c 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
@@ -12,13 +12,16 @@
 
 import de.ids_mannheim.korap.KrillIndex;
 import de.ids_mannheim.korap.constants.RelationDirection;
+import de.ids_mannheim.korap.query.QueryBuilder;
 import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.query.SpanElementQuery;
 import de.ids_mannheim.korap.query.SpanFocusQuery;
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanRelationQuery;
 import de.ids_mannheim.korap.query.SpanWithinQuery;
+import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
 import de.ids_mannheim.korap.response.Result;
+import de.ids_mannheim.korap.util.QueryException;
 
 public class TestFocusIndex {
     private KrillIndex ki;
@@ -98,6 +101,7 @@
         SpanFocusQuery focus = new SpanFocusQuery(within, (byte) 1);
         focus.setSorted(false);
         kr = ki.search(focus, (short) 10);
+        assertEquals("focus(1: spanContain(<tokens:x />, spanOr([{1: tokens:s:b}, {1: tokens:s:c}])),sorting)", focus.toString());
         assertEquals("a[[{1:b}]]cd", kr.getMatch(0).getSnippetBrackets());
         assertEquals("a[[{1:b}]]cd", kr.getMatch(1).getSnippetBrackets());
         assertEquals("ab[[{1:c}]]d", kr.getMatch(2).getSnippetBrackets());
@@ -139,6 +143,35 @@
 
     }
 
+    @Test
+    public void testFocusSortingWrapping () throws QueryException, IOException {
+        ki = new KrillIndex();
+        ki.addDoc(createFieldDoc());
+        ki.commit();
+
+        QueryBuilder kq = new QueryBuilder("tokens");
+
+        SpanQueryWrapper focus = kq.focus(kq.within(kq.tag("x"), kq.or(kq.nr(1, kq.seg("s:b")), kq.nr(1, kq.seg("s:c")))));
+        assertEquals("focus(1: spanContain(<tokens:x />, spanOr([{1: tokens:s:b}, {1: tokens:s:c}])),sorting)", focus.toQuery().toString());
+        
+        kr = ki.search(focus.toQuery(), (short) 10);
+        assertEquals("a[[{1:b}]]cd", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("a[[{1:b}]]cd", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("ab[[{1:c}]]d", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("ab[[{1:c}]]d", kr.getMatch(3).getSnippetBrackets());
+        assertEquals(4, kr.getTotalResults());
+
+
+        focus = kq.focus(kq.startswith(kq.tag("x"), kq.or(kq.nr(1, kq.seg("s:b")), kq.nr(1, kq.seg("s:c")))));
+        assertEquals("focus(1: spanStartsWith(<tokens:x />, spanOr([{1: tokens:s:b}, {1: tokens:s:c}])))",
+                     focus.toQuery().toString());
+
+        kr = ki.search(focus.toQuery(), (short) 10);
+        assertEquals("a[[{1:b}]]cd", kr.getMatch(0).getSnippetBrackets());
+        assertEquals(1, kr.getTotalResults());
+    }
+
+    
     public static FieldDocument createFieldDoc () {
         FieldDocument fd = new FieldDocument();
         fd.addString("ID", "doc-0");
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 4e01093..3c603fa 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestReferenceIndex.java
@@ -1,6 +1,6 @@
 package de.ids_mannheim.korap.index;
 
-import static de.ids_mannheim.korap.TestSimple.*;
+import static de.ids_mannheim.korap.TestSimple.getJsonQuery;
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
@@ -77,7 +77,7 @@
         assertEquals(
                 "spanReference(spanDistance(focus(1: focus(#[1,2]spanSegment("
                         + "focus(#1: spanSegment(spanRelation(base:<:child-of), focus(2: spanNext("
-                        + "{1: base:pos:V}, {2: <base:np />})))), {3: <base:pp />}))), "
+                        + "{1: base:pos:V}, {2: <base:np />})))), {3: <base:pp />}),sorting)), "
                         + "{3: <base:pp />}, [(w[3:3], ordered, notExcluded)]), 3)",
                 ref.toString());
 
@@ -87,6 +87,7 @@
 
 
     @Test
+//    @Ignore
     public void testCase2 () throws IOException, QueryException {
 
         String filepath = getClass()
@@ -102,9 +103,9 @@
                 "spanReference(focus(#[1,2]spanSegment({2: <tokens:prp />}, focus(#2: "
                         + "spanSegment(spanRelation(tokens:>:stanford/d:tag), "
                         + "focus(3: spanDistance(focus(1: spanDistance({1: <tokens:vb />}, "
-                        + "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)])), "
-                        + "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)]))))"
-                        + ")), 2)",
+                        + "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)]),sorting), "
+                        + "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)]),sorting)),sorting)"
+                        + "),sorting), 2)",
                 sq.toString());
 
         SpanElementQuery seq1 = new SpanElementQuery("tokens", "vb");
@@ -120,10 +121,12 @@
         SpanDistanceQuery sdq1 = new SpanDistanceQuery(scq1, scq2,
                 new DistanceConstraint(1, 2, false, false), true);
         SpanFocusQuery sfq1 = new SpanFocusQuery(sdq1, (byte) 1);
+        sfq1.setSorted(false);
 
         SpanDistanceQuery sdq2 = new SpanDistanceQuery(sfq1, scq3,
                 new DistanceConstraint(1, 3, false, false), true);
         SpanFocusQuery sfq2 = new SpanFocusQuery(sdq2, (byte) 3);
+        sfq2.setSorted(false);
 
         // nn -> prp
         SpanRelationQuery srq = new SpanRelationQuery(
@@ -199,8 +202,8 @@
                         + "focus(1: spanReference(focus(#[1,2]spanSegment({2: <tokens:prp />}, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:stanford/d:tag), "
                         + "focus(3: spanDistance(focus(1: spanDistance({1: <tokens:vb />}, "
-                        + "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)])), "
-                        + "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)])))))), 2)))))), 3)",
+                        + "{2: <tokens:prp />}, [(w[1:2], notOrdered, notExcluded)]),sorting), "
+                        + "{3: <tokens:nn />}, [(w[1:3], notOrdered, notExcluded)]),sorting)),sorting)),sorting), 2),sorting)),sorting)),sorting), 3)",
                 sq.toString());
         kr = ki.search(sq, (short) 10);
         // for (Match km : kr.getMatches()) {
@@ -231,8 +234,17 @@
 
         kr = ki.search(sq, (short) 10);
 
+        /*
+          for (Match km : kr.getMatches()) {
+            System.out.println(km.getDocID() + ":" + km.getStartPos() + "," + km.getEndPos()
+                               + " "
+                               + km.getSnippetBrackets());
+        }
+        */
+
         assertEquals(4, kr.getTotalResults());
         assertEquals("doc-1", kr.getMatch(3).getDocID());
+        
         assertEquals(2, kr.getMatch(3).getStartPos());
         assertEquals(4, kr.getMatch(3).getEndPos());
     }
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 adf97ac..8f50f41 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
@@ -22,7 +22,6 @@
 import de.ids_mannheim.korap.query.SpanSegmentQuery;
 import de.ids_mannheim.korap.query.SpanTermWithIdQuery;
 import de.ids_mannheim.korap.query.SpanWithAttributeQuery;
-import de.ids_mannheim.korap.response.Match;
 import de.ids_mannheim.korap.response.Result;
 
 /*
@@ -462,7 +461,7 @@
         rv.setSorted(false);
 
         assertEquals(
-                "focus(1: focus(#[1,2]spanSegment(spanRelation(base:>:child-of), {1: <base:np />})))",
+                "focus(1: focus(#[1,2]spanSegment(spanRelation(base:>:child-of), {1: <base:np />}),sorting),sorting)",
                 rv.toString());
 
         kr = ki.search(rv, (short) 10);
@@ -569,7 +568,7 @@
         rv2.setSorted(false);
 
         assertEquals(
-                "focus(2: focus(#[1,2]spanSegment({2: target:spanRelation(base:>:child-of)}, {1: <base:np />})))",
+                "focus(2: focus(#[1,2]spanSegment({2: target:spanRelation(base:>:child-of)}, {1: <base:np />}),sorting),sorting)",
                 rv2.toString());
 
         kr = ki.search(rv2, (short) 10);
@@ -664,7 +663,7 @@
         rv.setSorted(false);
 
         assertEquals(
-                "focus(2: focus(#[1,2]spanSegment({2: source:spanRelation(base:<:child-of)}, {1: <base:np />})))",
+                "focus(2: focus(#[1,2]spanSegment({2: source:spanRelation(base:<:child-of)}, {1: <base:np />}),sorting),sorting)",
                 rv.toString());
 
         kr = ki.search(rv, (short) 10);
@@ -801,8 +800,8 @@
         sfq2.setSorted(false);
         assertEquals("focus(1: spanSegment(focus(2: spanSegment({1: source:"
                 + "{2: target:spanRelation(base:>:child-of)}}, "
-                + "{1: spanTermWithId(base:pos:ART)})), "
-                + "{2: <base:np />}))", sfq2.toString());
+                + "{1: spanTermWithId(base:pos:ART)}),sorting), "
+                + "{2: <base:np />}),sorting)", sfq2.toString());
 
         kr = ki.search(sfq2, (short) 10);
 
@@ -1009,7 +1008,7 @@
         assertEquals(
                 "focus(#[1,2]spanSegment(spanWithAttribute(spanAttribute(base:@:case=accusative)), "
                         + "focus(#2: spanSegment({1: source:{2: target:spanRelation(base:>:child-of)}}, "
-                        + "spanWithAttribute(spanAttribute(base:@:case=accusative))))))",
+                        + "spanWithAttribute(spanAttribute(base:@:case=accusative))),sorting)),sorting)",
                 srmq.toString());
         kr = ki.search(srmq, (short) 10);
         assertEquals((long) 1, kr.getTotalResults());
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
index af6b568..97cf3f8 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
@@ -4,6 +4,7 @@
 import org.apache.lucene.search.spans.SpanQuery;
 import de.ids_mannheim.korap.KrillQuery;
 import de.ids_mannheim.korap.query.QueryBuilder;
+import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
 
 import de.ids_mannheim.korap.util.QueryException;
 
@@ -344,6 +345,56 @@
         assertEquals("spanStartsWith(field:test, field:test2)", sq.toString());
     };
 
-    // kq.seg("a").append(kq.ANY).append("b:c");
-    // kq.repeat(kq.seg("a", "b"), 5)
+
+    @Test
+    public void korapMaybeUnsorted () throws QueryException {
+        QueryBuilder kq = new QueryBuilder("field");
+        SpanQueryWrapper sqw = kq.re("a.*");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.wc("a?b");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.seg("a", "b").with("c");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.seg("a", "b").with("c");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.seq().append("c").prepend("b");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.tag("abc");
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.within(kq.tag("abc"), kq.seg("a"));
+        assertTrue(sqw.maybeUnsorted());
+
+        sqw = kq.contains(kq.tag("abc"), kq.seg("a"));
+        assertTrue(sqw.maybeUnsorted());
+
+        sqw = kq.startswith(kq.tag("abc"), kq.seg("a"));
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.endswith(kq.tag("abc"), kq.seg("a"));
+        assertTrue(sqw.maybeUnsorted());
+
+        sqw = kq.overlaps(kq.tag("abc"), kq.seg("a"));
+        assertTrue(sqw.maybeUnsorted());
+
+        sqw = kq.matches(kq.tag("abc"), kq.seg("a"));
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.matches(kq.within(kq.tag("abc"), kq.seg("a")), kq.seg("a"));
+        assertTrue(sqw.maybeUnsorted());
+        
+        sqw = kq.nr(2, kq.tag("abc"));
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.repeat(kq.tag("abc"), 4);
+        assertFalse(sqw.maybeUnsorted());
+
+        sqw = kq.repeat(kq.within(kq.tag("abc"), kq.seg("a")), 4);
+        assertTrue(sqw.maybeUnsorted());
+    };
 };
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index f867b5c..6c5adda 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -353,7 +353,7 @@
 
         //     "MORPH(V) #IN(R) #ELEM(S)"
         assertEquals(sqwi.toQuery().toString(),
-                "focus(1: spanEndsWith(<tokens:s />, {1: tokens:p:V}))");
+                "focus(1: spanEndsWith(<tokens:s />, {1: tokens:p:V}),sorting)");
     };
 
 
@@ -386,7 +386,7 @@
 
         // Namen /s1 Leben
         assertEquals(sqwi.toQuery().toString(),
-                "focus(129: spanElementDistance({129: tokens:s:Namen}, {129: tokens:s:Leben}, [(base/s:s[0:1], notOrdered, notExcluded)]))");
+                "focus(129: spanElementDistance({129: tokens:s:Namen}, {129: tokens:s:Leben}, [(base/s:s[0:1], notOrdered, notExcluded)]),sorting)");
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanReferenceQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanReferenceQueryJSON.java
index 1192296..83bfb60 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanReferenceQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanReferenceQueryJSON.java
@@ -30,7 +30,7 @@
                 "spanReference(spanNext({3: tokens:p:P}, "
                         + "focus(2: focus(#[1,2]spanSegment({3: tokens:p:P}, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "focus(1: spanNext({2: tokens:p:V}, {1: <tokens:c:NP />})))))))), 3)",
+                        + "focus(1: spanNext({2: tokens:p:V}, {1: <tokens:c:NP />}))),sorting)),sorting),sorting)), 3)",
                 sq.toString());
     }
 
@@ -50,7 +50,7 @@
         assertEquals(
                 "spanReference(spanNext(focus(2: focus(#[1,2]spanSegment({3: tokens:p:P}, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "focus(1: spanNext({2: tokens:p:V}, {1: <tokens:c:NP />}))))))), "
+                        + "focus(1: spanNext({2: tokens:p:V}, {1: <tokens:c:NP />}))),sorting)),sorting),sorting), "
                         + "{3: tokens:p:P}), 3)",
                 sq.toString());
     }
@@ -70,7 +70,7 @@
                 "spanReference(focus(#[1,2]spanSegment({1: <tokens:c:VP />}, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "focus(2: spanReference(spanNext(focus(1: spanNext(focus(2: spanNext({1: <tokens:c:VP />}, "
-                        + "{2: <tokens:c:NP />})), {3: <tokens:c:PP />})), {3: <tokens:c:PP />}), 3)))))), 1)",
+                        + "{2: <tokens:c:NP />})), {3: <tokens:c:PP />})), {3: <tokens:c:PP />}), 3))),sorting)),sorting), 1)",
                 sq.toString());
     }
 
@@ -104,8 +104,8 @@
                 "spanReference(focus(#[1,2]spanSegment({1: <tokens:c:prp />}, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:stanford/d:tag), "
                         + "focus(2: spanDistance(focus(1: spanDistance(<tokens:c:vb />, "
-                        + "{1: <tokens:c:prp />}, [(w[1:1], notOrdered, notExcluded)])), "
-                        + "{2: <tokens:c:nn />}, [(w[1:3], ordered, notExcluded)])))))), 1)",
+                        + "{1: <tokens:c:prp />}, [(w[1:1], notOrdered, notExcluded)]),sorting), "
+                        + "{2: <tokens:c:nn />}, [(w[1:3], ordered, notExcluded)]))),sorting)),sorting), 1)",
                 sq.toString());
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
index 16f7b33..3a55968 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
@@ -29,7 +29,7 @@
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "spanWithAttribute(spanAttribute(tokens:type:case:accusative))))))",
+                        + "spanWithAttribute(spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -49,7 +49,7 @@
                 //
                 "focus(#[1,2]spanSegment(spanWithAttribute(spanAttribute(tokens:type:case:accusative)), "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "<tokens:c:vp />))))",
+                        + "<tokens:c:vp />),sorting)),sorting)",
                 sq.toString());
 
         // System.out.println(sq.toString());
@@ -70,7 +70,7 @@
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "spanElementWithAttribute(<tokens:c:np />, "
-                        + "spanAttribute(tokens:type:case:accusative))))))",
+                        + "spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -89,7 +89,7 @@
                         + "spanAttribute(tokens:type:case:accusative)), "
                         + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
                         + "spanElementWithAttribute(<tokens:c: />, "
-                        + "spanAttribute(tokens:type:case:accusative))))))",
+                        + "spanAttribute(tokens:type:case:accusative))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -102,7 +102,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(#[1,2]spanSegment(spanRelation(tokens:>:mate/d:HEAD), <tokens:c:s />))",
+                "focus(#[1,2]spanSegment(spanRelation(tokens:>:mate/d:HEAD), <tokens:c:s />),sorting)",
                 sq.toString());
     }
 
@@ -115,7 +115,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(#[1,2]spanSegment(spanRelation(tokens:>:malt/d:KONJ), tokens:tt/l:um))",
+                "focus(#[1,2]spanSegment(spanRelation(tokens:>:malt/d:KONJ), tokens:tt/l:um),sorting)",
                 sq.toString());
     }
 
@@ -128,7 +128,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(#[1,2]spanSegment(spanRelation(tokens:<:mate/d:HEAD), <tokens:c:vp />))",
+                "focus(#[1,2]spanSegment(spanRelation(tokens:<:mate/d:HEAD), <tokens:c:vp />),sorting)",
                 sq.toString());
     }
 
@@ -143,7 +143,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, "
-                        + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), <tokens:c:s />))))",
+                        + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), <tokens:c:s />),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -158,7 +158,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:@root))))))",
+                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:@root))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -173,7 +173,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:c:vp />, focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), "
-                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:type:top))))))",
+                        + "spanElementWithAttribute(<tokens:c:s />, spanAttribute(tokens:type:top))),sorting)),sorting)",
                 sq.toString());
     }
 
@@ -185,7 +185,7 @@
                 .getResource("/queries/relation/relation-only.json").getFile();
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
-        assertEquals("focus(#[1,2]spanRelation(tokens:>:mate/d:HEAD))",
+        assertEquals("focus(#[1,2]spanRelation(tokens:>:mate/d:HEAD),sorting)",
                 sq.toString());
     }
 
@@ -198,7 +198,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(1: focus(#[1,2]spanSegment(spanRelation(tokens:<:mate/d:HEAD), {1: <tokens:c:np />})))",
+                "focus(1: focus(#[1,2]spanSegment(spanRelation(tokens:<:mate/d:HEAD), {1: <tokens:c:np />}),sorting),sorting)",
                 sq.toString());
     }
 
@@ -211,7 +211,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
                 "focus(2: focus(#[1,2]spanSegment({2: <tokens:c:np />}, "
-                        + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), {1: <tokens:c:s />})))))",
+                        + "focus(#2: spanSegment(spanRelation(tokens:>:mate/d:HEAD), {1: <tokens:c:s />}),sorting)),sorting),sorting)",
                 sq.toString());
     }
 
@@ -224,7 +224,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(2: focus(#[1,2]spanSegment({2: target:spanRelation(tokens:>:mate/d:HEAD)}, {1: <tokens:c:s />})))",
+                "focus(2: focus(#[1,2]spanSegment({2: target:spanRelation(tokens:>:mate/d:HEAD)}, {1: <tokens:c:s />}),sorting),sorting)",
                 sq.toString());
     }
 
@@ -237,7 +237,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
         assertEquals(
-                "focus(2: focus(#[1,2]{1: source:{2: target:spanRelation(tokens:>:mate/d:HEAD)}}))",
+                "focus(2: focus(#[1,2]{1: source:{2: target:spanRelation(tokens:>:mate/d:HEAD)}},sorting),sorting)",
                 sq.toString());
     }
 
@@ -251,7 +251,7 @@
         SpanQuery sq = sqwi.toQuery();
         assertEquals("focus(#[1,2]spanSegment(<tokens:corenlp/c:NP />, "
                 + "focus(#2: spanSegment(spanRelation(SpanMultiTermQueryWrapper(tokens:/>:malt/d:.*/)), "
-                + "<tokens:corenlp/c:VP />))))", sq.toString());
+                + "<tokens:corenlp/c:VP />),sorting)),sorting)", sq.toString());
     }
 
     // EM: should relation term allow empty key?
@@ -278,7 +278,7 @@
         SpanQueryWrapper sqwi = getJsonQuery(filepath);
         SpanQuery sq = sqwi.toQuery();
 
-        assertEquals("focus(#[1,2]spanRelation(tokens:>:malt/d:PP))",
+        assertEquals("focus(#[1,2]spanRelation(tokens:>:malt/d:PP),sorting)",
                 sq.toString());
     }
 
@@ -295,7 +295,7 @@
         assertEquals(
                 "focus(#[1,2]spanSegment(<tokens:corenlp/c:NP />, "
                         + "focus(#2: spanSegment("
-                        + "spanRelation(tokens:>:malt/d:PP), <tokens:corenlp/c:VP />))))",
+                        + "spanRelation(tokens:>:malt/d:PP), <tokens:corenlp/c:VP />),sorting)),sorting)",
                 sq.toString());
 
     }
@@ -312,7 +312,7 @@
         assertEquals(
                 "focus(#[1,2]spanSegment(tokens:tt/p:VVINF, "
                         + "focus(#2: spanSegment("
-                        + "spanRelation(tokens:>:malt/d:KONJ), tokens:tt/p:KOUI))))",
+                        + "spanRelation(tokens:>:malt/d:KONJ), tokens:tt/p:KOUI),sorting)),sorting)",
                 sq.toString());
 
     }
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java b/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
index 20cd49f..98dffee 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
@@ -56,7 +56,7 @@
         Krill ks = new Krill(json);
         Result kr = ks.apply(ki);
         assertEquals(kr.getSerialQuery(),
-                "focus(130: {131: spanContain({129: <tokens:s />}, {130: tokens:s:wegen})})");
+                "focus(130: {131: spanContain({129: <tokens:s />}, {130: tokens:s:wegen})},sorting)");
         assertEquals(kr.getTotalResults(), 0);
         assertEquals(kr.getStartIndex(), 0);
 
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
index 7094199..bc12a15 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -744,7 +744,7 @@
 
         Result kr = ks.apply(ki);
         assertEquals(kr.getSerialQuery(),
-                "focus(1: spanContain(<tokens:base/s:s />, {1: tokens:s:Leben}))");
+                "focus(1: spanContain(<tokens:base/s:s />, {1: tokens:s:Leben}),sorting)");
         assertEquals(40, kr.getMatch(0).getStartPos());
         assertEquals(41, kr.getMatch(0).getEndPos());
 
@@ -758,7 +758,7 @@
 
         kr = ks.apply(ki);
         assertEquals(kr.getSerialQuery(),
-                "focus(129: spanContain(<tokens:base/s:s />, {129: tokens:s:Leben}))");
+                "focus(129: spanContain(<tokens:base/s:s />, {129: tokens:s:Leben}),sorting)");
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
                 "... Initiative\" eine neue politische Gruppierung ins "
                         + "[[Leben]] gerufen hatten. Pressemeldungen zufolge haben sich ...");
@@ -767,7 +767,7 @@
         kr = ks.apply(ki);
         assertEquals(kr.getSerialQuery(),
                 "focus(129: spanElementDistance({129: tokens:s:Namen}, "
-                        + "{129: tokens:s:Leben}, [(base/s:s[0:1], notOrdered, notExcluded)]))");
+                        + "{129: tokens:s:Leben}, [(base/s:s[0:1], notOrdered, notExcluded)]),sorting)");
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
                 "... ihren Austritt erklärt und unter dem [[Namen \"Einheitsbewegung "
                         + "der sozialistischen Initiative\" eine neue politische Gruppierung "
