diff --git a/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java b/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
index bb1923d..7994ef5 100644
--- a/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
+++ b/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
@@ -6,7 +6,6 @@
 import de.ids_mannheim.korap.interfaces.EncryptionIface;
 import de.ids_mannheim.korap.interfaces.EntityHandlerIface;
 import de.ids_mannheim.korap.interfaces.db.AuditingIface;
-import de.ids_mannheim.korap.interfaces.db.ResourceOperationIface;
 import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
 
 /**
@@ -21,8 +20,6 @@
 	
 	public  AuditingIface getAuditingDao();
 
-	public  List<ResourceOperationIface> getResourceDaos();
-
 	public  List<UserDataDbIface> getUserdataDaos();
 
 	public  EncryptionIface getCrypto();
diff --git a/full/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java b/full/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java
deleted file mode 100644
index c19e0dc..0000000
--- a/full/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package de.ids_mannheim.korap.handlers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ids_mannheim.korap.config.BeanConfigTest;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.resources.Document;
-
-/**
- * @author hanl
- * @date 12/11/2015
- */
-@Ignore
-@Deprecated
-public class DocumentDaoTest extends BeanConfigTest {
-
-    @Autowired
-    private DocumentDao dao;
-
-
-    @After
-    public void clear () {
-        dao.truncate();
-    }
-
-
-    @Test
-    public void testSet () throws KustvaktException {
-        Document doc = new Document("BRZ13_APR.00001");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-    }
-
-
-    @Test
-    public void testGet () throws KustvaktException {
-        Document doc = new Document("BRZ13_APR.00002");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-        Document doc1 = dao.findbyId(doc.getPersistentID(), null);
-        assertNotNull(doc1);
-        assertTrue(doc.isDisabled());
-    }
-
-
-    @Test
-    public void testRemove () throws KustvaktException {
-        Document doc = new Document("BRZ13_APR.00003");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-        Document doc1 = dao.findbyId(doc.getPersistentID(), null);
-        assertEquals(1, dao.deleteResource(doc.getPersistentID(), null));
-        doc1 = dao.findbyId(doc.getPersistentID(), null);
-        Assert.assertNull(doc1);
-    }
-
-
-    @Test
-    public void testEmptyFind () throws KustvaktException {
-        List<String> dc = dao.findbyCorpus("WPD", true);
-        assertNotNull(dc);
-        assertEquals("should be empty", 0, dc.size());
-    }
-
-
-    @Test
-    public void testFindText () throws KustvaktException {
-        int length = 10;
-        for (int i = 0; i < length; i++) {
-            Document doc = new Document("WPD_APR.0000" + i);
-            doc.setDisabled(true);
-            dao.storeResource(doc, null);
-        }
-        List<String> dc = dao.findbyCorpus("WPD", true);
-
-        assertNotNull(dc);
-        assertNotSame("should not be empty", 0, dc.size());
-        assertEquals("not all found", length, dc.size());
-    }
-
-
-    @Test
-    public void testFindDocByText () throws KustvaktException {
-        Document doc = new Document("WPD_AAA", "WPD_AAA.02439");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-
-        Document dfind = dao.findbyId(doc.getPersistentID(), null);
-        assertNotNull(dfind);
-        assertEquals(doc.getPersistentID(), dfind.getPersistentID());
-    }
-
-
-    @Test
-    public void testFindDocByPartial () throws KustvaktException {
-        Document doc = new Document("WPD_AAA.02439");
-        doc.setDisabled(true);
-        Document doc1 = new Document("WPD_AAA.02343");
-        dao.storeResource(doc, null);
-        dao.storeResource(doc1, null);
-
-        List<Document> dfind = dao.findbyPartialId(doc.getDocSigle(), null);
-        assertNotNull(dfind);
-        assertNotEquals(0, dfind.size());
-        assertEquals(2, dfind.size());
-        assertEquals(doc.getDocSigle(), dfind.get(0).getDocSigle());
-
-        dfind = dao.findbyPartialId(doc.getCorpus(), null);
-        assertNotNull(dfind);
-        assertNotEquals(0, dfind.size());
-        assertEquals(2, dfind.size());
-        assertEquals(doc.getDocSigle(), dfind.get(0).getDocSigle());
-    }
-
-
-    @Override
-    public void initMethod () throws KustvaktException {
-        dao = new DocumentDao(helper().getContext().getPersistenceClient());
-    }
-}
diff --git a/full/src/test/java/de/ids_mannheim/korap/misc/BeanInjectTest.java b/full/src/test/java/de/ids_mannheim/korap/misc/BeanInjectTest.java
index 155e8be..c5814e4 100644
--- a/full/src/test/java/de/ids_mannheim/korap/misc/BeanInjectTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/misc/BeanInjectTest.java
@@ -9,10 +9,8 @@
 import org.springframework.aop.support.AopUtils;
 
 import de.ids_mannheim.korap.config.BeansFactory;
-import de.ids_mannheim.korap.handlers.DocumentDao;
 import de.ids_mannheim.korap.handlers.UserDetailsDao;
 import de.ids_mannheim.korap.handlers.UserSettingsDao;
-import de.ids_mannheim.korap.resources.Document;
 import de.ids_mannheim.korap.user.UserDetails;
 import de.ids_mannheim.korap.user.UserSettings;
 
@@ -37,17 +35,4 @@
         BeansFactory.closeApplication();
     }
 
-
-    @Test
-    public void testResourceBeans () {
-        BeansFactory.loadClasspathContext("test-config.xml");
-        Collection coll = BeansFactory.getKustvaktContext()
-                .getResourceProviders();
-        assertFalse(coll.isEmpty());
-        Object o = BeansFactory.getTypeFactory().getTypeInterfaceBean(coll,
-                Document.class);
-        assertEquals(DocumentDao.class, AopUtils.getTargetClass(o));
-
-        BeansFactory.closeApplication();
-    }
 }
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java
index 53e28df..32deec8 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java
@@ -1,30 +1,19 @@
 package de.ids_mannheim.korap.resource.rewrite;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 
-import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import com.fasterxml.jackson.databind.JsonNode;
-
 import de.ids_mannheim.korap.config.BeanConfigTest;
 import de.ids_mannheim.korap.config.TestVariables;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.handlers.DocumentDao;
-import de.ids_mannheim.korap.resources.Document;
+import de.ids_mannheim.korap.rewrite.CollectionRewrite;
 import de.ids_mannheim.korap.utils.JsonUtils;
-import net.sf.ehcache.CacheManager;
 
 /**
- * EM: To do: not implemented in the new DB yet
  * @author hanl
  * @date 12/11/2015
  */
-@Ignore
 public class ResultRewriteTest extends BeanConfigTest {
 
     @Override
@@ -32,63 +21,16 @@
 
     }
 
-
-    // otherwise cache will maintain values not relevant for other tests
-    @Before
-    public void before () {
-        CacheManager.getInstance().getCache("documents").removeAll();
-        DocumentDao dao = new DocumentDao(helper().getContext()
-                .getPersistenceClient());
-        dao.truncate();
-    }
-
-
     @Test
     public void testPostRewriteNothingToDo () throws KustvaktException {
         RewriteHandler ha = new RewriteHandler();
         ha.insertBeans(helper().getContext());
         assertEquals("Handler could not be added to rewrite handler instance!",
-                true, ha.add(DocMatchRewrite.class));
+                true, ha.add(CollectionRewrite.class));
 
-        DocumentDao dao = new DocumentDao(helper().getContext()
-                .getPersistenceClient());
-        Document d = dao.findbyId("BRZ13_APR.00014", null);
-        assertNull(d);
         String v = ha.processResult(TestVariables.RESULT, null);
         assertEquals("results do not match",
                 JsonUtils.readTree(TestVariables.RESULT), JsonUtils.readTree(v));
     }
 
-
-    @Test
-    public void testResultRewriteRemoveDoc () throws KustvaktException {
-        DocumentDao dao = new DocumentDao(helper().getContext()
-                .getPersistenceClient());
-
-        Document doc = new Document("WPD_AAA.02439");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-
-        RewriteHandler ha = new RewriteHandler();
-        ha.insertBeans(helper().getContext());
-        assertEquals("Handler could not be added to rewrite handler instance!",
-                true, ha.add(DocMatchRewrite.class));
-
-        JsonNode check = JsonUtils.readTree(TestVariables.RESULT);
-        assertNotNull(check);
-        int check_size = check.at("/matches").size();
-
-        String v = ha.processResult(TestVariables.RESULT, null);
-        JsonNode node = JsonUtils.readTree(v);
-
-        assertNotNull(node);
-        int size = node.at("/matches").size();
-        assertNotEquals("documents were not removed", check_size, size);
-        assertEquals("result does not contain required matches", 22, size);
-
-        dao.deleteResource(doc.getPersistentID(), null);
-        Document d = dao.findbyId(doc.getPersistentID(), null);
-        assertNull("document should not exist anymore!", d);
-    }
-
 }
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteBenchmarkTest.java b/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteBenchmarkTest.java
deleted file mode 100644
index 405bd6b..0000000
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteBenchmarkTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package de.ids_mannheim.korap.resource.rewrite;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.joda.time.DateTime;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.springframework.test.annotation.DirtiesContext;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import de.ids_mannheim.korap.config.BeanConfigTest;
-import de.ids_mannheim.korap.config.TestVariables;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.handlers.DocumentDao;
-import de.ids_mannheim.korap.resources.Document;
-import de.ids_mannheim.korap.utils.JsonUtils;
-import de.ids_mannheim.korap.utils.TimeUtils;
-
-/** EM: DocumentDao is not available anymore.
- * Created by hanl on 30.05.16.
- */
-@Deprecated
-@Ignore
-public class RewriteBenchmarkTest extends BeanConfigTest {
-
-
-    private static int THRESHOLD = 1000;
-
-
-    @Test
-    public void testDocMatchRewriteByTextSigle () throws KustvaktException {
-        DocumentDao dao = new DocumentDao(helper().getContext()
-                .getPersistenceClient());
-
-        int i = 999;
-        for (int j = 100; j < i; j++) {
-            Document doc = new Document("WPD_AAA.02" + j);
-            doc.setDisabled(true);
-            dao.storeResource(doc, null);
-        }
-        RewriteHandler ha = new RewriteHandler();
-        ha.insertBeans(helper().getContext());
-        assertEquals("Handler could not be added to rewrite handler instance!",
-                true, ha.add(DocMatchRewrite.class));
-
-        DateTime now = TimeUtils.getNow();
-        String v = ha.processResult(TestVariables.RESULT, null);
-        long diff = TimeUtils.calcDiff(now, new DateTime());
-        assertTrue(diff < THRESHOLD);
-        JsonNode node = JsonUtils.readTree(v);
-
-        JsonNode check = JsonUtils.readTree(TestVariables.RESULT);
-        assertNotNull(check);
-        int check_size = check.at("/matches").size();
-
-        assertNotNull(node);
-        int size = node.at("/matches").size();
-        assertNotEquals("documents were not removed", check_size, size);
-
-        dao.truncate();
-    }
-
-
-    @Test
-    public void testDocMatchRewriteByDocSigle () throws KustvaktException {
-        DocumentDao dao = new DocumentDao(helper().getContext()
-                .getPersistenceClient());
-
-        Document doc = new Document("WPD_AAA");
-        doc.setDisabled(true);
-        dao.storeResource(doc, null);
-
-        RewriteHandler ha = new RewriteHandler();
-        ha.insertBeans(helper().getContext());
-        assertEquals("Handler could not be added to rewrite handler instance!",
-                true, ha.add(DocMatchRewrite.class));
-
-        DateTime now = TimeUtils.getNow();
-        String v = ha.processResult(TestVariables.RESULT, null);
-        long diff = TimeUtils.calcDiff(now, new DateTime());
-        assertTrue(diff < THRESHOLD);
-        JsonNode node = JsonUtils.readTree(v);
-
-        JsonNode check = JsonUtils.readTree(TestVariables.RESULT);
-        assertNotNull(check);
-        int check_size = check.at("/matches").size();
-
-        assertNotNull(node);
-        int size = node.at("/matches").size();
-        assertNotEquals("documents were not removed", check_size, size);
-        assertEquals(0, size);
-        dao.truncate();
-    }
-
-
-    @Test
-    public void testCollectionRewriteInject () {
-
-    }
-
-
-    @Test
-    public void testCollectionRewriteRemoval () {
-
-    }
-
-
-    @Override
-    public void initMethod () throws KustvaktException {}
-}
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java b/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
index 81430c6..67f74bd 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
@@ -25,7 +25,6 @@
  * @author hanl
  * @date 21/10/2015
  */
-@Ignore
 public class RewriteHandlerTest extends BeanConfigTest {
 
     @Test
@@ -33,7 +32,6 @@
         RewriteHandler handler = new RewriteHandler();
         handler.insertBeans(helper().getContext());
         assertTrue(handler.add(FoundryInject.class));
-        assertTrue(handler.add(DocMatchRewrite.class));
         assertTrue(handler.add(CollectionCleanRewrite.class));
         assertTrue(handler.add(IdWriter.class));
     }
@@ -95,18 +93,18 @@
                 node.at("/query/wrap/operands/1/foundry").asText());
     }
 
-
+ // EM: Fix me usersetting
     @Override
     public void initMethod () throws KustvaktException {
-        helper().setupAccount();
-        UserDataDbIface settingsdao = BeansFactory.getTypeFactory()
-                .getTypeInterfaceBean(
-                        helper().getContext().getUserDataProviders(),
-                        UserSettings.class);
-        assertNotNull(settingsdao);
-        UserSettings s = (UserSettings) settingsdao.get(helper().getUser());
-        s.setField(Attributes.DEFAULT_LEMMA_FOUNDRY, "tt_test");
-        settingsdao.update(s);
+//        helper().setupAccount();
+//        UserDataDbIface settingsdao = BeansFactory.getTypeFactory()
+//                .getTypeInterfaceBean(
+//                        helper().getContext().getUserDataProviders(),
+//                        UserSettings.class);
+//        assertNotNull(settingsdao);
+//        UserSettings s = (UserSettings) settingsdao.get(helper().getUser());
+//        s.setField(Attributes.DEFAULT_LEMMA_FOUNDRY, "tt_test");
+//        settingsdao.update(s);
     }
 
 
diff --git a/full/src/test/resources/test-config.xml b/full/src/test/resources/test-config.xml
index a0bc2ce..00361de 100644
--- a/full/src/test/resources/test-config.xml
+++ b/full/src/test/resources/test-config.xml
@@ -220,10 +220,6 @@
 		<constructor-arg ref="kustvakt_db" />
 	</bean>
 
-	<bean id="document_provider" class="de.ids_mannheim.korap.handlers.DocumentDao">
-		<constructor-arg ref="kustvakt_db" />
-	</bean>
-
 	<bean name="kustvakt_encryption" class="de.ids_mannheim.korap.encryption.KustvaktEncryption">
 		<constructor-arg ref="kustvakt_config" />
 	</bean>
@@ -288,7 +284,6 @@
 
 	<util:list id="kustvakt_resources"
 		value-type="de.ids_mannheim.korap.interfaces.db.ResourceOperationIface">
-		<ref bean="document_provider" />
 	</util:list>
 
 	<!-- specify type for constructor argument -->
