diff --git a/src/test/java/LocalQueryTest.java b/src/test/java/LocalQueryTest.java
index 0f9d007..ae0e494 100644
--- a/src/test/java/LocalQueryTest.java
+++ b/src/test/java/LocalQueryTest.java
@@ -73,7 +73,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
         index = helper().getContext().getConfiguration().getIndexDir();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java b/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
index 4407fb6..0d24bcc 100644
--- a/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
@@ -46,7 +46,6 @@
         BeansFactory.closeApplication();
     }
 
-
     public abstract void initMethod () throws KustvaktException;
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/config/CollectionLoaderTest.java b/src/test/java/de/ids_mannheim/korap/config/CollectionLoaderTest.java
index 6f0ee8b..82af51b 100644
--- a/src/test/java/de/ids_mannheim/korap/config/CollectionLoaderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/CollectionLoaderTest.java
@@ -5,12 +5,15 @@
 import de.ids_mannheim.korap.web.service.CollectionLoader;
 import de.ids_mannheim.korap.web.service.UserLoader;
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * @author hanl
  * @date 11/02/2016
  */
+@Deprecated
+@Ignore
 public class CollectionLoaderTest extends BeanConfigTest {
 
     @Test
diff --git a/src/test/java/de/ids_mannheim/korap/config/ConfigTest.java b/src/test/java/de/ids_mannheim/korap/config/ConfigTest.java
index 390ae00..eabb0a3 100644
--- a/src/test/java/de/ids_mannheim/korap/config/ConfigTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/ConfigTest.java
@@ -83,8 +83,8 @@
 
 
     @Test
-    public void testBootConfigRun () {
-        helper().runBootInterfaces();
+    public void testBootConfigRun () throws KustvaktException {
+//        helper().runBootInterfaces();
         helper().setupAccount();
         assertNotNull(helper().getUser());
 
diff --git a/src/test/java/de/ids_mannheim/korap/config/LoaderTest.java b/src/test/java/de/ids_mannheim/korap/config/LoaderTest.java
index 192c561..009a4c0 100644
--- a/src/test/java/de/ids_mannheim/korap/config/LoaderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/LoaderTest.java
@@ -38,6 +38,8 @@
 
 
     @Test
+    @Ignore
+    @Deprecated
     public void runBootInterfaces () {
         Set<Class<? extends BootableBeanInterface>> set = new HashSet<>();
         set.add(CollectionLoader.class);
diff --git a/src/test/java/de/ids_mannheim/korap/config/PolicyLoaderTest.java b/src/test/java/de/ids_mannheim/korap/config/PolicyLoaderTest.java
index 3d3f8f7..32660bc 100644
--- a/src/test/java/de/ids_mannheim/korap/config/PolicyLoaderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/PolicyLoaderTest.java
@@ -10,13 +10,17 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 
+import org.junit.Ignore;
+
 /**
  * @author hanl
  * @date 11/02/2016
  */
+@Deprecated
 public class PolicyLoaderTest extends BeanConfigTest {
 
     @Test
+    @Ignore
     public void testPolicyLoader () {
         boolean error = false;
         UserLoader u = new UserLoader();
diff --git a/src/test/java/de/ids_mannheim/korap/config/TestHelper.java b/src/test/java/de/ids_mannheim/korap/config/TestHelper.java
index 3698e9c..8c71eae 100644
--- a/src/test/java/de/ids_mannheim/korap/config/TestHelper.java
+++ b/src/test/java/de/ids_mannheim/korap/config/TestHelper.java
@@ -113,11 +113,11 @@
     }
 
 
-    public TestHelper setupAccount () {
+    public TestHelper setupAccount () throws KustvaktException {
         KustvaktBaseDaoInterface dao = getBean(ContextHolder.KUSTVAKT_USERDB);
 
         KustvaktAuthenticationManager manager = getBean(ContextHolder.KUSTVAKT_AUTHENTICATION_MANAGER);
-
+//        manager.createUserAccount(KustvaktConfiguration.KUSTVAKT_USER, false);
         try {
             User user = getUser();
             jlog.debug("found user, skipping setup ...");
@@ -247,6 +247,7 @@
     }
 
 
+    @Deprecated
     public TestHelper runBootInterfaces () {
         Set<Class<? extends BootableBeanInterface>> set = KustvaktClassLoader
                 .loadSubTypes(BootableBeanInterface.class);
diff --git a/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java b/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java
index 02bfe4a..f21e305 100644
--- a/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java
+++ b/src/test/java/de/ids_mannheim/korap/handlers/ResourceDaoTest.java
@@ -38,7 +38,7 @@
 
     @Override
     public void initMethod () {
-        helper().setupAccount();
+//        helper().setupAccount();
 
         List<Class<? extends KustvaktResource>> classes = new ArrayList<>(
                 KustvaktClassLoader.loadSubTypes(KustvaktResource.class));
diff --git a/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java b/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java
index 8e0616e..855383f 100644
--- a/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java
+++ b/src/test/java/de/ids_mannheim/korap/handlers/UserDaoTest.java
@@ -110,6 +110,6 @@
     @Override
     public void initMethod () throws KustvaktException {
         helper().setupAccount();
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java b/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
index 90e37eb..fe35d64 100644
--- a/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
@@ -27,7 +27,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
         config = helper().getContext().getConfiguration();
     }
 
@@ -215,7 +215,7 @@
     public void testPublicCollectionRewriteEmptyAdd () throws KustvaktException {
         RewriteHandler handler = new RewriteHandler();
         handler.insertBeans(helper().getContext());
-        handler.add(PublicCollection.class);
+        handler.add(CollectionRewrite.class);
 
         QuerySerializer s = new QuerySerializer();
         s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
@@ -223,12 +223,14 @@
         JsonNode node = JsonUtils.readTree(handler.processQuery(org,
                 User.UserFactory.getUser("test_user")));
         assertNotNull(node);
-        assertEquals("corpusSigle", node.at("/collection/operands/0/key")
+        assertEquals("availability", node.at("/collection/key")
                 .asText());
-        assertEquals("corpusSigle", node.at("/collection/operands/1/key")
+        assertEquals("CC-BY.*", node.at("/collection/value")
                 .asText());
         assertEquals("koral:rewrite", node.at("/collection/rewrites/0/@type")
                 .asText());
+        assertEquals("availability(FREE)", node.at("/collection/rewrites/0/scope")
+                .asText());
         //todo:
     }
 
@@ -238,7 +240,7 @@
             throws KustvaktException {
         RewriteHandler handler = new RewriteHandler();
         handler.insertBeans(helper().getContext());
-        handler.add(PublicCollection.class);
+        handler.add(CollectionRewrite.class);
 
         QuerySerializer s = new QuerySerializer();
         s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
@@ -248,12 +250,18 @@
                 User.UserFactory.getUser("test_user")));
         assertNotNull(node);
         assertEquals(2, node.at("/collection/operands").size());
-        assertEquals("corpusSigle",
+        assertEquals("availability",
+                node.at("/collection/operands/0/key").asText());
+        assertEquals("CC-BY.*",
+                node.at("/collection/operands/0/value").asText());
+        assertEquals("docSigle",
                 node.at("/collection/operands/1/operands/0/key").asText());
-        assertEquals("corpusSigle",
+        assertEquals("textClass",
                 node.at("/collection/operands/1/operands/1/key").asText());
         assertEquals("koral:rewrite", node.at("/collection/rewrites/0/@type")
                 .asText());
+        assertEquals("availability(FREE)", node.at("/collection/rewrites/0/scope")
+                .asText());
     }
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/security/PolicyDaoTest.java b/src/test/java/de/ids_mannheim/korap/security/PolicyDaoTest.java
index 8c2a00d..1097a70 100644
--- a/src/test/java/de/ids_mannheim/korap/security/PolicyDaoTest.java
+++ b/src/test/java/de/ids_mannheim/korap/security/PolicyDaoTest.java
@@ -31,7 +31,7 @@
     @Override
     public void initMethod () throws KustvaktException {
         helper().setupAccount();
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
         helper().setupResource(new Corpus("WPD_1"));
     }
 
diff --git a/src/test/java/de/ids_mannheim/korap/security/ResourceFinderTest.java b/src/test/java/de/ids_mannheim/korap/security/ResourceFinderTest.java
index ce7be2b..a96378d 100644
--- a/src/test/java/de/ids_mannheim/korap/security/ResourceFinderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/security/ResourceFinderTest.java
@@ -5,6 +5,8 @@
 import de.ids_mannheim.korap.resources.Corpus;
 import de.ids_mannheim.korap.resources.VirtualCollection;
 import de.ids_mannheim.korap.security.ac.ResourceFinder;
+
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.Set;
@@ -17,6 +19,8 @@
  * @author hanl
  * @date 06/02/2016
  */
+@Deprecated
+@Ignore
 public class ResourceFinderTest extends BeanConfigTest {
 
     @Test
@@ -36,6 +40,7 @@
 
 
     @Test
+    @Deprecated
     public void testResourcesDemoFiltered () throws KustvaktException {
         Set<Corpus> resources = ResourceFinder.searchPublicFiltered(
                 Corpus.class, "WPD13");
@@ -52,6 +57,6 @@
     @Override
     public void initMethod () throws KustvaktException {
         helper().setupAccount();
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/security/ResourcesTest.java b/src/test/java/de/ids_mannheim/korap/security/ResourcesTest.java
index 677f167..dd90bb0 100644
--- a/src/test/java/de/ids_mannheim/korap/security/ResourcesTest.java
+++ b/src/test/java/de/ids_mannheim/korap/security/ResourcesTest.java
@@ -108,6 +108,8 @@
 
 
     @Test
+    @Deprecated
+    @Ignore
     public void getDemoResources () throws KustvaktException {
         Set s = ResourceFinder.searchPublic(Corpus.class);
         assertEquals(2, s.size());
@@ -117,6 +119,8 @@
 
 
     @Test
+    @Deprecated
+    @Ignore
     public void getDemoResourceFiltered () throws KustvaktException {
         Set s = ResourceFinder.searchPublicFiltered(Corpus.class, "WPD13");
         assertEquals(1, s.size());
@@ -127,7 +131,7 @@
     public void initMethod () throws KustvaktException {
         helper().setupAccount();
         c1 = new Corpus("WPD_test");
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
         helper().setupResource(c1);
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/security/SecurityPolicyTest.java b/src/test/java/de/ids_mannheim/korap/security/SecurityPolicyTest.java
index 0235e81..cd3a32b 100644
--- a/src/test/java/de/ids_mannheim/korap/security/SecurityPolicyTest.java
+++ b/src/test/java/de/ids_mannheim/korap/security/SecurityPolicyTest.java
@@ -142,7 +142,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
         helper().setupAccount();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
index 4c2b8fa..b5b30a8 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/KustvaktCoreRestTest.java
@@ -21,8 +21,8 @@
 
 	@Override
     public void initMethod () throws KustvaktException {
-//        helper().setupAccount();
-        helper().runBootInterfaces();
+        helper().setupAccount();
+//        helper().runBootInterfaces();
     }
 	
     @BeforeClass
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
index 0153e44..170ab18 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
@@ -124,6 +124,6 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/PolicyServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/PolicyServiceTest.java
index c48f40c..ecff17b 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/PolicyServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/PolicyServiceTest.java
@@ -28,7 +28,7 @@
 import de.ids_mannheim.korap.user.User.UserFactory;
 import de.ids_mannheim.korap.web.service.FastJerseyTest;
 
-/**
+/** FIX ME: Database restructure
  * @author margaretha
  */
 public class PolicyServiceTest extends FastJerseyTest {
@@ -171,7 +171,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 }
 
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
index fe8c672..59bc30b 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
@@ -2,7 +2,7 @@
 /**
  * @author hanl, margaretha
  * @lastUpdate 19/04/2017
- *
+ * EM: FIX ME: Database restructure
  */
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -27,7 +27,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceInfoServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceInfoServiceTest.java
index d31d91c..c6b7135 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceInfoServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceInfoServiceTest.java
@@ -19,13 +19,13 @@
 /**
  * @author hanl, margaretha
  * @lastUpdate 19/04/2017
- *
+ * EM: FIX ME: Database restructure
  */
 public class ResourceInfoServiceTest extends FastJerseyTest {
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 
 
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 4cdce89..b55fa73 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
@@ -381,6 +381,6 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
index 8786030..5c08e74 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
@@ -37,7 +37,8 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
+        helper().setupAccount();
     }
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
index 407dcf0..52f2487 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
@@ -20,7 +20,7 @@
 
     @Override
     public void initMethod () throws KustvaktException {
-        helper().runBootInterfaces();
+//        helper().runBootInterfaces();
     }
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/UserServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/UserServiceTest.java
index a3641b1..5502366 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/UserServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/UserServiceTest.java
@@ -155,7 +155,7 @@
 
 	// EM: This test require VPN / IDS Intranet
 	@Test
-//	@Ignore
+	@Ignore
 	public void loginJWT() {
 		String en = BasicHttpAuth.encode(credentials[0], credentials[1]);
 		/* lauffähige Version von Hanl: */
