diff --git a/src/main/java/de/ids_mannheim/korap/config/KustvaktCacheManager.java b/src/main/java/de/ids_mannheim/korap/config/KustvaktCacheManager.java
new file mode 100644
index 0000000..8d826ee
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/config/KustvaktCacheManager.java
@@ -0,0 +1,37 @@
+package de.ids_mannheim.korap.config;
+
+import net.sf.ehcache.CacheManager;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+/**
+ * @author hanl
+ * @date 03/02/2016
+ */
+public class KustvaktCacheManager {
+
+    private static boolean loaded = false;
+
+    public static void init() {
+        if (!loaded) {
+            System.out.println("LOADING EHCACHE CONFIG FROM FILE");
+            InputStream in = null;
+            try {
+                in = new FileInputStream(new File("./ehcache.xml"));
+            }catch (FileNotFoundException e) {
+                e.printStackTrace();
+            }
+
+            if (in == null) {
+                System.out.println("LOADING EHCACHE FROM CLASSPATH");
+                in = KustvaktCacheManager.class
+                        .getResourceAsStream("ehcache.xml");
+            }
+            CacheManager.newInstance(in);
+            loaded = true;
+        }
+    }
+}
diff --git a/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java b/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java
new file mode 100644
index 0000000..603aa53
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/handlers/DocumentDaoTest.java
@@ -0,0 +1,112 @@
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.handlers.DocumentDao;
+import de.ids_mannheim.korap.resources.Document;
+import org.junit.*;
+
+import java.util.List;
+
+/**
+ * @author hanl
+ * @date 12/11/2015
+ */
+public class DocumentDaoTest {
+
+    private static DocumentDao dao;
+
+    @BeforeClass
+    public static void setup() {
+        BeanConfiguration.loadClasspathContext("default-config.xml");
+        dao = new DocumentDao(
+                BeanConfiguration.getBeans().getPersistenceClient());
+    }
+
+    @AfterClass
+    public static void close() {
+        BeanConfiguration.closeApplication();
+    }
+
+    @After
+    public void clear() {
+        try {
+            dao.deleteAll();
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testSet() throws KustvaktException {
+        Document doc = new Document("BRZ13_APR.00001");
+        doc.setDisabled(true);
+        dao.storeResource(doc, null);
+    }
+
+    @Test
+    public void testGet() {
+        Document doc = new Document("BRZ13_APR.00002");
+        doc.setDisabled(true);
+        try {
+            dao.storeResource(doc, null);
+            Document doc1 = dao.findbyId(doc.getPersistentID(), null);
+            assert doc1 != null && doc.isDisabled();
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testRemove() {
+        Document doc = new Document("BRZ13_APR.00003");
+        doc.setDisabled(true);
+        try {
+            dao.storeResource(doc, null);
+            Document doc1 = dao.findbyId(doc.getPersistentID(), null);
+            assert dao.deleteResource(doc.getPersistentID(), null) == 1;
+            doc1 = dao.findbyId(doc.getPersistentID(), null);
+            assert doc1 == null;
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+
+        }
+    }
+
+    @Test
+    public void testEmptyFind() {
+        List<String> dc = null;
+        try {
+            dc = dao.findbyCorpus("WPD", true);
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+        }
+
+        Assert.assertNotNull(dc);
+        Assert.assertEquals("should be empty", 0, dc.size());
+    }
+
+    @Test
+    public void testFind() {
+        int length = 10;
+        for (int i = 0; i < length; i++) {
+            Document doc = new Document("WPD_APR.0000" + i);
+            doc.setDisabled(true);
+            try {
+                dao.storeResource(doc, null);
+            }catch (KustvaktException e) {
+                e.printStackTrace();
+                break;
+            }
+        }
+
+        List<String> dc = null;
+        try {
+            dc = dao.findbyCorpus("WPD", true);
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+        }
+
+        Assert.assertNotNull(dc);
+        Assert.assertNotSame("should not be empty", 0, dc.size());
+        Assert.assertEquals("not all found", length, dc.size());
+    }
+}
diff --git a/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java b/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java
new file mode 100644
index 0000000..0b11863
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java
@@ -0,0 +1,84 @@
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.TestHelper;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.handlers.ResourceDao;
+import de.ids_mannheim.korap.resources.KustvaktResource;
+import de.ids_mannheim.korap.resources.ResourceFactory;
+import de.ids_mannheim.korap.resources.VirtualCollection;
+import de.ids_mannheim.korap.user.User;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author hanl
+ * @date 26/01/2016
+ */
+public class ResourceDaoTest {
+
+    @BeforeClass
+    public static void init() {
+        BeanConfiguration.loadClasspathContext("default-config.xml");
+        TestHelper.setupAccount();
+    }
+
+    @AfterClass
+    public static void drop() {
+//        TestHelper.dropUser();
+        BeanConfiguration.closeApplication();
+    }
+
+    @After
+    public void clear() throws KustvaktException {
+        new ResourceDao<>(BeanConfiguration.getBeans().getPersistenceClient())
+                .deleteAll();
+    }
+
+    @Test
+    public void createCollection() throws KustvaktException {
+        ResourceDao dao = new ResourceDao(
+                BeanConfiguration.getBeans().getPersistenceClient());
+        VirtualCollection c = ResourceFactory.createCollection("testColl", 1);
+        c.addField("key_1", "this is a test");
+        c.addField("key_2", 2);
+
+        User user = User.UserFactory
+                .getUser(TestHelper.getUserCredentials()[0]);
+
+        int id = dao.storeResource(c, user);
+
+        KustvaktResource r = dao.findbyId(id, user);
+        assert dao.size() > 0;
+        assert r != null;
+        assert r.getField("key_1") instanceof String;
+        assert r.getField("key_2") instanceof Integer;
+    }
+
+    @Test
+    public void ResourceDataUpdate() throws KustvaktException {
+        ResourceDao dao = new ResourceDao(
+                BeanConfiguration.getBeans().getPersistenceClient());
+        VirtualCollection c = ResourceFactory.createCollection("testColl", 1);
+        c.addField("key_1", "this is a test");
+        c.addField("key_2", 2);
+
+        User user = User.UserFactory
+                .getUser(TestHelper.getUserCredentials()[0]);
+
+        int id = dao.storeResource(c, user);
+
+        c.setId(id);
+        c.addField("key_3", -1);
+        int row_update = dao.updateResource(c, user);
+        assert row_update > 0;
+
+        KustvaktResource r = dao.findbyId(id, user);
+        assert dao.size() > 0;
+        assert r != null;
+        assert r.getField("key_1") instanceof String;
+        assert r.getField("key_2") instanceof Integer;
+        assert r.getField("key_3") instanceof Integer;
+
+    }
+}
diff --git a/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java b/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java
new file mode 100644
index 0000000..94abd81
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java
@@ -0,0 +1,95 @@
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.TestHelper;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface;
+import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
+import de.ids_mannheim.korap.user.*;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+;
+
+/**
+ * @author hanl
+ * @date 13/02/2015
+ */
+public class UserDaoTest {
+
+    @BeforeClass
+    public static void create() {
+        BeanConfiguration.loadClasspathContext("default-config.xml");
+        TestHelper.setupAccount();
+        TestHelper.runBootInterfaces();
+    }
+
+    @AfterClass
+    public static void close() {
+        assert TestHelper.dropUser();
+        BeanConfiguration.closeApplication();
+    }
+
+    @Test
+    public void userput() throws KustvaktException {
+        User user1 = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount(TestHelper.getUserCredentials()[0]);
+        Assert.assertEquals("user creation failed", true, user1.getId() != -1);
+    }
+
+    @Test
+    public void userget() throws KustvaktException {
+        User user1 = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount(TestHelper.getUserCredentials()[0]);
+        Assert.assertEquals("User Retrieval does not work",
+                TestHelper.getUserCredentials()[0], user1.getUsername());
+    }
+
+    //    @Test
+    public void testUserdetailsGetNonExistent() throws KustvaktException {
+        TestHelper.setupSimpleAccount("userdbtest", "userdbTest");
+        User user = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount("userdbtest");
+        UserDataDbIface dao = UserdataFactory.getDaoInstance(UserDetails.class);
+        Userdata data = dao.get(user);
+        assert data == null;
+        TestHelper.dropUser("userdbtest");
+    }
+
+    //    @Test
+    public void testUserSettingsGetNonExistent() throws KustvaktException {
+        TestHelper.setupSimpleAccount("userdbtest", "userdbTest");
+        User user = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount("userdbtest");
+        UserDataDbIface dao = UserdataFactory
+                .getDaoInstance(UserSettings.class);
+        Userdata data = dao.get(user);
+        assert data == null;
+        TestHelper.dropUser("userdbtest");
+
+    }
+
+    // username cannot currently be changed
+    //    @Test
+    public void updateUsername() throws KustvaktException {
+        User user1 = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount(TestHelper.getUserCredentials()[0]);
+        user1.setUsername("new_user");
+        BeanConfiguration.getBeans().getUserDBHandler().updateAccount(user1);
+        User u2 = BeanConfiguration.getBeans().getUserDBHandler()
+                .getAccount("new_user");
+        Assert.assertEquals("not found", user1.getUsername(), u2.getUsername());
+    }
+
+    @Test
+    public void userupdate() throws KustvaktException {
+        EntityHandlerIface dao = BeanConfiguration.getBeans()
+                .getUserDBHandler();
+        User user1 = dao.getAccount(TestHelper.getUserCredentials()[0]);
+        user1.setAccountLocked(true);
+        dao.updateAccount(user1);
+        Assert.assertEquals("not valid", true,
+                dao.getAccount(user1.getUsername()).isAccountLocked());
+    }
+
+}
diff --git a/src/test/java/CollectionRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
similarity index 100%
rename from src/test/java/CollectionRewriteTest.java
rename to src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
diff --git a/src/test/java/FoundryRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
similarity index 100%
rename from src/test/java/FoundryRewriteTest.java
rename to src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
diff --git a/src/test/java/IdRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/IdRewriteTest.java
similarity index 100%
rename from src/test/java/IdRewriteTest.java
rename to src/test/java/de/ids_mannheim/korap/resource/rewrite/IdRewriteTest.java
diff --git a/src/test/java/de/ids_mannheim/korap/resource/rewrite/PostRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/PostRewriteTest.java
new file mode 100644
index 0000000..2771a06
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/resource/rewrite/PostRewriteTest.java
@@ -0,0 +1,469 @@
+import com.fasterxml.jackson.databind.JsonNode;
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.handlers.DocumentDao;
+import de.ids_mannheim.korap.resource.rewrite.DocMatchRewrite;
+import de.ids_mannheim.korap.resource.rewrite.RewriteHandler;
+import de.ids_mannheim.korap.resources.Document;
+import de.ids_mannheim.korap.utils.JsonUtils;
+import net.sf.ehcache.CacheManager;
+import org.junit.*;
+
+/**
+ * @author hanl
+ * @date 12/11/2015
+ */
+//fixme: tests only work with singleconnection data sources
+public class PostRewriteTest {
+
+    @BeforeClass
+    public static void setup() {
+        BeanConfiguration.loadClasspathContext("default-config.xml");
+    }
+
+    @AfterClass
+    public static void close() {
+        BeanConfiguration.closeApplication();
+    }
+
+    // otherwise cache will maintain values not relevant for other tests
+    @Before
+    public void before() {
+        CacheManager.getInstance().getCache("documents").removeAll();
+    }
+
+    @Test
+    public void testPostRewriteNothingToDo() {
+        RewriteHandler ha = new RewriteHandler(null);
+        Assert.assertEquals("Handler could not be added to rewriter instance!",
+                true, ha.add(DocMatchRewrite.class));
+
+        DocumentDao dao = new DocumentDao(
+                BeanConfiguration.getBeans().getPersistenceClient());
+        try {
+            Document d = dao.findbyId("BRZ13_APR.00014", null);
+            Assert.assertNull(d);
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+        }
+
+        String v = ha.postProcess(RESULT, null);
+        Assert.assertEquals("results do not match", JsonUtils.readTree(RESULT),
+                JsonUtils.readTree(v));
+    }
+
+    @Test
+    public void testPostRewriteRemoveDoc() {
+        DocumentDao dao = new DocumentDao(
+                BeanConfiguration.getBeans().getPersistenceClient());
+
+        Document doc = new Document("BRZ13_APR.00014");
+        doc.setDisabled(true);
+        try {
+            dao.storeResource(doc, null);
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+            return;
+        }
+
+        RewriteHandler ha = new RewriteHandler(null);
+        Assert.assertEquals("Handler could not be added to rewriter instance!",
+                true, ha.add(DocMatchRewrite.class));
+
+        String v = ha.postProcess(RESULT, null);
+
+        JsonNode node = JsonUtils.readTree(v);
+
+        Assert.assertNotEquals("Wrong DocID", "BRZ13_APR.00014",
+                node.at("/matches/1/docID"));
+
+        try {
+            dao.deleteResource(doc.getPersistentID(), null);
+            Document d = dao.findbyId(doc.getPersistentID(), null);
+            if (d != null)
+                System.out.println("IS SUPPOSED TO BE NULL! " + d);
+        }catch (KustvaktException e) {
+            e.printStackTrace();
+            return;
+        }
+
+    }
+
+    @Test
+    public void testPath() {
+        String v = "{\n" + "    \"meta\": {\n" + "        \"count\": 25,\n"
+                + "        \"startIndex\": 0,\n"
+                + "        \"timeout\": 120000,\n" + "        \"context\": {\n"
+                + "            \"left\": [\n" + "                \"token\",\n"
+                + "                6\n" + "            ],\n"
+                + "            \"right\": [\n" + "                \"token\",\n"
+                + "                6\n" + "            ]\n" + "        }}}";
+        JsonNode n = JsonUtils.readTree(v);
+
+    }
+
+    private static final String RESULT =
+            "{\n" + "    \"meta\": {\n" + "        \"count\": 25,\n"
+                    + "        \"startIndex\": 0,\n"
+                    + "        \"timeout\": 120000,\n"
+                    + "        \"context\": {\n" + "            \"left\": [\n"
+                    + "                \"token\",\n" + "                6\n"
+                    + "            ],\n" + "            \"right\": [\n"
+                    + "                \"token\",\n" + "                6\n"
+                    + "            ]\n" + "        },\n"
+                    + "        \"fields\": [\n" + "            \"textSigle\",\n"
+                    + "            \"author\",\n"
+                    + "            \"docSigle\",\n" + "            \"title\",\n"
+                    + "            \"pubDate\",\n" + "            \"UID\",\n"
+                    + "            \"corpusID\",\n"
+                    + "            \"textClass\",\n"
+                    + "            \"subTitle\",\n"
+                    + "            \"layerInfos\",\n" + "            \"ID\",\n"
+                    + "            \"pubPlace\",\n"
+                    + "            \"corpusSigle\"\n" + "        ],\n"
+                    + "        \"version\": \"unknown\",\n"
+                    + "        \"benchmark\": \"0.204314141 s\",\n"
+                    + "        \"totalResults\": 1755,\n"
+                    + "        \"serialQuery\": \"tokens:tt/l:Wort\",\n"
+                    + "        \"itemsPerPage\": 25\n" + "    },\n"
+                    + "    \"query\": {\n"
+                    + "        \"@type\": \"koral:token\",\n"
+                    + "        \"wrap\": {\n"
+                    + "            \"@type\": \"koral:term\",\n"
+                    + "            \"key\": \"Wort\",\n"
+                    + "            \"layer\": \"lemma\",\n"
+                    + "            \"match\": \"match:eq\",\n"
+                    + "            \"foundry\": \"tt\",\n"
+                    + "            \"rewrites\": [\n" + "                {\n"
+                    + "                    \"@type\": \"koral:rewrite\",\n"
+                    + "                    \"src\": \"Kustvakt\",\n"
+                    + "                    \"operation\": \"operation:injection\"\n"
+                    + "                }\n" + "            ]\n" + "        }\n"
+                    + "    },\n" + "    \"matches\": [\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"staat-gesellschaft familie-geschlecht\",\n"
+                    + "            \"title\": \"Sexueller Missbrauch –„Das schreiende Kind steckt noch tief in mir“\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>in ihrer Stimme schwingt bei diesem </span><mark>Wort</mark><span class=\\\"context-right\\\"> Sarkasmus mit. Bis man einen passenden<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00001-p454-455\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00001\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"freizeit-unterhaltung reisen\",\n"
+                    + "            \"title\": \"Leben dick und prall\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>der DLRG, ausgelassene Partys und markige </span><mark>Worte</mark><span class=\\\"context-right\\\"> des Dompredigers: „Ostern ist kein goethischer<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00014-p96-97\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00014\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"staat-gesellschaft biographien-interviews kultur musik\",\n"
+                    + "            \"title\": \"So wird es gemacht:\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>derfehlende Buchstabe.Gelingt es dir,das </span><mark>Wort</mark><span class=\\\"context-right\\\"> vervollständigen? Tipp: Probiere auch mal rückwärts<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00055-p19-20\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00055\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik ausland\",\n"
+                    + "            \"title\": \"Südkorea droht mit Angriffen – USA rüsten auf\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>der Stunde. „Aus einem Krieg der </span><mark>Worte</mark><span class=\\\"context-right\\\"> darf kein echter Krieg werden“, sagte<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00076-p238-239\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00076\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland freizeit-unterhaltung reisen\",\n"
+                    + "            \"title\": \"Dauercamper kämpfen für ihren Platz\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>„Initiative Campingplatz Räbke“. „Als ich das </span><mark>Wort</mark><span class=\\\"context-right\\\"> Schließung gelesen habe, war ich richtig<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00200-p255-256\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00200\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"freizeit-unterhaltung reisen\",\n"
+                    + "            \"title\": \"Neue Aktionen lockten Besucher\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>Jan Waldheim (CWG) unter den aufmunternden </span><mark>Worten</mark><span class=\\\"context-right\\\"> eines augenzwinkernden Axel Schnalke („Ein bisschen<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00210-p142-143\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00210\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"kultur musik\",\n"
+                    + "            \"title\": \"Travestie – Helden in Strumpfhosen\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>trotzdem nicht. Selten wurden so viele </span><mark>Worte</mark><span class=\\\"context-right\\\">, die der Autor hier lieber verschweigt<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00253-p166-167\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00253\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"kultur musik\",\n"
+                    + "            \"title\": \"Travestie – Helden in Strumpfhosen\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>zudem nicht immer nur bei den </span><mark>Worten</mark><span class=\\\"context-right\\\"> geblieben) und dabei gleichzeitig soviel Charme<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00253-p191-192\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00253\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"kultur musik\",\n"
+                    + "            \"title\": \"Travestie – Helden in Strumpfhosen\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>bedeutet Travestie sich zu verkleiden, das </span><mark>Wort</mark><span class=\\\"context-right\\\"> stammt aus dem Französischen. Traditionell belegten<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00253-p371-372\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00253\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"VfL kommt nicht vom Fleck\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>am internationalen Geschäft berechtigt. Mit anderen </span><mark>Worten</mark><span class=\\\"context-right\\\">: Die „Wölfe“ stecken im grauen Mittelmaß<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00260-p93-94\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00260\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"Mensch, Mayer! Super Tor\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>bekommst, ist das unbezahlbar – ein Bonus.“ </span><mark>Worte</mark><span class=\\\"context-right\\\">, die dem Torschützen weiteres Selbstvertrauen geben<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00275-p271-272\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00275\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"Nur Gerücht? KHL-Klub will „Dshuni“\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>und hakt das Thema ab.cb Kein </span><mark>Wort</mark><span class=\\\"context-right\\\"> zum Interesse aus Astana: Daniar Dshunussow.Foto<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00277-p163-164\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00277\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-02\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"staat-gesellschaft biographien-interviews\",\n"
+                    + "            \"title\": \"Das Leben ist nicht auf diese Erde beschränkt\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>1. Korinther 1,18 denken: Denn das </span><mark>Wort</mark><span class=\\\"context-right\\\"> vom Kreuz ist eine Torheit denen<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00520-p32-33\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00520\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-03\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"Allofs und Hecking knöpfensich die VfL-Profis vor\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>für die Profis am Dienstag klare </span><mark>Worte</mark><span class=\\\"context-right\\\"> vom Führungsduo. Von Thorsten Grunow Wolfsburg<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00557-p17-18\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00557\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-03\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"Allofs und Hecking knöpfensich die VfL-Profis vor\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>Minuten setzte es am Dienstagnachmittag klare </span><mark>Worte</mark><span class=\\\"context-right\\\"> für die kickende Belegschaft, die durchaus<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00557-p60-61\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00557\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-03\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"sport fussball\",\n"
+                    + "            \"title\": \"Allofs und Hecking knöpfensich die VfL-Profis vor\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>Manager ist überzeugt, dass die klaren </span><mark>Worte</mark><span class=\\\"context-right\\\"> auf fruchtbaren Boden gefallen sind. „Ich<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_APR.00557-p235-236\",\n"
+                    + "            \"docID\": \"BRZ13_APR.00557\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-04-03\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland politik ausland\",\n"
+                    + "            \"title\": \"Zeitungsartikelzufällig deponiert?\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>erspart“, lautete die Schlagzeile – wobei das </span><mark>Wort</mark><span class=\\\"context-right\\\"> „erspart“ abgeschnitten war. Ein plumper Versuch<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07616-p31-32\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07616\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"„Philipp Rösler wackelt nicht“\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>Vizekanzler bei all dem Jubel zu </span><mark>Wort</mark><span class=\\\"context-right\\\"> kommt. „Ein großartiger Tag“, sagt er<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07617-p177-178\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07617\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"freizeit-unterhaltung reisen\",\n"
+                    + "            \"title\": \"Lanz gibt den charmanten, zurückhaltenden Gastgeber\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>er, als seine Assistentin ihm ins </span><mark>Wort</mark><span class=\\\"context-right\\\"> fiel. Dennoch holte das ungleiche Duo<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07621-p261-262\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07621\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"Mundlos denkt über Rücktritt nach\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>räumte selbst ein, wie sarkastisch diese </span><mark>Worte</mark><span class=\\\"context-right\\\"> nach einer solchen Wahlnacht klingen mussten<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07694-p192-193\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07694\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"BraunschweigGold – Hannover Blech\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>im Volksfreundhaus hört man kein schlechtes </span><mark>Wort</mark><span class=\\\"context-right\\\"> über den Kanzlerkandidaten Peer Steinbrück – und<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07695-p169-170\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07695\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"BraunschweigGold – Hannover Blech\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>Volksfreundhaus merklich steigen. Hier hat das </span><mark>Wort</mark><span class=\\\"context-right\\\"> von der Wahlparty bei Bier, Bockwurst<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07695-p266-267\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07695\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"staat-gesellschaft kirche\",\n"
+                    + "            \"title\": \"Fernsehen überträgt Gottesdienst\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>schon mal von der Sendung „Das </span><mark>Wort</mark><span class=\\\"context-right\\\"> zum Sonntag“ gehört. Das sind Predigten<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07840-p37-38\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07840\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"Wahlkrimi im Ratssaal\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\"><span class=\\\"more\\\"></span>ihre Konkurrentin Glosemeyer hatte sie warme </span><mark>Worte</mark><span class=\\\"context-right\\\"> übrig. „Für den ersten Anlauf eine<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07848-p147-148\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07848\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        },\n" + "        {\n"
+                    + "            \"field\": \"tokens\",\n"
+                    + "            \"textClass\": \"politik inland\",\n"
+                    + "            \"title\": \"Warme Worte nach eiskaltem Wahlkampf\",\n"
+                    + "            \"author\": \"\",\n"
+                    + "            \"startMore\": true,\n"
+                    + "            \"endMore\": true,\n"
+                    + "            \"corpusID\": \"BRZ13\",\n"
+                    + "            \"snippet\": \"<span class=\\\"context-left\\\">Warme </span><mark>Worte</mark><span class=\\\"context-right\\\"> nach eiskaltem Wahlkampf Die SPD feierte<span class=\\\"more\\\"></span></span>\",\n"
+                    + "            \"matchID\": \"match-BRZ13!BRZ13_JAN.07850-p1-2\",\n"
+                    + "            \"docID\": \"BRZ13_JAN.07850\",\n"
+                    + "            \"UID\": 0,\n"
+                    + "            \"pubDate\": \"2013-01-21\"\n"
+                    + "        }\n" + "    ]\n" + "}";
+
+}
diff --git a/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
new file mode 100644
index 0000000..a46282c
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
@@ -0,0 +1,38 @@
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.resource.rewrite.*;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author hanl
+ * @date 21/10/2015
+ */
+public class RewriteHandlerTest {
+
+    @BeforeClass
+    public static void setup() {
+        BeanConfiguration.loadClasspathContext();
+    }
+
+    @Test
+    public void initHandler() {
+        RewriteHandler handler = new RewriteHandler(null);
+        handler.add(FoundryInject.class);
+    }
+
+    @Test
+    public void testRewriteTastAdd() {
+        RewriteHandler handler = new RewriteHandler(null);
+        handler.add(FoundryInject.class);
+        handler.add(DocMatchRewrite.class);
+        handler.add(CollectionCleanupFilter.class);
+        handler.add(IdWriter.class);
+    }
+
+    @AfterClass
+    public static void close() {
+        BeanConfiguration.closeApplication();
+    }
+
+}
diff --git a/src/test/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManagerTest.java b/src/test/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManagerTest.java
new file mode 100644
index 0000000..efcf6c0
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManagerTest.java
@@ -0,0 +1,106 @@
+package de.ids_mannheim.korap.security.auth;
+
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.config.TestHelper;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
+import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface;
+import de.ids_mannheim.korap.user.*;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author hanl
+ * @date 04/02/2016
+ */
+public class KustvaktAuthenticationManagerTest {
+
+    @BeforeClass
+    public static void create() {
+        BeanConfiguration.loadClasspathContext("default-config.xml");
+        assert TestHelper.setupAccount();
+    }
+
+    @AfterClass
+    public static void close() {
+        assert TestHelper.dropUser();
+        BeanConfiguration.closeApplication();
+    }
+
+    @After
+    public void after() throws KustvaktException {
+        User user = BeanConfiguration.getBeans().getAuthenticationManager()
+                .getUser((String) KustvaktConfiguration.KUSTVAKT_USER
+                        .get(Attributes.USERNAME));
+        BeanConfiguration.getBeans().getAuthenticationManager()
+                .deleteAccount(user);
+    }
+
+    @Test
+    public void testCreateUser() throws KustvaktException {
+        User user = BeanConfiguration.getBeans().getAuthenticationManager()
+                .createUserAccount(KustvaktConfiguration.KUSTVAKT_USER, false);
+
+        EntityHandlerIface dao = BeanConfiguration.getBeans()
+                .getUserDBHandler();
+
+        assert dao.size() > 0;
+        User check = dao.getAccount(user.getUsername());
+        assert check != null;
+    }
+
+    @Test
+    public void testUserdetailsGet() throws KustvaktException {
+        testCreateUser();
+        AuthenticationManagerIface manager = BeanConfiguration.getBeans()
+                .getAuthenticationManager();
+
+        User user = manager.getUser((String) KustvaktConfiguration.KUSTVAKT_USER
+                .get(Attributes.USERNAME));
+
+        Userdata data = manager.getUserData(user, UserDetails.class);
+
+        assert data != null;
+    }
+
+    @Test
+    public void testUsersettingsGet() throws KustvaktException {
+        testCreateUser();
+        AuthenticationManagerIface manager = BeanConfiguration.getBeans()
+                .getAuthenticationManager();
+
+        User user = manager.getUser((String) KustvaktConfiguration.KUSTVAKT_USER
+                .get(Attributes.USERNAME));
+
+        Userdata data = manager.getUserData(user, UserSettings.class);
+        assert data != null;
+    }
+
+    @Test(expected = KustvaktException.class)
+    public void testUserDetailsGetNonExistent() throws KustvaktException {
+        testCreateUser();
+        AuthenticationManagerIface manager = BeanConfiguration.getBeans()
+                .getAuthenticationManager();
+
+        User user = new KorAPUser(10, "random");
+
+        Userdata data = manager.getUserData(user, UserDetails.class);
+        assert data != null;
+    }
+
+    @Test(expected = KustvaktException.class)
+    public void testUserSettingsGetNonExistent() throws KustvaktException {
+        testCreateUser();
+        AuthenticationManagerIface manager = BeanConfiguration.getBeans()
+                .getAuthenticationManager();
+
+        User user = new KorAPUser(10, "random");
+
+        Userdata data = manager.getUserData(user, UserSettings.class);
+        assert data != null;
+    }
+
+}
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/AuthServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/AuthServiceTest.java
deleted file mode 100644
index af4ebdd..0000000
--- a/src/test/java/de/ids_mannheim/korap/web/service/AuthServiceTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.ids_mannheim.korap.web.service;
-
-/**
- * @author hanl
- * @date 24/09/2015
- */
-public class AuthServiceTest extends FastJerseyTest {
-
-    //todo: test basicauth via secure connection
-
-
-
-
-
-}
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/AuthServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/AuthServiceTest.java
new file mode 100644
index 0000000..2b3667a
--- /dev/null
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/AuthServiceTest.java
@@ -0,0 +1,17 @@
+package de.ids_mannheim.korap.web.service.full;
+
+import de.ids_mannheim.korap.web.service.FastJerseyTest;
+
+/**
+ * @author hanl
+ * @date 24/09/2015
+ */
+public class AuthServiceTest extends FastJerseyTest {
+
+    //todo: test basicauth via secure connection
+
+
+
+
+
+}
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/KustvaktCoreRestTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
similarity index 85%
rename from src/test/java/de/ids_mannheim/korap/web/service/KustvaktCoreRestTest.java
rename to src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
index d42a446..f297953 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/KustvaktCoreRestTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
@@ -1,10 +1,11 @@
-package de.ids_mannheim.korap.web.service;
+package de.ids_mannheim.korap.web.service.full;
 
 import com.sun.jersey.api.client.ClientResponse;
 import de.ids_mannheim.korap.config.BeanConfiguration;
 import de.ids_mannheim.korap.query.serialize.CollectionQueryProcessor;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import de.ids_mannheim.korap.web.service.FastJerseyTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -22,7 +23,7 @@
     @BeforeClass
     public static void configure() {
         BeanConfiguration.loadClasspathContext();
-        setPackages("de.ids_mannheim.korap.web.service.light",
+        FastJerseyTest.setPackages("de.ids_mannheim.korap.web.service.light",
                 "de.ids_mannheim.korap.web.filter",
                 "de.ids_mannheim.korap.web.utils");
     }
@@ -45,8 +46,8 @@
         ClientResponse response = resource().path(getAPIVersion())
                 .path("search").queryParam("q", "[base=Wort]")
                 .queryParam("ql", "poliqarp").get(ClientResponse.class);
-//        System.out.println("_______________________________________________");
-//        System.out.println(response.getEntity(String.class));
+        //        System.out.println("_______________________________________________");
+        //        System.out.println(response.getEntity(String.class));
         assert ClientResponse.Status.OK.getStatusCode() == response.getStatus();
     }
 
@@ -57,14 +58,14 @@
 
         ClientResponse response = resource().path(getAPIVersion())
                 .path("search").post(ClientResponse.class, s.toJSON());
-//        System.out.println("_______________________________________________ RAW");
-//        System.out.println(response.getEntity(String.class));
+        //        System.out.println("_______________________________________________ RAW");
+        //        System.out.println(response.getEntity(String.class));
         assert ClientResponse.Status.OK.getStatusCode() == response.getStatus();
     }
 
     // in case no index is there, this will throw an error
-    @Ignore
     @Test
+    @Ignore
     public void testGetMatchInfoThrowsNoException() {
         ClientResponse response = resource().path(getAPIVersion())
                 .get(ClientResponse.class);
@@ -88,9 +89,9 @@
                 .post(ClientResponse.class, "creationDate in 1787");
         String ent = response.getEntity(String.class);
         assert ClientResponse.Status.OK.getStatusCode() == response.getStatus();
-//        System.out
-//                .println("___________________________________________________");
-//        System.out.println("STATS ENTITY " + ent);
+        //        System.out
+        //                .println("___________________________________________________");
+        //        System.out.println("STATS ENTITY " + ent);
     }
 
     //    @Test
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/KustvaktResourceServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktResourceServiceTest.java
similarity index 94%
rename from src/test/java/de/ids_mannheim/korap/web/service/KustvaktResourceServiceTest.java
rename to src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktResourceServiceTest.java
index 4f27150..377b4e8 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/KustvaktResourceServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktResourceServiceTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.web.service;
+package de.ids_mannheim.korap.web.service.full;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.sun.jersey.api.client.ClientResponse;
@@ -8,6 +8,7 @@
 import de.ids_mannheim.korap.security.auth.BasicHttpAuth;
 import de.ids_mannheim.korap.user.Attributes;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import de.ids_mannheim.korap.web.service.FastJerseyTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -21,7 +22,7 @@
     @BeforeClass
     public static void configure() {
         BeanConfiguration.loadClasspathContext("default-config.xml");
-        setPackages("de.ids_mannheim.korap.web.service.full",
+        FastJerseyTest.setPackages("de.ids_mannheim.korap.web.service.full",
                 "de.ids_mannheim.korap.web.filter",
                 "de.ids_mannheim.korap.web.utils");
         TestHelper.runBootInterfaces();
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/OAuth2EndpointTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/OAuth2EndpointTest.java
similarity index 95%
rename from src/test/java/de/ids_mannheim/korap/web/service/OAuth2EndpointTest.java
rename to src/test/java/de/ids_mannheim/korap/web/service/full/OAuth2EndpointTest.java
index e1dc167..b94be84 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/OAuth2EndpointTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/OAuth2EndpointTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.web.service;
+package de.ids_mannheim.korap.web.service.full;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.sun.jersey.api.client.ClientResponse;
@@ -7,6 +7,7 @@
 import de.ids_mannheim.korap.security.auth.BasicHttpAuth;
 import de.ids_mannheim.korap.user.Attributes;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import de.ids_mannheim.korap.web.service.FastJerseyTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -31,7 +32,7 @@
     @BeforeClass
     public static void configure() {
         BeanConfiguration.loadClasspathContext("default-config.xml");
-        setPackages("de.ids_mannheim.korap.web.service",
+        FastJerseyTest.setPackages("de.ids_mannheim.korap.web.service",
                 "de.ids_mannheim.korap.web.filter",
                 "de.ids_mannheim.korap.web.utils");
 
