diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
index fa4323a..1c54f89 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
@@ -17,8 +17,6 @@
         this.number   = number;
         if (number != (byte) 0)
             this.hasClass = true;
-		this.min = subquery.min;
-		this.max = subquery.max;
     };
 
     public SpanClassQueryWrapper (SpanQueryWrapper subquery, short number) {
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 817e6c0..9891459 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
@@ -189,11 +189,6 @@
         // The wrapper is null - ignore this in the sequence
         if (ssq.isNull())
             return this;
-		// if (ssq.isEmpty) {
-		// this.isEmpty = true;
-		// this.min = ssq.min;
-		// this.max = ssq.max;
-		// }
 
         // As the spanQueryWrapper is not null,
         // the sequence can't be null as well
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSubspanQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSubspanQueryWrapper.java
index b1cb207..fba22e7 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSubspanQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSubspanQueryWrapper.java
@@ -44,7 +44,7 @@
 
 		if (subquery.isEmpty()) {
 			handleEmptySubquery();
-		} else if (subquery.isNegative) {
+		} else if (subquery.isNegative()) {
 			handleNegativeSubquery();
 		}
 	}
@@ -64,11 +64,8 @@
 		subquery.setMin(startOffset);
 		subquery.isOptional = false;
 
-		// setMax(subquery.max);
-		// setMin(subquery.min);
 		max = subquery.max - subquery.min;
 		min = max;
-
 	}
 
 	private void handleEmptySubquery() {
@@ -99,7 +96,6 @@
 			length = subquery.max - subquery.min;
 		}
 
-		// System.out.println(subquery.min + "," + subquery.max);
 		setMax(subquery.max);
 		setMin(subquery.min);
 	}
@@ -117,13 +113,9 @@
 			return null;
 		if (sq instanceof SpanTermQuery) {
 			if (subquery.isNegative()) {
-				// set expansion min max
-				// max = length;
-				// min = length;
 				return sq;
 			}
-			else if ((startOffset == 0 || startOffset == -1)
-					&&
+			else if ((startOffset == 0 || startOffset == -1) &&
 					(length == 1 || length == 0)) {
 				// if (DEBUG) log.warn("Not SpanSubspanQuery. " +
 				// "Creating only a SpanQuery for the subquery.");
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
index 000fe41..5c5ea26 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanSubspanQueryJSON.java
@@ -78,6 +78,8 @@
 
 	@Test
 	public void testEmptyMinusStartOffset() throws QueryException {
+		// no optimization
+		// submatch(-1,4:der []{1,8})
 		String filepath = getClass().getResource(
 				"/queries/submatch/empty-minusStart.jsonld").getFile();
 		SpanQueryWrapper sqwi = getJSONQuery(filepath);
@@ -89,6 +91,8 @@
 
 	@Test
 	public void testEmptyMax() throws QueryException {
+		// no optimization
+		// submatch(1,2:der []{1,8})
 		String filepath = getClass().getResource(
 				"/queries/submatch/empty-max.jsonld").getFile();
 		SpanQueryWrapper sqwi = getJSONQuery(filepath);
