diff --git a/pom.xml b/pom.xml
index f7b05f3..9072dc8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,7 +123,9 @@
 	  install the indexer
 	  $ mvn clean compile assembly:single
 	  Then run e.g.
-	  $ java -jar target/KorAP-lucene-index-0.20-jar-with-dependencies.jar src/test/resources/wiki/
+	  $ java -jar target/KorAP-lucene-index-X.XX-jar-with-dependencies.jar src/test/resources/wiki/
+	  or
+	  $ java -jar target/KorAP-lucene-index-X.XX-jar-with-dependencies.jar /home/ndiewald/Repositories/korap/KorAP-modules/KorAP-lucene-index/sandbox/toindex/A00
 
       -->
       <plugin>
@@ -148,18 +150,16 @@
 	  </execution>
 	</executions>
       </plugin>
-<!--
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.1.3</version>
+        <version>2.16</version>
         <configuration>
-          <test>**/*TestSuite*</test>
-          <useFile>false</useFile>
-          <parallel>methods</parallel>
-          <threadCount>10</threadCount>
+          <excludes>
+            <exclude>**/TestRealIndex.java</exclude>
+	  </excludes>
         </configuration>
       </plugin> 
--->
     </plugins>
   </build>
 </project>
diff --git a/src/main/java/de/ids_mannheim/korap/KorapCollection.java b/src/main/java/de/ids_mannheim/korap/KorapCollection.java
index 97e61d6..422a97a 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapCollection.java
@@ -78,9 +78,10 @@
 	return this.filter;
     };
 
+    // Todo: Create new KorapSearch Object!
 
     public KorapResult search (SpanQuery query) {
-	return this.index.search(this, query, 0, (short) 5, true, (short) 5, true, (short) 5);
+	return this.index.search(this, query, 17, (short) 20, true, (short) 5, true, (short) 5);
     };
 
     public FixedBitSet bits (AtomicReaderContext atomic) throws IOException  {
@@ -100,11 +101,16 @@
 
 	    ArrayList<FilterOperation> filters = (ArrayList<FilterOperation>) this.filter.clone();
 
+	    FilterOperation kcInit = filters.remove(0);
+	    log.trace("FILTER: {}", kcInit);
+
+
 	    // Init vector
-	    DocIdSet docids = filters.remove(0).filter.getDocIdSet(atomic, null);
+	    DocIdSet docids = kcInit.filter.getDocIdSet(atomic, null);
 	    DocIdSetIterator filterIter = docids.iterator();
 
 	    if (filterIter != null) {
+		log.trace("InitFilter has effect");
 		bitset.or(filterIter);
 		noDoc = false;
 	    };
diff --git a/src/main/java/de/ids_mannheim/korap/KorapFilter.java b/src/main/java/de/ids_mannheim/korap/KorapFilter.java
index 843f618..33ebc73 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapFilter.java
@@ -21,22 +21,6 @@
  */
 
 /*
-<request>
-  <query>
-    ...XYZ...
-  </query>
-  <filter>
-    <cond><foundry value="Treetagger" /></cond>
-    <cond><foundry value="MATE" /></cond>
-    <condOr>
-      <cond><textClass value="sports" /></cond>
-      <cond><textClass value="news" /></cond>
-    </condOr>
-    <cond><pubDate till="2009" /></cond>
-    <cond><author regex="Peter .+?" /></cond>
-  </filter>
-</request>
-
 Suche XYZ in allen Documenten in den Foundries "Treetagger" und "MATE", die entweder den Texttyp "sports" oder den Texttyp "news" haben, bis höchsten 2009 publiziert wurden und deren Autor auf den regulären Ausdruck "Peter .+?" matcht.
 
 textClass
diff --git a/src/main/java/de/ids_mannheim/korap/KorapIndex.java b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
index 58d90ca..fc0d31c 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
@@ -477,6 +477,8 @@
 			       short rightContext) {
 
 
+	log.trace("Start search");
+
 	this.termContexts = new HashMap<Term, TermContext>();
 	String foundry = query.getField();
 
@@ -494,8 +496,15 @@
 	fieldsToLoadLocal.add(foundry);
 
 	try {
+	    int i = 0;
+	    long t1 = 0;
+	    long t2 = 0;
+
+	    ArrayList<KorapMatch> atomicMatches = new ArrayList<KorapMatch>(kr.itemsPerPage());
+
 	    for (AtomicReaderContext atomic : this.reader().leaves()) {
 
+		log.trace("NUKULAR!");
 
 		// Use OpenBitSet;
 		Bits bitset = collection.bits(atomic);
@@ -510,11 +519,12 @@
 		// TODO: Get document information from Cache!
 
 		// See: http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html
-		long t1 = System.nanoTime();
+		t1 = System.nanoTime();
 
-		int i = 0;
 		for (; i < kr.itemsPerPage(); i++) {
 
+		    log.trace("Match Nr {}/{}", i, count);
+
 		    if (spans.next() != true) {
 			break;
 		    };
@@ -525,7 +535,8 @@
 		    int localDocID = spans.doc();
 		    int docID = atomic.docBase + localDocID;
 
-		    Document doc = lreader.document(docID, fieldsToLoadLocal);
+		    // Document doc = lreader.document(docID, fieldsToLoadLocal);
+		    Document doc = lreader.document(localDocID, fieldsToLoadLocal);
 		    KorapMatch match = new KorapMatch();
 
 		    match.startPos = spans.start();
@@ -643,6 +654,8 @@
 		    match.setCorpusID(doc.get("corpusID"));
 		    match.setPubDate(doc.get("pubDate"));
 
+		    log.trace("I've got a match in {} of {}", match.getID(), count);
+
 		    // Temporary (later meta fields in term vector)
 		    match.setFoundries(doc.get("foundries"));
 		    match.setTokenization(doc.get("tokenization"));
@@ -650,27 +663,35 @@
 		    match.setPrimaryData(
 		      new KorapPrimaryData(doc.get(foundry))
 		    );
-
+		    atomicMatches.add(match);
 		    kr.add(match);
 		};
 
-		long t2 = System.nanoTime();
+		// Benchmark till now
+		if (i >= kr.itemsPerPage() &&
+		    kr.getBenchmarkSearchResults().length() == 0) {
+		    t2 = System.nanoTime();
+		    kr.setBenchmarkSearchResults(t1, t2);
+		};
 
-		kr.setBenchmarkSearchResults(t1, t2);
-
-		while (spans.next() == true) {
+		while (spans.next()) {
 		    i++;
 		};
 
-		kr.setBenchmarkHitCounter(t2, System.nanoTime());
-
-		kr.setTotalResults(i);
-
-		for (KorapMatch km : kr.getMatches()) {
+		for (KorapMatch km : atomicMatches) {
 		    km.processHighlight(pto);
 		};
+		atomicMatches.clear();
 	    };
 
+	    t1 = System.nanoTime();
+	    kr.setBenchmarkHitCounter(t2, t1);
+	    if (kr.getBenchmarkSearchResults().length() == 0) {
+		kr.setBenchmarkSearchResults(t2, t1);
+	    };
+	    kr.setTotalResults(i);
+
+
 	    // if (spans.isPayloadAvailable()) {
 	    // for (byte[] payload : spans.getPayload()) {
 	    // // retrieve payload for current matching span
diff --git a/src/main/java/de/ids_mannheim/korap/KorapIndexer.java b/src/main/java/de/ids_mannheim/korap/KorapIndexer.java
index d6361fe..cf9355b 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapIndexer.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapIndexer.java
@@ -3,14 +3,29 @@
 import java.io.*;
 import org.apache.lucene.store.MMapDirectory;
 import de.ids_mannheim.korap.KorapIndex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class KorapIndexer {
     KorapIndex index;
+    String indexDir;
     int count;
+    int commitCount;
+
+    private final static Logger log = LoggerFactory.getLogger(KorapIndexer.class);
 
     public KorapIndexer () throws IOException {
-	this.index = new KorapIndex(new MMapDirectory(new File("target/test/")));
+
+        Properties prop = new Properties();
+	FileReader fr = new FileReader(getClass().getResource("/korap.conf").getFile());
+	prop.load(fr);
+
+	this.indexDir = prop.getProperty("lucene.index");
+	String commitCount = prop.getProperty("lucene.index.commit.count", "1000");
+
+	this.index = new KorapIndex(new MMapDirectory(new File(indexDir)));
 	this.count = 0;
+	this.commitCount = Integer.parseInt(commitCount);
     };
 
     public void parse (File dir) {
@@ -25,12 +40,27 @@
 		    System.out.println("fail.");
 		    continue;
 		};
-		System.out.println("done.");
+		System.out.println("done (" + count + ").");
 		this.count++;
+
+		if ((this.count % this.commitCount) == 0)
+		    this.commit();
 	    };
 	};
     };
 
+    public void commit () {
+	System.out.println("-----");
+	System.out.print("  Commit ... ");
+	try {
+	    this.index.commit();
+	}
+	catch (IOException e) {
+	    System.err.println("Unable to commit to index " + this.indexDir);
+	};
+	System.out.println("done.");
+    };
+
     public static void main(String[] args) throws IOException {
 
 	KorapIndexer ki = new KorapIndexer();
@@ -44,10 +74,10 @@
 	    };
 	};
 
-	System.out.println("-----");
-	System.out.print("  Commit ... ");
-	ki.index.commit();
-	System.out.println("done.");
+	// Final commit
+	ki.commit();
+
+	// Finish indexing
 	System.out.println("-----");
 	System.out.println("  Indexed " + ki.count + " files.");
 	System.out.println();
diff --git a/src/main/java/de/ids_mannheim/korap/KorapMatch.java b/src/main/java/de/ids_mannheim/korap/KorapMatch.java
index 6d9bb68..8d56f83 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapMatch.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapMatch.java
@@ -503,7 +503,7 @@
 	// right context
 	if (rightTokenContext) {
 	    endOffsetChar = pto.end(ldid, this.endPos + this.rightContext - 1);
-	    log.trace("For endOffset {} pto returns {}", (this.endPos + this.rightContext - 1), endOffsetChar);
+	    log.trace("For endOffset {} ({}+{}-1) pto returns {}", (this.endPos + this.rightContext - 1), this.endPos, this.rightContext, endOffsetChar);
 	}
 	else {
 	    if (endPosChar == -1) {
@@ -542,7 +542,7 @@
 	    endMore = false;
 	};
 
-	log.trace("Temporary snippet is {}", this.tempSnippet);
+	log.trace("Temporary snippet is \"{}\"", this.tempSnippet);
 
         LinkedList<int[]> spans = new LinkedList<int[]>();
 
diff --git a/src/main/java/de/ids_mannheim/korap/KorapResult.java b/src/main/java/de/ids_mannheim/korap/KorapResult.java
index 0e5184f..22a66bb 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapResult.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapResult.java
@@ -31,6 +31,7 @@
     private String error = null;
 
     // Logger
+    // This is KorapMatch instead of KorapResult!
     private final static Logger log = LoggerFactory.getLogger(KorapMatch.class);
 
     public KorapResult (String query,
diff --git a/src/main/resources/korap.conf b/src/main/resources/korap.conf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/main/resources/korap.conf
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 51e0403..0b4991c 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -1,6 +1,6 @@
 ## logger file can be used with
 
-log4j.rootLogger = DEBUG, stdout
+# log4j.rootLogger = DEBUG, stdout
 
 #log4j.logger.de.ids_mannheim.korap.query.spans.ElementSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.WithinSpans = TRACE, stdout
@@ -9,8 +9,10 @@
 #log4j.logger.de.ids_mannheim.korap.query.spans.KorapTermSpan = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.ClassSpans = TRACE, stdout
 #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.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.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/TestKorapCollection.java b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollection.java
index 2e557b4..ea35a63 100644
--- a/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollection.java
+++ b/src/test/java/de/ids_mannheim/korap/filter/TestKorapCollection.java
@@ -52,6 +52,13 @@
 	assertEquals("Sentences", 75, kc.numberOf("sentences"));
 	assertEquals("Paragraphs", 48, kc.numberOf("paragraphs"));
 
+	kc.filter(kf.and("corpusID", "WPD"));
+
+	assertEquals("Documents", 1, kc.numberOf("documents"));
+	assertEquals("Tokens", 405, kc.numberOf("tokens"));
+	assertEquals("Sentences", 75, kc.numberOf("sentences"));
+	assertEquals("Paragraphs", 48, kc.numberOf("paragraphs"));
+
 	// Create a query
 	KorapQuery kq = new KorapQuery("tokens");
 	SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
@@ -67,7 +74,55 @@
 	assertEquals("Tokens", 1669, kc.numberOf("tokens"));
 	assertEquals("Sentences", 188, kc.numberOf("sentences"));
 	assertEquals("Paragraphs", 130, kc.numberOf("paragraphs"));
-	System.err.println(kr.toJSON());
+	// System.err.println(kr.toJSON());
+    };
+
+
+    @Test
+    public void filterExample2 () throws IOException {
+	
+	// Construct index
+	KorapIndex ki = new KorapIndex();
+	FieldDocument fd;
+	// Indexing test files
+	for (String i : new String[] {"00001", "00002", "00003", "00004", "00005", "00006", "02439"}) {
+	    fd = ki.addDocFile(
+	      getClass().getResource("/wiki/" + i + ".json.gz").getFile(), true
+            );
+	};
+	ki.commit();
+
+	fd = ki.addDocFile(getClass().getResource("/wiki/AUG-55286.json.gz").getFile(), true);
+
+	ki.commit();
+
+	KorapFilter kf = new KorapFilter();
+
+	// Create Virtual collections:
+	KorapCollection kc = new KorapCollection(ki);
+	kc.filter( kf.and("textClass", "reisen").and("textClass", "freizeit-unterhaltung") );
+	assertEquals("Documents", 6, kc.numberOf("documents"));
+	assertEquals("Tokens", 2089, kc.numberOf("tokens"));
+	assertEquals("Sentences", 234, kc.numberOf("sentences"));
+	assertEquals("Paragraphs", 141, kc.numberOf("paragraphs"));
+
+	kc.filter( kf.and("corpusID", "A00") );
+
+	assertEquals("Documents", 1, kc.numberOf("documents"));
+	assertEquals("Tokens", 411, kc.numberOf("tokens"));
+	assertEquals("Sentences", 40, kc.numberOf("sentences"));
+	assertEquals("Paragraphs", 2, kc.numberOf("paragraphs"));
+
+	//	assertEquals("Documents", 1, kc.numberOf("documents"));
+
+	// Create a query
+	KorapQuery kq = new KorapQuery("tokens");
+	SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
+
+	KorapResult kr = kc.search(query);
+
+	assertEquals(87, kr.totalResults());
+	// System.out.println(kr.toJSON());
     };
 };
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
new file mode 100644
index 0000000..f7fcac1
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
@@ -0,0 +1,74 @@
+import java.util.*;
+import java.io.*;
+
+import de.ids_mannheim.korap.KorapIndex;
+import de.ids_mannheim.korap.index.FieldDocument;
+import de.ids_mannheim.korap.KorapCollection;
+import de.ids_mannheim.korap.KorapFilter;
+import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.KorapQuery;
+import org.apache.lucene.store.MMapDirectory;
+import de.ids_mannheim.korap.filter.BooleanFilter;
+import org.apache.lucene.search.spans.SpanQuery;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.junit.Ignore;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class TestRealIndex {
+
+    @Test
+    public void realExample1 () throws IOException {
+
+	// Load configuration file
+	Properties prop = new Properties();
+	FileReader fr = new FileReader(getClass().getResource("/korap.conf").getFile());
+	prop.load(fr);
+
+	// Check if the configuration was loaded fine
+	assertEquals(prop.getProperty("lucene.properties"), "true");
+
+	String indexDir = prop.getProperty("lucene.index");
+
+	// Get the real index
+	KorapIndex ki = new KorapIndex(new MMapDirectory(new File(indexDir)));
+
+	// Create a container for virtual collections:
+	KorapCollection kc = new KorapCollection(ki);
+
+	// Construct filter generator
+	KorapFilter kf = new KorapFilter();
+
+	// The virtual collection consists of all documents that have
+	// the textClasses "reisen" and "freizeit"
+	//	kc.filter( kf.and("textClass", "reisen").and("textClass", "freizeit-unterhaltung") );
+
+	// This is real slow atm - sorry
+	kc.filter(kf.and("textClass", "kultur"));
+	// kc.filter(kf.and("ID", "A00_JAN.02873"));
+
+
+	// Create a query
+	KorapQuery kq = new KorapQuery("tokens");
+
+	SpanQuery query =
+	    kq.within(
+              kq.tag("xip/const:NPA"),
+              kq._(1,
+                kq.seq(
+	          kq._(2, kq.seg("cnx/p:A").with("mate/m:number:sg"))
+                ).append(
+  		  kq.seg("opennlp/p:NN").with("tt/p:NN")
+	        )
+	      )
+            ).toQuery();
+
+
+	KorapResult kr = kc.search(query);
+
+	System.err.println(kr.toJSON());
+    };
+};
\ No newline at end of file
diff --git a/src/test/resources/korap.conf b/src/test/resources/korap.conf
new file mode 100644
index 0000000..555b1a8
--- /dev/null
+++ b/src/test/resources/korap.conf
@@ -0,0 +1,5 @@
+# Lucene Backend properties
+lucene.properties = true
+lucene.index = /home/ndiewald/Repositories/korap/KorAP-modules/KorAP-lucene-index/sandbox/index
+lucene.index.commit.count = 5000
+lucene.index.commit.log = log/korap.commit.log
\ No newline at end of file
diff --git a/src/test/resources/queries/bsp1.json b/src/test/resources/queries/bsp1.json
new file mode 100644
index 0000000..4085309
--- /dev/null
+++ b/src/test/resources/queries/bsp1.json
@@ -0,0 +1,76 @@
+{
+   "@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"
+   },
+   "query":{
+      "@type":"korap:group",
+      "relation":"or",
+      "operands":[
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"base:foo",
+               "relation":"="
+            }
+         },
+         {
+            "@type":"korap:sequence",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:foo",
+                     "relation":"="
+                  }
+               },
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:bar",
+                     "relation":"="
+                  },
+                  "repetition":"*"
+               }
+            ]
+         }
+      ]
+   },
+   "meta":{
+      "@type":"korap:meta",
+      "@value":{
+         "@type":"korap:group",
+         "operands":[
+            {
+               "@type":"korap:term",
+               "@value":"author:Goethe",
+               "relation":"="
+            },
+            {
+               "@type":"korap:term",
+               "@value":"year:1815",
+               "relation":"="
+            }
+         ],
+         "relation":"and"
+      }
+   }
+}
diff --git a/src/test/resources/queries/bsp2.json b/src/test/resources/queries/bsp2.json
new file mode 100644
index 0000000..f97a4fd
--- /dev/null
+++ b/src/test/resources/queries/bsp2.json
@@ -0,0 +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"
+   },
+   "query":{
+      "@type":"korap:sequence",
+      "operands":[
+         {
+            "@type":"korap:group",
+            "relation":"or",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:foo",
+                     "relation":"="
+                  }
+               },
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:bar",
+                     "relation":"="
+                  }
+               }
+            ]
+         },
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"base:foobar",
+               "relation":"="
+            }
+         }
+      ]
+   }
+}
diff --git a/src/test/resources/queries/bsp3.json b/src/test/resources/queries/bsp3.json
new file mode 100644
index 0000000..10a9f21
--- /dev/null
+++ b/src/test/resources/queries/bsp3.json
@@ -0,0 +1,41 @@
+{
+   "@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"
+   },
+   "query":{
+      "@type":"korap:sequence",
+      "shrink":"0",
+      "operands":[
+         {
+            "@type":"korap:group",
+            "class":"0",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:foo",
+                     "relation":"="
+                  }
+               }
+            ]
+         }
+      ]
+   }
+}
diff --git a/src/test/resources/queries/bsp4.json b/src/test/resources/queries/bsp4.json
new file mode 100644
index 0000000..e98afbd
--- /dev/null
+++ b/src/test/resources/queries/bsp4.json
@@ -0,0 +1,49 @@
+{
+   "@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"
+   },
+   "query":{
+      "@type":"korap:sequence",
+      "shrink":"0",
+      "operands":[
+         {
+            "@type":"korap:group",
+            "class":"0",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:foo",
+                     "relation":"="
+                  }
+               }
+            ]
+         },
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"orth:bar",
+               "relation":"="
+            }
+         }
+      ]
+   }
+}
diff --git a/src/test/resources/queries/bsp5.json b/src/test/resources/queries/bsp5.json
new file mode 100644
index 0000000..246df1e
--- /dev/null
+++ b/src/test/resources/queries/bsp5.json
@@ -0,0 +1,49 @@
+{
+   "@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"
+   },
+   "query":{
+      "@type":"korap:sequence",
+      "shrink":"1",
+      "operands":[
+         {
+            "@type":"korap:token",
+            "@value":{
+               "@type":"korap:term",
+               "@value":"base:Der",
+               "relation":"="
+            }
+         },
+         {
+            "@type":"korap:group",
+            "class":"1",
+            "operands":[
+               {
+                  "@type":"korap:token",
+                  "@value":{
+                     "@type":"korap:term",
+                     "@value":"base:Mann",
+                     "relation":"="
+                  }
+               }
+            ]
+         }
+      ]
+   }
+}
diff --git a/src/test/resources/queries/readme.txt b/src/test/resources/queries/readme.txt
new file mode 100644
index 0000000..b82454f
--- /dev/null
+++ b/src/test/resources/queries/readme.txt
@@ -0,0 +1,5 @@
+bsp1.json: [base=foo]|([base=foo][base=bar])* meta author=Goethe&year=1815
+bsp2.json: ([base=foo]|[base=bar])[base=foobar]
+bsp3.json: shrink({[base=Mann]})
+bsp4.json: shrink({[base=foo]}[orth=bar])
+bsp5.json: shrink(1:[base=Der]{1:[base=Mann]}) 
