diff --git a/src/main/java/de/ids_mannheim/korap/KorapQuery.java b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
index b1b7e2f..6df320e 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
@@ -213,6 +213,11 @@
                 );
 
 	    case "operation:sequence":
+		if (DEBUG)  {
+		    log.trace("Found new sequence");
+		    System.err.println("----");
+		};
+
 		if (operands.size() < 2)
 		    throw new QueryException(
 		        "SpanSequenceQuery needs at least two operands"
@@ -320,6 +325,9 @@
 		    throw new QueryException("The maximum repetition value has to " +
 					     "be greater or equal to the minimum repetition value");
 
+		if (DEBUG)
+		    log.trace("Found new repetition %d-%d", min, max);
+
 		return new SpanRepetitionQueryWrapper(
 		    this.fromJSON(operands.get(0)), min, max
 		);
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
index 9732556..9b695d8 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
@@ -17,6 +17,9 @@
 import org.apache.lucene.search.spans.SpanTermQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapperInterface;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author Nils Diewald
  */
@@ -24,6 +27,13 @@
     private String field;
     private ArrayList<SpanQuery> segments;
     private ArrayList<DistanceConstraint> constraints;
+
+    // Logger
+    private final static Logger log = LoggerFactory.getLogger(SpanSequenceQueryWrapper.class);
+
+    // This advices the java compiler to ignore all loggings
+    public static final boolean DEBUG = false;
+    
     private boolean
 	isInOrder = true,
 	isNull = true,
@@ -47,6 +57,8 @@
 
     public SpanSequenceQueryWrapper (String field, SpanQuery sq) {
 	this(field);
+	if (DEBUG)
+	    log.trace("New spanquery sequence " + sq.toString());
 	this.segments.add((SpanQuery) sq);
 	this.isOptional = false;
 	this.isNull = false;
@@ -58,12 +70,18 @@
 	    this.segments.add((SpanQuery) sswq.toQuery());
 	    this.isNull = false;
 	    if (sswq.isOptional()) {
+		if (DEBUG)
+		    log.trace("New optional query sequence " +
+			      sswq.toQuery().toString());
 		this.isOptional = true;
 		this.lastIsOptional = true;
 		this.firstIsOptional = true;
 	    }
 	    else {
 		this.isOptional = false;
+		if (DEBUG)
+		    log.trace("New non-optional query sequence " +
+			      sswq.toQuery().toString());
 	    };
 	};
     };
@@ -95,7 +113,9 @@
     };
 
     public SpanSequenceQueryWrapper append (String term) {
-	return this.append((SpanQuery) new SpanTermQuery(new Term(field, term)));
+	return this.append(
+	    (SpanQuery) new SpanTermQuery(new Term(field, term))
+        );
     };
     
     public SpanSequenceQueryWrapper append (SpanQuery query) {
@@ -104,6 +124,10 @@
 
 	// Check if there has to be alternation magic in action
 	if (this.lastIsOptional) {
+	    if (DEBUG)
+		log.trace("Append non-opt query to opt query " +
+			  query.toString());
+
 	    SpanAlterQueryWrapper saqw = new SpanAlterQueryWrapper(field, query);
 	    SpanSequenceQueryWrapper ssqw = new SpanSequenceQueryWrapper(field, query);
 	    // Remove last element of the list and prepend it
@@ -119,6 +143,10 @@
 	    this.segments.add((SpanQuery) saqw.toQuery());
 	}
 	else {
+	    if (DEBUG)
+		log.trace("Append non-opt query to non-opt query " +
+			  query.toString());
+
 	    this.segments.add(query);
 	};
 	
@@ -129,6 +157,9 @@
 	if (!ssq.isNull()) {
 	    SpanQuery appendQuery = ssq.toQuery();
 	    if (!ssq.isOptional()) {
+		if (DEBUG)
+		    log.trace("Append non-opt query to non-opt query " +
+			      appendQuery.toString());
 		return this.append(appendQuery);
 	    };
 	    
@@ -141,9 +172,18 @@
 		ssqw.prepend(lastQuery);
 
 		// Situation is a?b?
-		if (this.lastIsOptional)
+		if (this.lastIsOptional) {
 		    saqw.or(appendQuery);
-		// last stays optional
+		    // last stays optional
+		    if (DEBUG)
+			log.trace("Append opt query to opt query " +
+				  appendQuery.toString());
+
+		}
+		else if (DEBUG) {
+		    log.trace("Append opt query to non-opt query " +
+			      appendQuery.toString());
+		};
 
 		saqw.or(ssqw);
 		this.segments.add((SpanQuery) saqw.toQuery());
@@ -153,6 +193,10 @@
 	    else {
 		this.segments.add(appendQuery);
 
+		if (DEBUG)
+		    log.trace("Append opt query " +
+			      appendQuery.toString());
+
 		// Update boundary optionality
 		this.firstIsOptional = true;
 		this.isOptional      = true;
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index e885412..3619d79 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -12,6 +12,10 @@
 #log4j.logger.de.ids_mannheim.korap.query.spans.ClassSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.MatchSpans = TRACE, stdout
 
+# Wrapper
+#log4j.logger.de.ids_mannheim.korap.KorapQuery = TRACE, stdout
+#log4j.logger.de.ids_mannheim.korap.query.wrap.SpanSequenceQueryWrapper = TRACE, stdout
+
 # Collections
 #log4j.logger.de.ids_mannheim.korap.KorapFilter = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.KorapCollection = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
index aead247..74a827b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
@@ -108,8 +108,10 @@
 	// Create a container for virtual collections:
 	KorapCollection kc = new KorapCollection(ki);
 
-	String json = getString(getClass().getResource("/queries/bsp-class-2.jsonld").getFile());
+	// String json = getString(getClass().getResource("/queries/bsp-class-2.jsonld").getFile());
+	String json = getString(getClass().getResource("/queries/bsp-repetition.jsonld").getFile());
 
+	System.err.println(new KorapSearch(json).getQuery().toString());
 	KorapResult kr = new KorapSearch(json).run(ki);
 
 	System.err.println(kr.toJSON());
@@ -117,6 +119,7 @@
 	// assertEquals(14, kc.numberOf("documents"));
     };
 
+
     public static String getString (String path) {
 	StringBuilder contentBuilder = new StringBuilder();
 	try {
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
index 2ed6e06..ae5365d 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
@@ -262,6 +262,15 @@
 	assertEquals(sqwi.toQuery().toString(), "shrink(1: spanEndsWith(<tokens:s />, {1: tokens:mate/p:V}))");
     };
 
+
+    @Test
+    public void queryJSONrepetition () {
+	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp-repetition.jsonld").getFile());
+
+	// der[cnx/p=A]{0,2}[tt/p=NN]
+	assertEquals(sqwi.toQuery().toString(), "spanNext(spanOr([tokens:s:der, spanNext(tokens:s:der, spanQuantifier(tokens:cnx/p:A[1:2]))]), tokens:tt/p:NN)");
+    };
+
     public static String getString (String path) {
 	StringBuilder contentBuilder = new StringBuilder();
 	try {
diff --git a/src/test/resources/queries/bsp-repetition.jsonld b/src/test/resources/queries/bsp-repetition.jsonld
new file mode 100644
index 0000000..342b7d5
--- /dev/null
+++ b/src/test/resources/queries/bsp-repetition.jsonld
@@ -0,0 +1,62 @@
+{
+   "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
+   "collections" : [
+      {
+         "@type" : "korap:meta-filter",
+         "@value" : {
+            "@field" : "korap:field#corpusID",
+            "@type" : "korap:term",
+            "@value" : "WPD"
+         }
+      }
+   ],
+   "meta" : {},
+   "query" : {
+      "@type" : "korap:group",
+      "operands" : [
+         {
+            "@type" : "korap:token",
+            "wrap" : {
+               "@type" : "korap:term",
+               "key" : "der",
+               "layer" : "orth",
+               "match" : "match:eq"
+            }
+         },
+         {
+            "@type" : "korap:group",
+            "boundary" : {
+               "@type" : "korap:boundary",
+               "max" : 2,
+               "min" : 0
+            },
+            "max" : 2,
+            "min" : 0,
+            "operands" : [
+               {
+                  "@type" : "korap:token",
+                  "wrap" : {
+                     "@type" : "korap:term",
+                     "foundry" : "cnx",
+                     "key" : "A",
+                     "layer" : "p",
+                     "match" : "match:eq"
+                  }
+               }
+            ],
+            "operation" : "operation:repetition"
+         },
+         {
+            "@type" : "korap:token",
+            "wrap" : {
+               "@type" : "korap:term",
+               "foundry" : "tt",
+               "key" : "NN",
+               "layer" : "p",
+               "match" : "match:eq"
+            }
+         }
+      ],
+      "operation" : "operation:sequence"
+   }
+}
\ No newline at end of file
