diff --git a/src/main/java/de/ids_mannheim/korap/KorapCollection.java b/src/main/java/de/ids_mannheim/korap/KorapCollection.java
index 6c33c7c..1f65da2 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapCollection.java
@@ -11,6 +11,7 @@
 import de.ids_mannheim.korap.KorapFilter;
 
 import de.ids_mannheim.korap.util.KorapDate;
+import de.ids_mannheim.korap.util.QueryException;
 import de.ids_mannheim.korap.filter.BooleanFilter;
 import de.ids_mannheim.korap.filter.FilterOperation;
 import org.apache.lucene.search.spans.SpanQuery;
@@ -58,6 +59,7 @@
 	try {
 	    JsonNode json = mapper.readValue(jsonString, JsonNode.class);
 	    if (json.has("meta")) {
+		log.trace("Add meta collection");
 		for (JsonNode meta : json.get("meta")) {
 		    this.fromJSON(meta);
 		};
@@ -72,13 +74,15 @@
 	this.filter = new ArrayList<FilterOperation>(5);
     };
 
-    public void fromJSON(JsonNode json) {
+    public void fromJSON(JsonNode json) throws QueryException {
 	String type = json.get("@type").asText();
 
 	if (type.equals("korap:meta-filter")) {
+	    log.trace("Add Filter");
 	    this.filter(new BooleanFilter(json.get("@value")));
 	}
 	else if (type.equals("korap:meta-extend")) {
+	    log.trace("Add Extend");
 	    this.extend(new BooleanFilter(json.get("@value")));
 	};
     };
@@ -134,6 +138,14 @@
     };
 
 
+    public String toString () {
+	StringBuffer sb = new StringBuffer();
+	for (FilterOperation fo : this.filter) {
+	    sb.append(fo.toString()).append("; ");
+	};
+	return sb.toString();
+    };
+
     // DEPRECATED BUT USED IN TEST CASES
     public KorapResult search (SpanQuery query) {
 	return this.index.search(this, query, 0, (short) 20, true, (short) 5, true, (short) 5);
@@ -231,5 +243,9 @@
 	return this.index.numberOf(this, "tokens", type);
     };
 
+    public String getError () {
+	return this.error;
+    };
+
     // implement "till" with rangefilter
 };
diff --git a/src/main/java/de/ids_mannheim/korap/KorapSearch.java b/src/main/java/de/ids_mannheim/korap/KorapSearch.java
index 8733a38..4f55dd0 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapSearch.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapSearch.java
@@ -252,6 +252,8 @@
 
     public KorapSearch setCollection (KorapCollection kc) {
 	this.collection = kc;
+	if (kc.getError() != null)
+	    this.error = kc.getError();
 	return this;
     };
 
diff --git a/src/main/java/de/ids_mannheim/korap/filter/BooleanFilter.java b/src/main/java/de/ids_mannheim/korap/filter/BooleanFilter.java
index 5a22198..b9bf69d 100644
--- a/src/main/java/de/ids_mannheim/korap/filter/BooleanFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/filter/BooleanFilter.java
@@ -17,6 +17,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import de.ids_mannheim.korap.util.QueryException;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,18 +40,19 @@
     private String type;
 
     // Logger
-    private final static Logger jlog = LoggerFactory.getLogger(KorapFilter.class);
-
+    private final static Logger log = LoggerFactory.getLogger(KorapFilter.class);
 
     private BooleanQuery bool;
+    private String error;
 
     public BooleanFilter () {
 	bool = new BooleanQuery();
     };
 
-    public BooleanFilter (JsonNode json) {
+    public BooleanFilter (JsonNode json) throws QueryException {
 	bool = new BooleanQuery();
-
+	this.fromJSON(json, "tokens");
+	/*
 	String type = json.get("@type").asText();
 	String field = _getField(json);
 
@@ -62,12 +65,15 @@
 		this.fromJSON(operand, field);
 	    };
 	};
+	*/
     };
 
 
-    private void fromJSON (JsonNode json, String field) {
+    private void fromJSON (JsonNode json, String field) throws QueryException {
 	String type = json.get("@type").asText();
 
+	log.trace("@type: " + type);
+
 	if (json.has("@field"))
 	    field = _getField(json);
 
@@ -82,7 +88,10 @@
 
 	    String date, till;
 
+	    log.trace("relation: " + json.get("relation").asText());
+
 	    switch (json.get("relation").asText())  {
+
 	    case "between":
 		date = _getDate(json, 0);
 		till = _getDate(json, 1);
@@ -107,8 +116,23 @@
 		if (date != null)
 		    this.date(date);
 		break;
+
+	    case "and":
+		if (!json.has("operands"))
+		    return;
+
+		for (JsonNode operand : json.get("operands")) {
+		    this.fromJSON(operand, field);
+		};
+		break;
+
+	    default:
+		throw new QueryException(json.get("relation").asText() + " is not a supported relation");
 	    };
 	}
+	else {
+	    throw new QueryException(type + " is not a supported group");
+	};
     };
 
     private static String  _getField (JsonNode json)  {
@@ -232,7 +256,7 @@
 	    );
 	}
 	catch (NumberFormatException e) {
-	    jlog.warn("Parameter of till(date) is invalid");
+	    log.warn("Parameter of till(date) is invalid");
 	};
 	return this;
     };
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index e050a57..addc5d8 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -11,7 +11,8 @@
 #log4j.logger.de.ids_mannheim.korap.query.spans.MatchSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.KorapIndex = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.KorapMatch = TRACE, stdout
-# log4j.logger.de.ids_mannheim.korap.KorapCollection = TRACE, stdout
+#log4j.logger.de.ids_mannheim.korap.KorapFilter = TRACE, stdout
+#log4j.logger.de.ids_mannheim.korap.KorapCollection = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.index.PositionsToOffset = TRACE, stdout
 
 # log4j.logger.de.ids_mannheim.korap.analysis.MultiTermTokenStream = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java
index 3dca921..87e20ff 100644
--- a/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollectionJSON.java
@@ -16,10 +16,11 @@
     public void metaQuery1 () {
 	String metaQuery = getString(getClass().getResource("/queries/metaquery.json").getFile());
 	KorapCollection kc = new KorapCollection(metaQuery);
-	assertEquals(3,kc.getCount());
-	assertEquals("filter with QueryWrapperFilter(+textClass:wissenschaft)",kc.getFilter(0).toString());
-	assertEquals("filter with QueryWrapperFilter(+pubPlace:Erfurt +author:Hesse)",kc.getFilter(1).toString());
-	assertEquals("extend with QueryWrapperFilter(+pubDate:[20110429 TO 20131231] +textClass:freizeit)",kc.getFilter(2).toString());
+
+	assertEquals("filter with QueryWrapperFilter(+textClass:wissenschaft)", kc.getFilter(0).toString());
+	assertEquals("filter with QueryWrapperFilter(+pubPlace:Erfurt +author:Hesse)", kc.getFilter(1).toString());
+	assertEquals("extend with QueryWrapperFilter(+pubDate:[20110429 TO 20131231] +textClass:freizeit)", kc.getFilter(2).toString());
+	assertEquals(3, kc.getCount());
     };
 
 
@@ -31,6 +32,14 @@
 	assertEquals("filter with QueryWrapperFilter(+author:Hesse +pubDate:[0 TO 20131205])",kc.getFilter(0).toString());
     };
 
+    @Test
+    public void metaQuery3 () {
+	String metaQuery = getString(getClass().getResource("/queries/metaquery4.json").getFile());
+	KorapCollection kc = new KorapCollection(metaQuery);
+	assertEquals(1,kc.getCount());
+	assertEquals("filter with QueryWrapperFilter(+pubDate:[20000101 TO 20131231])",kc.getFilter(0).toString());
+    };
+
 
     public static String getString (String path) {
 	StringBuilder contentBuilder = new StringBuilder();
@@ -47,4 +56,4 @@
 	return contentBuilder.toString();
     };
 
-};
\ No newline at end of file
+};
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
index 7e14b8f..cdb8329 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
@@ -111,13 +111,38 @@
 	assertEquals(5, kr.getItemsPerPage());
 	assertEquals(5, kr.getStartIndex());
 	assertEquals("... a: A ist [der klangreichste] der V ...", kr.getMatch(0).getSnippetBrackets());
+    };
 
-	json = getString(getClass().getResource("/queries/metaquery4.json").getFile());
+    @Test
+    public void searchJSON2 () throws IOException {
 
-	kr = new KorapSearch(json).run(ki);
-	assertEquals(0, kr.getTotalResults());
-	assertEquals(5, kr.getItemsPerPage());
-	assertEquals(5, kr.getStartIndex());
+	// Construct index
+	KorapIndex ki = new KorapIndex();
+	// Indexing test files
+	for (String i : new String[] {"00001", "00002", "00003", "00004", "00005", "00006", "02035-substring", "02439", "05663-unbalanced", "07452-deep"}) {
+	    ki.addDocFile(
+	      getClass().getResource("/wiki/" + i + ".json.gz").getFile(), true
+            );
+	};
+	ki.commit();
+
+	String json = getString(getClass().getResource("/queries/metaquery4.json").getFile());
+
+	KorapSearch ks = new KorapSearch(json);
+	KorapResult kr = ks.run(ki);
+	assertEquals(2, kr.getTotalResults());
+
+	json = getString(getClass().getResource("/queries/metaquery5.json").getFile());
+	ks = new KorapSearch(json);
+	kr = ks.run(ki);
+	assertEquals(2, kr.getTotalResults());
+
+	System.err.println(kr.toJSON());
+
+	json = getString(getClass().getResource("/queries/metaquery6.json").getFile());
+	ks = new KorapSearch(json);
+	kr = ks.run(ki);
+	assertEquals(1, kr.getTotalResults());
     };
 
 
diff --git a/src/test/resources/queries/metaquery2.json b/src/test/resources/queries/metaquery2.json
index c80b044..c1a6eda 100644
--- a/src/test/resources/queries/metaquery2.json
+++ b/src/test/resources/queries/metaquery2.json
@@ -1,89 +1,89 @@
 {
-    "@context": {
-        "korap": "http://korap.ids-mannheim.de/ns/query",
-        "@language": "de",
-        "operands": {
-            "@id": "korap:operands",
-            "@container": "@list"
-        },
-        "relation": {
-            "@id": "korap:relation",
-            "@type": "korap:relation#types"
-        },
-        "class": {
-            "@id": "korap:class",
-            "@type": "xsd:integer"
-        },
-        "query": "korap:query",
-        "filter": "korap:filter",
-        "meta": "korap:meta"
+  "@context": {
+    "korap": "http://korap.ids-mannheim.de/ns/query",
+    "@language": "de",
+    "operands": {
+      "@id": "korap:operands",
+      "@container": "@list"
     },
-    "startPage" : 2,
-    "count" : 5,
-    "context" : {
-      "left" : [ "token", 6 ],
-      "right" : [ "token", 6 ]
+    "relation": {
+      "@id": "korap:relation",
+      "@type": "korap:relation#types"
     },
-   "query":{
-      "@type":"korap:group",
-      "relation":"or",
-      "operands":[
-         {
+    "class": {
+      "@id": "korap:class",
+      "@type": "xsd:integer"
+    },
+    "query": "korap:query",
+    "filter": "korap:filter",
+    "meta": "korap:meta"
+  },
+  "startPage" : 2,
+  "count" : 5,
+  "context" : {
+    "left" : [ "token", 6 ],
+    "right" : [ "token", 6 ]
+  },
+  "query":{
+    "@type":"korap:group",
+    "relation":"or",
+    "operands":[
+      {
+        "@type":"korap:token",
+        "@value":{
+          "@type":"korap:term",
+          "@value":"base:Vokal",
+          "relation":"="
+        }
+      },
+      {
+        "@type":"korap:sequence",
+        "operands":[
+          {
             "@type":"korap:token",
             "@value":{
-               "@type":"korap:term",
-               "@value":"base:Vokal",
-               "relation":"="
+              "@type":"korap:term",
+              "@value":"base:der",
+              "relation":"="
             }
-         },
-         {
-            "@type":"korap:sequence",
-            "operands":[
-               {
-                  "@type":"korap:token",
-                  "@value":{
-                     "@type":"korap:term",
-                     "@value":"base:der",
-                     "relation":"="
-                  }
-               },
-               {
-                  "@type":"korap:token",
-                  "@value":{
-                     "@type":"korap:term",
-                     "@value":"mate/p:ADJD",
-                     "relation":"="
-                  }
-               }
-            ]
-         }
-      ]
-   },
-    "meta": [
-            {
-                "@type": "korap:meta-filter",
-                "@value": {
-                    "@type": "korap:group",
-                    "relation": "and",
-                    "operands": [
-                        {
-                            "@type": "korap:term",
-                            "@field": "korap:field#author",
-                            "@value": "Hesse"
-                        },
-                        {
-                            "@type": "korap:group",
-                            "@field": "korap:field#pubDate",
-                            "relation": "until",
-                            "operands": [
-                                {
-                                    "@type": "korap:date",
-                                    "@value": "2013-12-05"
-                                }
-                            ]
-                        }
-                    ]
-                }
+          },
+          {
+            "@type":"korap:token",
+            "@value":{
+              "@type":"korap:term",
+              "@value":"mate/p:ADJD",
+              "relation":"="
             }
+          }
         ]
-}
\ No newline at end of file
+      }
+    ]
+  },
+  "meta": [
+    {
+      "@type": "korap:meta-filter",
+      "@value": {
+        "@type": "korap:group",
+        "relation": "and",
+        "operands": [
+          {
+            "@type": "korap:term",
+            "@field": "korap:field#author",
+            "@value": "Hesse"
+          },
+          {
+            "@type": "korap:group",
+            "@field": "korap:field#pubDate",
+            "relation": "until",
+            "operands": [
+              {
+                "@type": "korap:date",
+                "@value": "2013-12-05"
+              }
+            ]
+          }
+        ]
+      }
+    }
+  ]
+}
diff --git a/src/test/resources/queries/metaquery4.json b/src/test/resources/queries/metaquery4.json
index 6b82550..33aea67 100644
--- a/src/test/resources/queries/metaquery4.json
+++ b/src/test/resources/queries/metaquery4.json
@@ -1,73 +1,56 @@
 {
-    "@context": {
-        "korap": "http://korap.ids-mannheim.de/ns/query",
-        "@language": "de",
-        "operands": {
-            "@id": "korap:operands",
-            "@container": "@list"
-        },
-        "relation": {
-            "@id": "korap:relation",
-            "@type": "korap:relation#types"
-        },
-        "class": {
-            "@id": "korap:class",
-            "@type": "xsd:integer"
-        },
-        "query": "korap:query",
-        "filter": "korap:filter",
-        "meta": "korap:meta"
+  "@context": {
+    "korap": "http://korap.ids-mannheim.de/ns/query",
+    "@language": "de",
+    "operands": {
+      "@id": "korap:operands",
+      "@container": "@list"
     },
-    "startPage" : 2,
-    "count" : 5,
-    "context" : {
-      "left" : [ "token", 3 ],
-      "right" : [ "char", 6 ]
+    "relation": {
+      "@id": "korap:relation",
+      "@type": "korap:relation#types"
     },
-   "query":{
-      "@type":"korap:group",
-      "relation":"or",
-      "operands":[
-         {
-            "@type":"korap:token",
-            "@value":{
-               "@type":"korap:term",
-               "@value":"base:Vokal",
-               "relation":"="
-            }
-         },
-         {
-            "@type":"korap:sequence",
-            "operands":[
-               {
-                  "@type":"korap:token",
-                  "@value":{
-                     "@type":"korap:term",
-                     "@value":"base:der",
-                     "relation":"="
-                  }
-               },
-               {
-                  "@type":"korap:token",
-                  "@value":{
-                     "@type":"korap:term",
-                     "@value":"mate/p:ADJA",
-                     "relation":"="
-                  }
-               }
-            ]
-         }
-      ]
-   },
-    "meta": [
-        {
-            "@type": "korap:meta-filter",
-            "@id": "korap-filter#id-1223232",
-            "@value": {
-                "@type": "korap:term",
-                "@field": "korap:field#textClass",
-                "@value": "baum"
-            }
-        }
-    ]
-}
\ No newline at end of file
+    "class": {
+      "@id": "korap:class",
+      "@type": "xsd:integer"
+    },
+    "query": "korap:query",
+    "filter": "korap:filter",
+    "meta": "korap:meta"
+    },
+  "startPage" : 1,
+  "count" : 5,
+  "context" : {
+    "left" : [ "token", 3 ],
+    "right" : [ "char", 6 ]
+  },
+  "query":{
+    "@type":"korap:token",
+    "@value":{
+      "@type":"korap:term",
+      "@value":"base:lediglich",
+      "relation":"="
+    }
+  },
+  "meta": [
+    {
+      "@type": "korap:meta-filter",
+      "@id": "korap-filter#id-1223232",
+      "@value": {
+        "@type": "korap:group",
+        "relation": "between",
+        "@field": "korap:field#pubDate",
+        "operands": [
+          {
+            "@type": "korap:date",
+            "@value": "2000-01-01"
+          },
+          {
+            "@type": "korap:date",
+            "@value": "2013-12-31"
+          }
+        ]
+      }
+    }
+  ]
+}
diff --git a/src/test/resources/queries/metaquery5.json b/src/test/resources/queries/metaquery5.json
new file mode 100644
index 0000000..5a0cf20
--- /dev/null
+++ b/src/test/resources/queries/metaquery5.json
@@ -0,0 +1,62 @@
+{
+  "@context": {
+    "korap": "http://korap.ids-mannheim.de/ns/query",
+    "@language": "de",
+    "operands": {
+      "@id": "korap:operands",
+      "@container": "@list"
+    },
+    "relation": {
+      "@id": "korap:relation",
+      "@type": "korap:relation#types"
+    },
+    "class": {
+      "@id": "korap:class",
+      "@type": "xsd:integer"
+    },
+    "query": "korap:query",
+    "filter": "korap:filter",
+    "meta": "korap:meta"
+    },
+  "startPage" : 1,
+  "count" : 5,
+  "context" : {
+    "left" : [ "token", 3 ],
+    "right" : [ "char", 6 ]
+  },
+  "query":{
+    "@type":"korap:token",
+    "@value":{
+      "@type":"korap:term",
+      "@value":"base:lediglich",
+      "relation":"="
+    }
+  },
+  "meta": [
+    {
+      "@type": "korap:meta-filter",
+      "@id": "korap-filter#id-1223232",
+      "@value": {
+	"@type": "korap:group",
+	"relation": "and",
+	"operands": [
+	  {
+            "@type": "korap:group",
+            "relation": "between",
+            "@field": "korap:field#pubDate",
+            "operands": [
+              {
+		"@type": "korap:date",
+		"@value": "2000-01-01"
+              },
+              {
+		"@type": "korap:date",
+		"@value": "2013-12-31"
+              }
+            ]
+	  }
+	]
+      }
+    }
+  ]
+}
diff --git a/src/test/resources/queries/metaquery6.json b/src/test/resources/queries/metaquery6.json
new file mode 100644
index 0000000..5b80cf6
--- /dev/null
+++ b/src/test/resources/queries/metaquery6.json
@@ -0,0 +1,62 @@
+{
+  "@context": {
+    "korap": "http://korap.ids-mannheim.de/ns/query",
+    "@language": "de",
+    "operands": {
+      "@id": "korap:operands",
+      "@container": "@list"
+    },
+    "relation": {
+      "@id": "korap:relation",
+      "@type": "korap:relation#types"
+    },
+    "class": {
+      "@id": "korap:class",
+      "@type": "xsd:integer"
+    },
+    "query": "korap:query",
+    "filter": "korap:filter",
+    "meta": "korap:meta"
+    },
+  "startPage" : 1,
+  "count" : 5,
+  "context" : {
+    "left" : [ "token", 3 ],
+    "right" : [ "char", 6 ]
+  },
+  "query":{
+    "@type":"korap:token",
+    "@value":{
+      "@type":"korap:term",
+      "@value":"base:lediglich",
+      "relation":"="
+    }
+  },
+  "meta": [
+    {
+      "@type": "korap:meta-filter",
+      "@id": "korap-filter#id-1223232",
+      "@value": {
+	"@type": "korap:group",
+	"relation": "and",
+	"operands": [
+	  {
+            "@type": "korap:group",
+            "relation": "between",
+            "@field": "korap:field#pubDate",
+            "operands": [
+              {
+		"@type": "korap:date",
+		"@value": "2005-01-01"
+              },
+              {
+		"@type": "korap:date",
+		"@value": "2013-12-31"
+              }
+            ]
+	  }
+	]
+      }
+    }
+  ]
+}
diff --git a/src/test/resources/wiki/readme.txt b/src/test/resources/wiki/readme.txt
index 6f60d05..b0a98ed 100644
--- a/src/test/resources/wiki/readme.txt
+++ b/src/test/resources/wiki/readme.txt
@@ -1,7 +1,10 @@
-00001: freizeit-unterhaltung,reisen,wissenschaft,populaerwissenschaft
-00002: freizeit-unterhaltung,reisen
-00003: kultur,musik
-00004: wissenschaft,populaerwissenschaft
-00005: freizeit-unterhaltung,reisen
-00006: freizeit-unterhaltung,reisen (WPD)
-02439: kultur,musik,freizeit-unterhaltung,reisen (WPD)
+00001: 20050328 - freizeit-unterhaltung,reisen,wissenschaft,populaerwissenschaft
+00002: 20050328 - freizeit-unterhaltung,reisen
+00003: 20050328 - kultur,musik
+00004: 20050328 - wissenschaft,populaerwissenschaft
+00005: 20050328 - freizeit-unterhaltung,reisen
+00006: 20050328 - freizeit-unterhaltung,reisen (WPD)
+02035: 20000111 - sport ballsport
+02439: 20050328 - kultur,musik,freizeit-unterhaltung,reisen (WPD)
+05663: 20000124 - gesundheit-ernaehrung gesundheit
+07452: 20000129 - politik kommunalpolitik
