fixed running tests
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/AuthService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/AuthService.java
index 490479d..27de612 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/AuthService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/AuthService.java
@@ -2,7 +2,7 @@
 
 import com.sun.jersey.spi.container.ContainerRequest;
 import com.sun.jersey.spi.container.ResourceFilters;
-import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.BeansFactory;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
@@ -10,7 +10,7 @@
 import de.ids_mannheim.korap.user.*;
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.utils.KustvaktLogger;
-import de.ids_mannheim.korap.utils.ServiceVersion;
+import de.ids_mannheim.korap.utils.ServiceInfo;
 import de.ids_mannheim.korap.web.KustvaktServer;
 import de.ids_mannheim.korap.web.filter.AuthFilter;
 import de.ids_mannheim.korap.web.filter.DefaultFilter;
@@ -44,7 +44,7 @@
     //    private SendMail mail;
 
     public AuthService() {
-        this.controller = BeanConfiguration.getBeans()
+        this.controller = BeansFactory.getKustvaktContext()
                 .getAuthenticationManager();
         //todo: replace with real property values
         //        this.mail = new SendMail(ExtConfiguration.getMailProperties());
@@ -63,10 +63,10 @@
     public Response bootstrap() {
         Map m = new HashMap();
 //        m.put("settings", new UserSettings().toObjectMap());
-        m.put("ql", BeanConfiguration.getBeans().getConfiguration()
+        m.put("ql", BeansFactory.getKustvaktContext().getConfiguration()
                 .getQueryLanguages());
         m.put("SortTypes", null); // types of sorting that are supported!
-        m.put("version", ServiceVersion.getAPIVersion());
+        m.put("version", ServiceInfo.getInfo().getVersion());
         return Response.ok(JsonUtils.toJSON(m)).build();
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
index 5e5e2cf..463e068 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
@@ -65,11 +65,11 @@
 
     public OAuthService() {
         this.handler = new OAuth2Handler(
-                BeanConfiguration.getBeans().getPersistenceClient());
-        this.controller = BeanConfiguration.getBeans()
+                BeansFactory.getKustvaktContext().getPersistenceClient());
+        this.controller = BeansFactory.getKustvaktContext()
                 .getAuthenticationManager();
-        this.crypto = BeanConfiguration.getBeans().getEncryption();
-        this.config = BeanConfiguration.getBeans().getConfiguration();
+        this.crypto = BeansFactory.getKustvaktContext().getEncryption();
+        this.config = BeansFactory.getKustvaktContext().getConfiguration();
     }
 
     @POST
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
index 3b0691e..cd10d64 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
@@ -3,7 +3,7 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.sun.jersey.core.util.MultivaluedMapImpl;
 import com.sun.jersey.spi.container.ResourceFilters;
-import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.BeansFactory;
 import de.ids_mannheim.korap.config.KustvaktConfiguration;
 import de.ids_mannheim.korap.exceptions.EmptyResultException;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
@@ -12,8 +12,7 @@
 import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
 import de.ids_mannheim.korap.query.serialize.MetaQueryBuilder;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
-import de.ids_mannheim.korap.resource.rewrite.FoundryInject;
-import de.ids_mannheim.korap.resource.rewrite.RewriteHandler;
+import de.ids_mannheim.korap.resource.rewrite.*;
 import de.ids_mannheim.korap.resources.*;
 import de.ids_mannheim.korap.security.ac.ResourceFinder;
 import de.ids_mannheim.korap.security.ac.ResourceHandler;
@@ -60,17 +59,18 @@
     private RewriteHandler processor;
 
     public ResourceService() {
-        this.controller = BeanConfiguration.getBeans()
+        this.controller = BeansFactory.getKustvaktContext()
                 .getAuthenticationManager();
-        this.config = BeanConfiguration.getBeans().getConfiguration();
+        this.config = BeansFactory.getKustvaktContext().getConfiguration();
         this.resourceHandler = new ResourceHandler();
         this.searchKrill = new SearchKrill(config.getIndexDir());
 
         UriBuilder builder = UriBuilder.fromUri("http://10.0.10.13").port(9997);
         this.graphDBhandler = new ClientsHandler(builder.build());
 
-        this.processor = new RewriteHandler(config);
-        this.processor.add(FoundryInject.class);
+        this.processor = new RewriteHandler();
+        this.processor.defaultRewriteConstraints();
+        this.processor.insertBeans(BeansFactory.getKustvaktContext());
     }
 
     /**
@@ -304,10 +304,20 @@
         TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
         QuerySerializer ss;
         CollectionQueryBuilder3 cquery = new CollectionQueryBuilder3();
+        if (cq != null)
+            cquery.setBaseQuery(cq);
+
         User user;
         try {
             user = controller.getUser(ctx.getUsername());
-            Set<Corpus> resources = ResourceFinder.search(user, Corpus.class);
+            Set<Corpus> resources = new HashSet<>();
+
+            if (User.UserFactory.isDemo(ctx.getUsername()))
+                resources = ResourceFinder.searchPublic(Corpus.class);
+            else
+                resources = ResourceFinder.search(user, Corpus.class);
+            System.out.println("RESOURCES FOUND "+ resources);
+
             for (KustvaktResource corpus : resources)
                 cquery.addQuery("corpusID=" + corpus.getPersistentID());
         }catch (KustvaktException e) {
@@ -315,8 +325,7 @@
         }
 
         ss = new QuerySerializer().setQuery(q, ql, v);
-        if (cq != null)
-            ss.setCollection(cq);
+        ss.setCollection(cquery.toJSON());
 
         MetaQueryBuilder meta = new MetaQueryBuilder();
         if (pageIndex != null)
@@ -347,7 +356,8 @@
      * @param pageIndex
      * @return
      */
-    // todo: test
+
+    //todo: does cq have any sensable worth here?
     @TRACE
     @Path("{type}/{id}/search")
     public Response buildQuery(@Context Locale locale,
@@ -372,6 +382,7 @@
         try {
             User user = controller.getUser(ctx.getUsername());
 
+            //todo: instead of throwing exception, build notification and rewrites into result query
             KustvaktResource resource;
             if (StringUtils.isInteger(id))
                 resource = this.resourceHandler
@@ -387,15 +398,11 @@
 
         }catch (KustvaktException e) {
             KustvaktLogger.ERROR_LOGGER.error("Exception encountered!", e);
-            throw KustvaktResponseHandler.throwit(e);
+            //throw KustvaktResponseHandler.throwit(e);
         }
 
         ss = new QuerySerializer().setQuery(q, ql, v);
 
-        // todo: parse resources
-        if (cq != null)
-            ss.setCollection(cq);
-
         MetaQueryBuilder meta = new MetaQueryBuilder();
         if (pageIndex != null)
             meta.addEntry("startIndex", pageIndex);
@@ -483,7 +490,7 @@
         //        meta.addEntry("itemsPerResource", 1);
         serializer.setMeta(meta.raw());
 
-        // policy rewrite!
+        //fixme: policy rewrite!
         String query = this.processor.preProcess(serializer.toJSON(), user);
 
         jlog.info("the serialized query {}", query);
@@ -567,8 +574,6 @@
                             .throwit(StatusCodes.ILLEGAL_ARGUMENT,
                                     "Type parameter not supported", type);
 
-                //                functions.createQuery(id, type, user, query, ql, v);
-
                 meta.addEntry("startIndex", pageIndex);
                 meta.addEntry("startPage", pageInteger);
                 meta.setSpanContext(ctx);
@@ -582,6 +587,8 @@
                 query = s.toJSON();
                 //                PolicyParser parser = new PolicyParser(user);
                 //                query = parser.parse(s.toJSON());
+                //todo: 1
+
             }
             String result;
             try {
@@ -899,7 +906,7 @@
                 cachetmp.setStats(JsonUtils.readSimple(stats, Map.class));
             }
 
-            if (!cache && !user.isDemo()) {
+            if (!cache && !User.UserFactory.isDemo(ctx.getUsername())) {
                 collection = ResourceFactory
                         .getPermanentCollection(cachetmp, name, description);
                 vals = collection.toMap();
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/UserService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/UserService.java
index 973544f..45999fc 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/UserService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/UserService.java
@@ -4,7 +4,7 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.sun.jersey.spi.container.ContainerRequest;
 import com.sun.jersey.spi.container.ResourceFilters;
-import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.BeansFactory;
 import de.ids_mannheim.korap.config.Scopes;
 import de.ids_mannheim.korap.config.URIParam;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
@@ -38,8 +38,6 @@
 public class UserService {
 
     private static Logger jlog = LoggerFactory.getLogger(UserService.class);
-    //    private static Logger jlog = KustvaktLogger
-    //            .getLogger(KustvaktLogger.SECURITY_LOG);
     private AuthenticationManagerIface controller;
 
     private
@@ -47,7 +45,7 @@
     UriInfo info;
 
     public UserService() {
-        this.controller = BeanConfiguration.getBeans()
+        this.controller = BeansFactory.getKustvaktContext()
                 .getAuthenticationManager();
     }
 
@@ -237,7 +235,7 @@
         try {
             User user = controller.getUser(ctx.getUsername());
             Userdata data = controller.getUserData(user, UserSettings.class);
-            data.addField(Attributes.USERNAME, ctx.getUsername());
+            data.setField(Attributes.USERNAME, ctx.getUsername());
             result = data.data();
         }catch (KustvaktException e) {
             jlog.error("Exception encountered!", e);
@@ -259,7 +257,7 @@
 
         try {
             User user = controller.getUser(ctx.getUsername());
-            if (user.isDemo())
+            if (User.UserFactory.isDemo(ctx.getUsername()))
                 return Response.notModified().build();
 
             Userdata data = controller.getUserData(user, UserSettings.class);
@@ -293,7 +291,7 @@
         try {
             User user = controller.getUser(ctx.getUsername());
             Userdata data = controller.getUserData(user, UserDetails.class);
-            data.addField(Attributes.USERNAME, ctx.getUsername());
+            data.setField(Attributes.USERNAME, ctx.getUsername());
             result = data.data();
         }catch (KustvaktException e) {
             jlog.error("Exception encountered!", e);
@@ -315,7 +313,7 @@
 
         try {
             User user = controller.getUser(ctx.getUsername());
-            if (user.isDemo())
+            if (User.UserFactory.isDemo(ctx.getUsername()))
                 return Response.notModified().build();
 
             UserDetails new_data = new UserDetails(user.getId());
@@ -393,7 +391,7 @@
         TokenContext ctx = (TokenContext) context.getUserPrincipal();
         try {
             User user = controller.getUser(ctx.getUsername());
-            if (user.isDemo())
+            if (User.UserFactory.isDemo(ctx.getUsername()))
                 return Response.notModified().build();
             controller.deleteAccount(user);
         }catch (KustvaktException e) {