diff --git a/pom.xml b/pom.xml
index cb00dee..5ca6b15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,11 +24,6 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
 				<version>2.22.2</version>
-				<configuration>
-					<excludes>
-						<exclude>de/ids_mannheim/korap/test/*.java</exclude>
-					</excludes>
-				</configuration>
 			</plugin>
 		</plugins>
 	</build>
@@ -36,7 +31,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<jersey.version>1.19.4</jersey.version>
-    <slf4j.version>1.7.30</slf4j.version>
+    	<slf4j.version>1.7.30</slf4j.version>
 	</properties>
 
 	<dependencies>
@@ -61,12 +56,12 @@
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpclient</artifactId>
-			<version>4.5.9</version>
+			<version>4.5.13</version>
 		</dependency>
 		<dependency>
 			<groupId>com.fasterxml.jackson.core</groupId>
 			<artifactId>jackson-databind</artifactId>
-			<version>2.11.3</version>
+			<version>2.12.2</version>
 		</dependency>
 		<dependency>
 			<groupId>org.slf4j</groupId>
diff --git a/src/test/java/de/ids_mannheim/korap/test/BaseTest.java b/src/test/java/de/ids_mannheim/korap/test/BaseTest.java
index 27c0a63..560a11e 100644
--- a/src/test/java/de/ids_mannheim/korap/test/BaseTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/BaseTest.java
@@ -44,36 +44,51 @@
         mockServer.stop();
     }
 
+    protected void createRetrieveResource () throws IOException {
+        String korapResources = IOUtils.toString(
+                ClassLoader.getSystemResourceAsStream(
+                        "korap-api-responses/resources.json"),
+                StandardCharsets.UTF_8);
+
+        mockClient.reset()
+                .when(request().withMethod("GET").withPath("/resource"))
+                .respond(response()
+                        .withHeader(new Header("Content-Type",
+                                "application/json; charset=utf-8"))
+                        .withBody(korapResources).withStatusCode(200));
+    }
+
     protected void createExpectationForSearch (String query,
+            String queryLanguage, String version, String offset,
             String jsonFilename) throws IOException {
         String searchResult = IOUtils.toString(
                 ClassLoader.getSystemResourceAsStream(
-                        "korap-api-responses/"+jsonFilename),
+                        "korap-api-responses/" + jsonFilename),
                 StandardCharsets.UTF_8);
 
         mockClient.reset()
                 .when(request().withMethod("GET").withPath("/search")
                         .withQueryStringParameter("q", query)
-                        .withQueryStringParameter("ql", "fcsql")
-                        .withQueryStringParameter("v", "2.0")
+                        .withQueryStringParameter("ql", queryLanguage)
+                        .withQueryStringParameter("v", version)
                         .withQueryStringParameter("context", "sentence")
                         .withQueryStringParameter("count", "1")
-                        .withQueryStringParameter("offset", "0"))
+                        .withQueryStringParameter("offset", offset))
                 .respond(response()
                         .withHeader(new Header("Content-Type",
                                 "application/json; charset=utf-8"))
                         .withBody(searchResult).withStatusCode(200));
     }
 
-    protected void createExpectationForMatchInfoLemmaBar () throws IOException {
+    protected void createExpectationForMatchInfo (String jsonFilename,
+            String uriPath) throws IOException {
         String matchInfoResult = IOUtils.toString(
                 ClassLoader.getSystemResourceAsStream(
-                        "korap-api-responses/GOE-AGA-01784-p614-615.jsonld"),
+                        "korap-api-responses/" + jsonFilename),
                 StandardCharsets.UTF_8);
 
         mockClient
-                .when(request().withMethod("GET")
-                        .withPath("/corpus/GOE/AGA/01784/p614-615/matchInfo")
+                .when(request().withMethod("GET").withPath(uriPath)
                         .withQueryStringParameter("foundry", "*")
                         .withQueryStringParameter("spans", "false"))
                 .respond(response()
@@ -82,26 +97,51 @@
                         .withBody(matchInfoResult).withStatusCode(200));
     }
 
+    protected Document checkSearchRetrieveResponseSRUVersion1_2 (InputStream entity)
+            throws SAXException, IOException, ParserConfigurationException {
 
-    protected void createExpectationForMatchInfoLemmaFein ()
-            throws IOException {
-        String matchInfoResult = IOUtils.toString(
-                ClassLoader.getSystemResourceAsStream(
-                        "korap-api-responses/GOE-AGF-00000-p4276-4277.jsonld"),
-                StandardCharsets.UTF_8);
+        docBuilder = factory.newDocumentBuilder();
+        Document doc = docBuilder.parse(entity);
 
-        mockClient
-                .when(request().withMethod("GET")
-                        .withPath("/corpus/GOE/AGF/00000/p4276-4277/matchInfo")
-                        .withQueryStringParameter("foundry", "*")
-                        .withQueryStringParameter("spans", "false"))
-                .respond(response()
-                        .withHeader(new Header("Content-Type",
-                                "application/json; charset=utf-8"))
-                        .withBody(matchInfoResult).withStatusCode(200));
+        NodeList nodelist = doc.getElementsByTagName("sru:version");
+        assertEquals("1.2", nodelist.item(0).getTextContent());
+        nodelist = doc.getElementsByTagName("sru:recordSchema");
+        assertEquals("http://clarin.eu/fcs/resource",
+                nodelist.item(0).getTextContent());
+
+        NodeList resources = doc.getElementsByTagName("fcs:Resource");
+        String attr = resources.item(0).getAttributes().getNamedItem("pid")
+                .getNodeValue();
+
+        nodelist = doc.getElementsByTagName("fcs:DataView");
+        attr = nodelist.item(0).getAttributes().getNamedItem("type")
+                .getNodeValue();
+        assertEquals("application/x-clarin-fcs-hits+xml", attr);
+
+        Node node = nodelist.item(0).getFirstChild();
+        assertEquals("hits:Result", node.getNodeName());
+        NodeList children = node.getChildNodes();
+        if (children.getLength() > 1) {
+            assertEquals("hits:Hit", children.item(1).getNodeName());
+        }
+
+        attr = nodelist.item(1).getAttributes().getNamedItem("type")
+                .getNodeValue();
+        assertEquals("application/x-clarin-fcs-adv+xml", attr);
+        node = nodelist.item(1).getFirstChild();
+        assertEquals("adv:Advanced", node.getNodeName());
+
+        nodelist = node.getChildNodes();
+        node = nodelist.item(0);
+        assertEquals("adv:Segments", node.getNodeName());
+        node = nodelist.item(1);
+        assertEquals("adv:Layers", node.getNodeName());
+
+        checkSegmentPosition(resources);
+        return doc;
     }
-
-    protected Document checkSRUSearchRetrieveResponse (InputStream entity)
+    
+    protected Document checkSearchRetrieveResponseSRUVersion2 (InputStream entity)
             throws SAXException, IOException, ParserConfigurationException {
 
         docBuilder = factory.newDocumentBuilder();
diff --git a/src/test/java/de/ids_mannheim/korap/test/FCSQLRequestTest.java b/src/test/java/de/ids_mannheim/korap/test/FCSQLRequestTest.java
index e4d9349..f0b9d49 100644
--- a/src/test/java/de/ids_mannheim/korap/test/FCSQLRequestTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/FCSQLRequestTest.java
@@ -39,9 +39,10 @@
     public void testLemmaRegex () throws URISyntaxException, IOException,
             SAXException, ParserConfigurationException {
 
-        createExpectationForSearch("[tt:lemma=\".*bar\"]",
+        createExpectationForSearch("[tt:lemma=\".*bar\"]", "fcsql", "2.0", "0",
                 "search-lemma-bar.jsonld");
-        createExpectationForMatchInfoLemmaBar();
+        createExpectationForMatchInfo("GOE-AGA-01784-p614-615.jsonld",
+                "/corpus/GOE/AGA/01784/p614-615/matchInfo");
 
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
@@ -50,7 +51,7 @@
                 .queryParam("maximumRecords", "1").get(ClientResponse.class);
 
         InputStream entity = response.getEntity(InputStream.class);
-        Document doc = checkSRUSearchRetrieveResponse(entity);
+        Document doc = checkSearchRetrieveResponseSRUVersion2(entity);
 
         NodeList nodeList =
                 doc.getElementsByTagName("sruResponse:numberOfRecords");
@@ -63,7 +64,8 @@
     public void testUnsupportedLayer () throws URISyntaxException, IOException,
             SAXException, ParserConfigurationException {
 
-        createExpectationForSearch("[unknown=\"fein\"]", "unknownLayer.jsonld");
+        createExpectationForSearch("[unknown=\"fein\"]", "fcsql", "2.0", "0",
+                "unknownLayer.jsonld");
 
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
@@ -83,8 +85,8 @@
     @Test
     public void testUnsupportedQualifer () throws URISyntaxException,
             IOException, SAXException, ParserConfigurationException {
-        createExpectationForSearch("[unknown:lemma=\"fein\"]",
-                "unknownQualifier.jsonld");
+        createExpectationForSearch("[unknown:lemma=\"fein\"]", "fcsql", "2.0",
+                "0", "unknownQualifier.jsonld");
 
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
diff --git a/src/test/java/de/ids_mannheim/korap/test/KorapClientTest.java b/src/test/java/de/ids_mannheim/korap/test/KorapClientTest.java
index 341f91d..30b5ec3 100644
--- a/src/test/java/de/ids_mannheim/korap/test/KorapClientTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/KorapClientTest.java
@@ -14,79 +14,99 @@
 import de.ids_mannheim.korap.sru.KorapResult;
 import de.ids_mannheim.korap.sru.QueryLanguage;
 
-
 /**
  * The tests are based on the sample corpus from the Goethe corpus.
  * 
  * @author margaretha
  *
  */
-public class KorapClientTest {
+public class KorapClientTest extends BaseTest {
     private KorapClient c;
     private KorapResult result;
     private KorapMatch match;
-    
+
     public KorapClientTest () {
-        c = new KorapClient("http://localhost:1080/api/v1.0", 25, 50);
+        c = new KorapClient("http://localhost:1080", 25, 50);
     }
 
     @Test
     public void testCQLQuery () throws HttpResponseException, IOException {
-        
-        
-        result = c.query("der", QueryLanguage.CQL, "1.2", 1, 1,
-                null);
+
+        createExpectationForSearch("der", "cql", "1.2", "50",
+                "search-der.jsonld");
+
+        result = c.query("der", QueryLanguage.CQL, "1.2", 51, 1, null);
         assertEquals(1, result.getMatchSize());
         assertEquals(1858, result.getTotalResults());
-    
+
         match = result.getMatch(0);
-        assertEquals("match-GOE/AGA/01784-p18-19",match.getMatchId());
-        
+        assertEquals("match-GOE/AGA/01784-p1856-1857", match.getMatchId());
+
         match.parseMatchId();
         assertEquals("GOE", match.getCorpusId());
         assertEquals("AGA", match.getDocId());
-        assertEquals("p18-19", match.getPositionId());
-        
+        assertEquals("p1856-1857", match.getPositionId());
+
     }
 
     @Test
-    public void testFCS2Query() throws HttpResponseException, IOException {
-    	result = c.query("(\"blaue\"|\"grüne\")", QueryLanguage.FCSQL, "2.0", 1,
-                25, null);
-    	
-    	assertEquals(25, result.getMatchSize());
+    public void testOrQuery () throws HttpResponseException, IOException {
+
+        createExpectationForSearch("(\"blaue\"|\"grüne\")", "fcsql", "2.0", "0",
+                "search-or.jsonld");
+
+        createExpectationForMatchInfo("GOE-AGF-00000-p7744-7745.jsonld",
+                "/corpus/GOE/AGF/00000/p7744-7745/matchInfo");
+
+        result = c.query("(\"blaue\"|\"grüne\")", QueryLanguage.FCSQL, "2.0", 1,
+                1, null);
+
+        assertEquals(1, result.getMatchSize());
         assertEquals(55, result.getTotalResults());
 
         match = result.getMatch(0);
-        assertEquals("match-GOE/AGF/00000-p7744-7745",match.getMatchId());
-        
+        assertEquals("match-GOE/AGF/00000-p7744-7745", match.getMatchId());
+
         match.parseMatchId();
         assertEquals("GOE", match.getCorpusId());
         assertEquals("AGF", match.getDocId());
         assertEquals("p7744-7745", match.getPositionId());
-	}
-    
+    }
+
     @Test
-    public void testRetrieveAnnotations() throws IOException, URISyntaxException {
-    	String annotationSnippet = c.retrieveAnnotations(
-    			"GOE", "AGF", "00000",
-    			"p7667-7668", "*");
-    	
-    	assertEquals(true, annotationSnippet.startsWith("<snippet><span class="
-    			+ "\"context-left\"></span><span class=\"match\"><span title="));
-	}
-    
+    public void testRetrieveAnnotations ()
+            throws IOException, URISyntaxException {
+        createExpectationForMatchInfo("GOE-AGF-00000-p4276-4277.jsonld",
+                "/corpus/GOE/AGF/00000/p4276-4277/matchInfo");
+
+        String annotationSnippet =
+                c.retrieveAnnotations("GOE", "AGF", "00000", "p4276-4277", "*");
+
+        assertEquals(
+                "<snippet><span class=\"context-left\"><span class=\"more\">"
+                        + "</span></span><span class=\"match\"><mark>feineren</mark>"
+                        + "</span><span class=\"context-right\"><span class=\"more\">"
+                        + "</span></span></snippet>",
+                annotationSnippet);
+    }
+
     @Test
-    public void testRetrieveNonexistingAnnotation() throws IOException, URISyntaxException {
-    	String annotationSnippet = c.retrieveAnnotations(
-    			"WPD15", "D18", "06488",
-    			"p588-589", "*");
-    	
-    	assertEquals("<snippet></snippet>", annotationSnippet);
-	}
-    
+    public void testRetrieveNonexistingAnnotation ()
+            throws IOException, URISyntaxException {
+
+        createExpectationForMatchInfo("unknownMatchInfo.jsonld",
+                "/corpus/WPD15/D18/06488/p588-589/matchInfo");
+
+        String annotationSnippet =
+                c.retrieveAnnotations("WPD15", "D18", "06488", "p588-589", "*");
+
+        assertEquals("<snippet></snippet>", annotationSnippet);
+    }
+
     @Test
-    public void testRetrieveResource () throws HttpResponseException, Exception {
+    public void testRetrieveResource ()
+            throws HttpResponseException, Exception {
+        createRetrieveResource();
         KorapResource[] resources = c.retrieveResources();
         assertEquals(3, resources.length);
         assertEquals("WPD17", resources[0].getResourceId());
diff --git a/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java b/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
index 7928982..ef6511a 100644
--- a/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
@@ -44,7 +44,7 @@
                 .when(request().withMethod("GET").withPath("/search")
                         .withQueryStringParameter("q", "fein")
                         .withQueryStringParameter("ql", "cql")
-                        .withQueryStringParameter("v", "2.0")
+                        .withQueryStringParameter("v", "1.2")
                         .withQueryStringParameter("context", "sentence")
                         .withQueryStringParameter("count", "25")
                         .withQueryStringParameter("offset", "0"))
@@ -113,10 +113,11 @@
 
         ClientResponse response =
                 resource().queryParam("operation", "searchRetrieve")
+                        .queryParam("version", "1.2")
                         .queryParam("query", "fein").get(ClientResponse.class);
 
         InputStream entity = response.getEntity(InputStream.class);
-        checkSRUSearchRetrieveResponse(entity);
+        checkSearchRetrieveResponseSRUVersion1_2(entity);
     }
 
     @Test
@@ -128,20 +129,21 @@
 
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
-                .queryParam("query", "fein").queryParam("x-fcs-context", "GOE")
-                .get(ClientResponse.class);
+                .queryParam("query", "fein").queryParam("version", "1.2")
+                .queryParam("x-fcs-context", "GOE").get(ClientResponse.class);
 
         InputStream entity = response.getEntity(InputStream.class);
-        checkSRUSearchRetrieveResponse(entity);
+        checkSearchRetrieveResponseSRUVersion1_2(entity);
     }
 
     @Test
     public void searchRetrieveFCSQLTest ()
             throws IOException, SAXException, ParserConfigurationException {
 
-        createExpectationForSearch("[tt:lemma=\"fein\"]",
+        createExpectationForSearch("[tt:lemma=\"fein\"]", "fcsql", "2.0", "0",
                 "search-lemma-fein.jsonld");
-        createExpectationForMatchInfoLemmaFein();
+        createExpectationForMatchInfo("GOE-AGF-00000-p4276-4277.jsonld",
+                "/corpus/GOE/AGF/00000/p4276-4277/matchInfo");
 
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
@@ -150,7 +152,7 @@
                 .queryParam("maximumRecords", "1").get(ClientResponse.class);
 
         InputStream entity = response.getEntity(InputStream.class);
-        checkSRUSearchRetrieveResponse(entity);
+        checkSearchRetrieveResponseSRUVersion2(entity);
     }
 
     @Test
@@ -166,7 +168,7 @@
                 .when(request().withMethod("GET").withPath("/search")
                         .withQueryStringParameter("q", "der")
                         .withQueryStringParameter("ql", "cql")
-                        .withQueryStringParameter("v", "2.0")
+                        .withQueryStringParameter("v", "1.2")
                         .withQueryStringParameter("context", "sentence")
                         .withQueryStringParameter("count", "1")
                         .withQueryStringParameter("offset", "50"))
@@ -193,12 +195,13 @@
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
                 .queryParam("query", "der").queryParam("startRecord", "51")
-                .queryParam("maximumRecords", "1").get(ClientResponse.class);
+                .queryParam("version", "1.2").queryParam("maximumRecords", "1")
+                .get(ClientResponse.class);
         InputStream entity = response.getEntity(InputStream.class);
         Document doc = docBuilder.parse(entity);
 
         NodeList nodelist =
-                doc.getElementsByTagName("sruResponse:recordPosition");
+                doc.getElementsByTagName("sru:recordPosition");
         assertEquals("51", nodelist.item(0).getTextContent());
     }
 
@@ -276,17 +279,7 @@
             throws URISyntaxException, ClientProtocolException, IOException,
             IllegalStateException, SAXException {
 
-        String korapResources = IOUtils.toString(
-                ClassLoader.getSystemResourceAsStream(
-                        "korap-api-responses/resources.json"),
-                StandardCharsets.UTF_8);
-
-        mockClient.reset()
-                .when(request().withMethod("GET").withPath("/resource"))
-                .respond(response()
-                        .withHeader(new Header("Content-Type",
-                                "application/json; charset=utf-8"))
-                        .withBody(korapResources).withStatusCode(200));
+        createRetrieveResource();
 
         ClientResponse response = resource().queryParam("operation", "explain")
                 .queryParam("x-fcs-endpoint-description", "true")
diff --git a/src/test/java/de/ids_mannheim/korap/test/RedirectTest.java b/src/test/java/de/ids_mannheim/korap/test/RedirectTest.java
index 35df809..cda0c2f 100644
--- a/src/test/java/de/ids_mannheim/korap/test/RedirectTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/RedirectTest.java
@@ -12,16 +12,12 @@
 
 import org.apache.commons.io.IOUtils;
 import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
 import org.junit.Test;
 import org.mockserver.model.Header;
 import org.xml.sax.SAXException;
 
 import com.sun.jersey.api.client.ClientResponse;
 
-import de.ids_mannheim.korap.util.RedirectStrategy;
-
 /**
  * 
  * @author margaretha
@@ -62,6 +58,9 @@
                                 "application/json; charset=utf-8"))
                         .withBody(searchResult).withStatusCode(200));
 
+        createExpectationForMatchInfo("GOE-AGF-00000-p4276-4277.jsonld",
+                "/corpus/GOE/AGF/00000/p4276-4277/matchInfo");
+
         ClientResponse response = resource()
                 .queryParam("operation", "searchRetrieve")
                 .queryParam("query", "[tt:lemma=\"fein\"]")
@@ -69,6 +68,6 @@
                 .queryParam("maximumRecords", "1").get(ClientResponse.class);
 
         InputStream entity = response.getEntity(InputStream.class);
-        checkSRUSearchRetrieveResponse(entity);
+        checkSearchRetrieveResponseSRUVersion2(entity);
     }
 }
diff --git a/src/test/resources/korap-api-responses/GOE-AGF-00000-p7744-7745.jsonld b/src/test/resources/korap-api-responses/GOE-AGF-00000-p7744-7745.jsonld
new file mode 100644
index 0000000..7571afe
--- /dev/null
+++ b/src/test/resources/korap-api-responses/GOE-AGF-00000-p7744-7745.jsonld
@@ -0,0 +1,26 @@
+{
+    "@context": "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta": {"version": "Krill-0.59.3"},
+    "snippet": "<span class=\"context-left\"><span class=\"more\"><\/span><\/span><span class=\"match\"><mark>grüne<\/mark><\/span><span class=\"context-right\"><span class=\"more\"><\/span><\/span>",
+    "matchID": "match-GOE/AGF/00000-p7744-7745",
+    "textSigle": "GOE/AGF/00000",
+    "subTitle": "Didaktischer Teil",
+    "author": "Goethe, Johann Wolfgang von",
+    "docSigle": "GOE/AGF",
+    "layerInfos": "corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens",
+    "pubPlace": "München",
+    "availability": "CC-BY-SA",
+    "title": "Zur Farbenlehre",
+    "pubDate": "1982",
+    "corpusSigle": "GOE",
+    "context": {
+        "left": [
+            "token",
+            0
+        ],
+        "right": [
+            "token",
+            0
+        ]
+    }
+}
diff --git a/src/test/resources/korap-api-responses/search-or.jsonld b/src/test/resources/korap-api-responses/search-or.jsonld
new file mode 100644
index 0000000..7a794d8
--- /dev/null
+++ b/src/test/resources/korap-api-responses/search-or.jsonld
@@ -0,0 +1,90 @@
+{
+    "@context": "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta": {
+        "count": 1,
+        "startIndex": 0,
+        "timeout": 10000,
+        "context": "base/s:s",
+        "fields": [
+            "ID",
+            "UID",
+            "textSigle",
+            "corpusID",
+            "author",
+            "title",
+            "subTitle",
+            "textClass",
+            "pubPlace",
+            "pubDate",
+            "availability",
+            "layerInfos",
+            "docSigle",
+            "corpusSigle"
+        ],
+        "version": "0.59.3",
+        "benchmark": "23.809748 ms",
+        "totalResults": 55,
+        "serialQuery": "spanOr([SpanMultiTermQueryWrapper(tokens:/s:blaue/), SpanMultiTermQueryWrapper(tokens:/s:grüne/)])",
+        "itemsPerPage": 1
+    },
+    "query": {
+        "@type": "koral:group",
+        "operation": "operation:disjunction",
+        "operands": [
+            {
+                "@type": "koral:token",
+                "wrap": {
+                    "@type": "koral:term",
+                    "key": "blaue",
+                    "foundry": "opennlp",
+                    "layer": "orth",
+                    "type": "type:regex",
+                    "match": "match:eq"
+                }
+            },
+            {
+                "@type": "koral:token",
+                "wrap": {
+                    "@type": "koral:term",
+                    "key": "grüne",
+                    "foundry": "opennlp",
+                    "layer": "orth",
+                    "type": "type:regex",
+                    "match": "match:eq"
+                }
+            }
+        ]
+    },
+    "collection": {
+        "@type": "koral:doc",
+        "match": "match:eq",
+        "type": "type:regex",
+        "value": "CC-BY.*",
+        "key": "availability",
+        "rewrites": [
+            {
+                "@type": "koral:rewrite",
+                "src": "Kustvakt",
+                "operation": "operation:insertion",
+                "scope": "availability(FREE)"
+            }
+        ]
+    },
+    "matches": [
+        {
+            "snippet": "<span class=\"context-left\">die Purpurfarbe, welche die vom Schnee Geblendeten erblicken, gehört hieher so wie die ungemein schöne <\/span><span class=\"match\"><mark>grüne<\/mark><\/span><span class=\"context-right\"> Farbe dunkler Gegenstände, nachdem man auf ein weißes Papier in der Sonne lange hingesehen.<\/span>",
+            "matchID": "match-GOE/AGF/00000-p7744-7745",
+            "UID": 0,
+            "textSigle": "GOE/AGF/00000",
+            "subTitle": "Didaktischer Teil",
+            "author": "Goethe, Johann Wolfgang von",
+            "docSigle": "GOE/AGF",
+            "layerInfos": "corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens",
+            "pubPlace": "München",
+            "availability": "CC-BY-SA",
+            "title": "Zur Farbenlehre",
+            "pubDate": "1982",
+            "corpusSigle": "GOE"
+        }
+    ]
+}
diff --git a/src/test/resources/korap-api-responses/unknownMatchInfo.jsonld b/src/test/resources/korap-api-responses/unknownMatchInfo.jsonld
new file mode 100644
index 0000000..8581882
--- /dev/null
+++ b/src/test/resources/korap-api-responses/unknownMatchInfo.jsonld
@@ -0,0 +1,6 @@
+{
+    "@context": "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta": {"version": "Krill-0.59.3"},
+    "matchID": "match-WPD15/D18/06488-p588-589",
+    "textSigle": "WPD15/D18/06488"
+}
