diff --git a/Changes b/Changes
index 88599ac..0768a6a 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,9 @@
-0.55.8 2017-05-29
+0.55.8 2017-07-04
         - [feature] Retrieve and display pagebreaks (diewald)
         - [bugfix] Handle invalid dates in input (diewald)
         - [feature] Support availability meta data (diewald)
+        - [bugfix] Do not respond with a "match all" VC if the
+          VC data (e.g. JSON) is wrong (diewald)
 
 0.55.7 2017-01-24
         - [bugfix] Sorted results in unordered element distance query
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index e399264..b2d326e 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -98,18 +98,21 @@
             }
             else{
                 this.addError(StatusCodes.MISSING_COLLECTION, "Collection is not found.");
+				this.fromBuilder(this.build().nothing());
             }
         }
 
         // Query Exception
         catch (QueryException qe) {
             this.addError(qe.getErrorCode(), qe.getMessage());
+			this.fromBuilder(this.build().nothing());
         }
 
         // JSON exception
         catch (IOException e) {
             this.addError(621, "Unable to parse JSON", "KrillCollection",
                     e.getLocalizedMessage());
+			this.fromBuilder(this.build().nothing());
         };
     };
 
@@ -140,6 +143,7 @@
         }
         catch (Exception e) {
             this.addError(621, "Unable to parse JSON", "KrillCollection");
+			this.fromBuilder(this.build().nothing());
         };
 
         return this;
diff --git a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java b/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
index d3ade8b..4716804 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
@@ -51,6 +51,12 @@
         return new CollectionBuilder.Range(field, since, KrillDate.END);
     };
 
+	public CollectionBuilder.Interface nothing () {
+
+		// Requires that a field with name "0---" does not exist
+        return new CollectionBuilder.Term("0---", "0");
+    };
+
 
     public CollectionBuilder.Interface till (String field, String date) {
         try {
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 074fbae..1678d9e 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -1,4 +1,4 @@
-# log4j.rootLogger = ERROR, stdout
+log4j.rootLogger = ERROR, stdout
 
 # Queries:
 # log4j.logger.de.ids_mannheim.korap.query.SpanNextQuery = TRACE, stdout
@@ -32,7 +32,7 @@
 # log4j.logger.de.ids_mannheim.korap.response.Match = TRACE, stdout
 
 # Index:
-log4j.logger.de.ids_mannheim.korap.index.Indexer = INFO, stdout
+# log4j.logger.de.ids_mannheim.korap.index.Indexer = INFO, stdout
 # log4j.logger.de.ids_mannheim.korap.KrillIndex = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.index.PositionsToOffset = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.index.MultiTermTokenStream = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index 1361e61..0446ee0 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -39,7 +39,9 @@
         ki.commit();
 
         KrillCollection kc = new KrillCollection("{lalala}");
+		assertEquals("Unable to parse JSON", kc.getError(0).getMessage());
         kc.setIndex(ki);
+
         long docs = 0, tokens = 0, sentences = 0, paragraphs = 0;
         try {
             docs = kc.numberOf("documents");
