diff --git a/src/test/java/CollectionQueryBuilderTest.java b/src/test/java/CollectionQueryBuilderTest.java
index 38a5ac4..407608d 100644
--- a/src/test/java/CollectionQueryBuilderTest.java
+++ b/src/test/java/CollectionQueryBuilderTest.java
@@ -2,6 +2,7 @@
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
 import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -84,12 +85,19 @@
         c.with("corpusSigle=WPD");
 
         JsonNode node = JsonUtils.readTree(c.toJSON());
-
         assertNotNull(node);
-        assertEquals("koral:doc", node.at("/collection/operands/0/@type")
+        assertEquals("koral:doc", node.at("/collection/operands/1/@type")
                 .asText());
-        assertEquals("WPD", node.at("/collection/operands/0/value").asText());
+        assertEquals("koral:docGroup", node.at("/collection/operands/0/@type")
+                .asText());
         assertEquals(2, node.at("/collection/operands").size());
+        assertEquals(2, node.at("/collection/operands/0/operands").size());
+        assertEquals(2, node.at("/collection/operands/0/operands/0/operands").size());
+
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals("operation:or", node.at("/collection/operands/0/operation").asText());
+        assertEquals("operation:and", node.at("/collection/operands/0/operands/0/operation").asText());
+        assertEquals("WPD", node.at("/collection/operands/1/value").asText());
     }
 
 
@@ -109,13 +117,13 @@
         assertEquals("koral:docGroup", node.at("/collection/operands/1/@type")
                 .asText());
         assertEquals("BRZ13", node
-                .at("/collection/operands/0/operands/0/value").asText());
-        assertEquals("AZPS", node.at("/collection/operands/0/operands/1/value")
+                .at("/collection/operands/1/operands/0/value").asText());
+        assertEquals("AZPS", node.at("/collection/operands/1/operands/1/value")
                 .asText());
         assertEquals("random title",
-                node.at("/collection/operands/1/operands/0/value").asText());
+                node.at("/collection/operands/0/operands/0/value").asText());
         assertEquals("wissenschaft",
-                node.at("/collection/operands/1/operands/1/value").asText());
+                node.at("/collection/operands/0/operands/1/value").asText());
     }
 
 
@@ -137,14 +145,14 @@
         assertEquals("operation:and", res.at("/collection/operation").asText());
         assertEquals("koral:doc", res.at("/collection/operands/0/@type")
                 .asText());
-        assertEquals("freizeit", res.at("/collection/operands/0/value")
+        assertEquals("freizeit", res.at("/collection/operands/1/value")
                 .asText());
-        assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+        assertEquals("textClass", res.at("/collection/operands/1/key").asText());
 
         assertEquals("koral:doc", res.at("/collection/operands/1/@type")
                 .asText());
-        assertEquals("WPD", res.at("/collection/operands/1/value").asText());
-        assertEquals("corpusSigle", res.at("/collection/operands/1/key").asText());
+        assertEquals("WPD", res.at("/collection/operands/0/value").asText());
+        assertEquals("corpusSigle", res.at("/collection/operands/0/key").asText());
 
         // check also that query is still there
         assertEquals("koral:token", res.at("/query/@type").asText());
@@ -166,12 +174,12 @@
         JsonNode base = (JsonNode) c.rebaseCollection();
         assertNotNull(base);
         assertEquals(base.at("/collection/@type").asText(), "koral:docGroup");
-        assertEquals(base.at("/collection/operands/0/@type").asText(),
-                "koral:doc");
-        assertEquals(base.at("/collection/operands/0/value").asText(), "BRZ13");
         assertEquals(base.at("/collection/operands/1/@type").asText(),
+                "koral:doc");
+        assertEquals(base.at("/collection/operands/1/value").asText(), "BRZ13");
+        assertEquals(base.at("/collection/operands/0/@type").asText(),
                 "koral:docGroup");
-        assertEquals(base.at("/collection/operands/1/operands").size(), 2);
+        assertEquals(base.at("/collection/operands/0/operands").size(), 2);
     }
 
     @Test
@@ -201,4 +209,80 @@
 
     }
 
+    @Test
+    public void testAddOROperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.or().with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:or", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    public void testAddANDOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.and().with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    public void testAddDefaultOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.setBaseQuery(check.toJSON());
+        test.with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands/1/operands").size());
+    }
+
+    @Test
+    @Ignore
+    public void testMergeOperator() {
+        String coll = "corpusSigle=WPD";
+        String query = "[base=Haus]";
+        QuerySerializer check = new QuerySerializer();
+        check.setQuery(query, "poliqarp");
+        check.setCollection(coll);
+
+        KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+        b.setBaseQuery(check.toJSON());
+
+        KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+        test.with("textClass=wissenschaft | textClass=politik");
+        JsonNode node = (JsonNode) test.rebaseCollection();
+        node = b.mergeWith(node);
+        assertNotNull(node);
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+        assertEquals("operation:and", node.at("/collection/operation").asText());
+        assertEquals(2, node.at("/collection/operands").size());
+    }
+
 }
diff --git a/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
index 92ef92c..90bcc86 100644
--- a/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
@@ -65,8 +65,6 @@
         s.setQuery("[base=Haus]", "poliqarp");
         String result = processor.process(s.toJSON(), null);
         JsonNode node = JsonUtils.readTree(result);
-
-        System.out.println("REWRITTEN "+ node);
         assertNotNull(node);
         assertFalse(node.at("/query/wrap/foundry").isMissingNode());
         assertEquals(c.getDefault_lemma(), node.at("/query/wrap/foundry")
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/OAuth2HandlerTest.java b/src/test/java/de/ids_mannheim/korap/web/service/OAuth2HandlerTest.java
index 0a55637..d7e33b9 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/OAuth2HandlerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/OAuth2HandlerTest.java
@@ -13,6 +13,8 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import static org.junit.Assert.assertNotNull;
+
 /**
  * @author hanl
  * @date 13/05/2015
@@ -65,7 +67,7 @@
                 .getPersistenceClient());
         handler.authorize(codeInfo, helper().getUser());
         codeInfo = handler.getAuthorization(auth_code);
-        Assert.assertNotNull("client is null!", codeInfo);
+        assertNotNull("client is null!", codeInfo);
     }
 
 
@@ -84,7 +86,7 @@
         handler.addToken(codeInfo.getCode(), t, refresh, 7200);
 
         TokenContext ctx = handler.getContext(t);
-        Assert.assertNotNull("context is null", ctx);
+        assertNotNull("context is null", ctx);
 
         AuthCodeInfo c2 = handler.getAuthorization(codeInfo.getCode());
         Assert.assertNull("clearing authorization failed", c2);
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
index d0a5b96..6a5ab99 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
@@ -189,13 +189,13 @@
     @Test
     public void testGetResources () {
         ClientResponse response = resource().path(getAPIVersion())
-                .path("corpus").get(ClientResponse.class);
+                .path("collection").get(ClientResponse.class);
         assertEquals(response.getStatus(),
                 ClientResponse.Status.OK.getStatusCode());
         String ent = response.getEntity(String.class);
         JsonNode node = JsonUtils.readTree(ent);
         assertNotNull(node);
-        System.out.println("NODE 1 " + node);
+        assertNotEquals(0, node.size());
     }
 
 
