diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
index 10b80ec..0f3fe12 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
@@ -151,12 +151,12 @@
 
 	assertEquals("SnippetHTML (0) 2", "<span class=\"context-left\"><span class=\"more\"></span>a</span><span class=\"match\">b<em class=\"class-0 level-0\">a</em></span><span class=\"context-right\"><span class=\"more\"></span></span>", kr.match(0).snippetHTML());
 
-	// System.err.println(kr.toJSON());
-
 	sq = new SpanMatchModifyClassQuery(
-            new SpanNextQuery(
-	        new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")), (byte) 1),
-                new SpanClassQuery(new SpanTermQuery(new Term("base", "s:c")), (byte) 2)
+            new SpanClassQuery(
+                new SpanNextQuery(
+	            new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")), (byte) 1),
+                    new SpanClassQuery(new SpanTermQuery(new Term("base", "s:c")), (byte) 2)
+		), (byte) 3
             ), (byte) 3
 	);
 
@@ -173,6 +173,17 @@
 	assertEquals("Document count", 1, ki.numberOf("base", "documents"));
 	assertEquals("Token count", 10, ki.numberOf("base", "t"));
 
+	// Don't match the expected class!
+	sq = new SpanMatchModifyClassQuery(
+            new SpanNextQuery(
+	        new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")), (byte) 1),
+		new SpanClassQuery(new SpanTermQuery(new Term("base", "s:c")), (byte) 2)
+	    ), (byte) 3
+	);
+
+	kr = ki.search(sq, (short) 10);
+	
+	assertEquals("totalResults", 0, kr.totalResults());
 
 	sq = new SpanMatchModifyClassQuery(
             new SpanNextQuery(
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 04cdb97..da0d5d7 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
@@ -18,12 +18,15 @@
 
     private String defaultFoundry = "mate/";
 
-    @Ignore
+    @Test
     public void queryJSONBsp1 () {
 	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp1.jsonld").getFile());
 
+	// There is a repetition in here
 	// ([base=foo]|[base=bar])[base=foobar]
-	assertEquals(sqwi.toQuery().toString(), "");
+	assertEquals(sqwi.toQuery().toString(),
+            "spanOr([tokens:base:foo, spanQuantifier(spanNext(tokens:base:foo, tokens:base:bar)[1:100])])");
+	assertTrue(sqwi.isOptional());
     };
 
     @Test
@@ -76,7 +79,7 @@
 	assertEquals(sqwi.toQuery().toString(), "tokens:"+defaultFoundry+"l:Katze");
     };
 
-    @Ignore
+    @Test
     public void queryJSONBsp7 () {
 	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp7.jsonld").getFile());
 
@@ -85,14 +88,6 @@
 	assertTrue(sqwi.isNegative());
     };
 
-    @Ignore
-    public void queryJSONBsp8 () {
-	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp8.json").getFile());
-
-	// [!base=Katze]
-	assertEquals(sqwi.toQuery().toString(), "");
-    };
-
     @Test
     public void queryJSONBsp9 () {
 	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp9.jsonld").getFile());
@@ -118,12 +113,18 @@
 	assertEquals(sqwi.toQuery().toString(), "spanNext(spanNext(tokens:"+defaultFoundry+"l:Katze, tokens:s:und), tokens:s:Hunde)");
     };
 
-    @Ignore
+    @Test
     public void queryJSONBsp11 () {
 	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp11.jsonld").getFile());
 
-	// [!(base=Katze&orth=Katzen)]
-	assertEquals(sqwi.toQuery().toString(), "");
+	// [base!=Katze | orth!=Katzen]
+	/*
+	  Imagine a([^b]|[^c])d
+	  Matches abd and acd
+	  Interpretation would be not(spanAnd(...))
+	*/
+	assertEquals(sqwi.toQuery().toString(), "spanOr([tokens:mate/l:Katze, tokens:s:Katzen])");
+	assertTrue(sqwi.isNegative());
     };
 
     @Test
@@ -134,12 +135,11 @@
 	assertEquals(sqwi.toQuery().toString(), "spanContain(<tokens:np />, tokens:"+defaultFoundry+"l:Mann)");
     };
 
-    @Ignore
+    @Test
     public void queryJSONBsp13 () {
 	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp13.jsonld").getFile());
 
-	// startswith(<np>,[!pos=Det])
-	assertEquals(sqwi.toQuery().toString(), "");
+	assertEquals(sqwi.toQuery().toString(), "spanStartsWith(<tokens:np />, tokens:mate/p:Det)");
     };
 
     @Test
diff --git a/src/test/resources/queries/bsp1.jsonld b/src/test/resources/queries/bsp1.jsonld
index 5361a5c..3cc2171 100644
--- a/src/test/resources/queries/bsp1.jsonld
+++ b/src/test/resources/queries/bsp1.jsonld
@@ -1,46 +1,46 @@
 {
-    "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
-    "query": {
+  "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
+  "query": {
+    "@type": "korap:group", 
+    "operation": "operation:or",
+    "operands": [
+      {
+	"@type": "korap:token", 
+	"wrap": {
+	  "@type": "korap:term", 
+	  "layer": "base",
+	  "key": "foo"
+	}
+      }, 
+      {
 	"@type": "korap:group", 
-	"operation": "operation:or",
+	"min" : 0,
+	"operation": "operation:repetition",
 	"operands": [
-	    {
+	  {
+	    "@type": "korap:group", 
+	    "operation" : "operation:sequence",
+	    "operands": [
+	      {
 		"@type": "korap:token", 
 		"wrap": {
-		    "@type": "korap:term", 
-		    "layer": "base",
-		    "key": "foo"
+		  "@type": "korap:term", 
+		  "key": "foo", 
+		  "layer" : "base"
 		}
-	    }, 
-	    {
-		"@type": "korap:group", 
-		"min" : 0,
-		"operation": "operation:repetition",
-		"operands": [
-		    {
-			"@type": "korap:group", 
-			"operation" : "operation:sequence",
-			"operands": [
-			    {
-				"@type": "korap:token", 
-				"wrap": {
-				    "@type": "korap:term", 
-				    "key": "foo", 
-				    "layer" : "base"
-				}
-			    }, 
-			    {
-				"@type": "korap:token", 
-				"wrap": {
-				    "@type": "korap:term",
-				    "layer": "base",
-				    "key" : "bar"
-				}
-			    }
-			]
-		    }
-		]
-	    }
+	      },
+	      {
+		"@type": "korap:token", 
+		"wrap": {
+		  "@type": "korap:term",
+		  "layer": "base",
+		  "key" : "bar"
+		}
+	      }
+	    ]
+	  }
 	]
-    }
+      }
+    ]
+  }
 }
diff --git a/src/test/resources/queries/bsp13.jsonld b/src/test/resources/queries/bsp13.jsonld
index f67adef..bb177ee 100644
--- a/src/test/resources/queries/bsp13.jsonld
+++ b/src/test/resources/queries/bsp13.jsonld
@@ -115,7 +115,7 @@
           "@type": "korap:term", 
           "layer": "pos",
           "key" : "Det", 
-	      "match" : "match:ne"
+          "match" : "match:ne"
         }
       }
     ]
