diff --git a/core/pom.xml b/core/pom.xml
index f5cfa3e..869823c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -8,7 +8,7 @@
 	<properties>
 		<java.version>1.8</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<spring-framework.version>5.1.1.RELEASE</spring-framework.version>
+		<spring.version>5.1.1.RELEASE</spring.version>
 		<jersey.version>1.19.4</jersey.version>
 		<jetty.version>9.4.12.v20180830</jetty.version>
 		<hibernate.version>5.3.7.Final</hibernate.version>
@@ -307,12 +307,12 @@
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-core</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-web</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
@@ -322,44 +322,44 @@
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-orm</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-jdbc</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-tx</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.security</groupId>
 			<artifactId>spring-security-core</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.security</groupId>
 			<artifactId>spring-security-web</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<!-- EM: done -->
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-context</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-context-support</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-test</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 			<scope>compile</scope>
 		</dependency>
 
@@ -368,12 +368,12 @@
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-aop</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-aspects</artifactId>
-			<version>${spring-framework.version}</version>
+			<version>${spring.version}</version>
 		</dependency>
 
 		<!-- end copy -->
diff --git a/full/Changes b/full/Changes
index 3532fcd..2cfe740 100644
--- a/full/Changes
+++ b/full/Changes
@@ -3,6 +3,8 @@
    - Added a search timeout test (margaretha)
 18/12/2018
    - Updated tests using BeanConfigTest to use SpringJerseyTest (margaretha)
+08/01/2019
+   - Improved predefined vc caching (issue #28, margaretha)
 
 # version 0.61.4
 14/11/2018
diff --git a/full/pom.xml b/full/pom.xml
index 9d0a1d9..3278b7b 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -7,7 +7,7 @@
 	<properties>
 		<java.version>1.8</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<spring-framework.version>5.1.1.RELEASE</spring-framework.version>
+		<spring.version>5.1.1.RELEASE</spring.version>
 		<jetty.version>9.4.12.v20180830</jetty.version>
 		<jersey.version>1.19.4</jersey.version>
 		<hibernate.version>5.3.7.Final</hibernate.version>
diff --git a/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
index 9f0e27d..1b49c17 100644
--- a/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
+++ b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
@@ -25,7 +25,7 @@
     @Autowired
     private AccessScopeDao accessScopeDao;
     @Autowired
-    private NamedVCLoader loader;
+    private NamedVCLoader vcLoader;
     @Autowired
     private AnnotationParser annotationParser;
     @Autowired
@@ -39,15 +39,17 @@
     @Override
     public void init () throws IOException, QueryException, KustvaktException {
         setInitialAccessScope();
-        loader.loadVCToCache();
+        Thread t = new Thread(vcLoader);
+        t.start();
     }
 
     public void initAnnotation ()
             throws IOException, QueryException, KustvaktException {
         setInitialAccessScope();
-        loader.loadVCToCache();
         annotationParser.run();
         resourceParser.run();
+        Thread t = new Thread(vcLoader);
+        t.start();
     }
 
     /* (non-Javadoc)
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
index f1242e5..4d710ef 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
+++ b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
@@ -6,6 +6,8 @@
 import java.io.InputStream;
 import java.util.zip.GZIPInputStream;
 
+import javax.management.RuntimeErrorException;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.output.ByteArrayOutputStream;
@@ -23,7 +25,7 @@
 import de.ids_mannheim.korap.web.SearchKrill;
 
 @Component
-public class NamedVCLoader {
+public class NamedVCLoader implements Runnable{
     @Autowired
     private FullConfiguration config;
     @Autowired
@@ -34,6 +36,17 @@
     public static Logger jlog = LogManager.getLogger(NamedVCLoader.class);
     public static boolean DEBUG = false;
 
+    @Override
+    public void run () {
+        try {
+            loadVCToCache();
+        }
+        catch (IOException | QueryException | KustvaktException e) {
+//            e.printStackTrace();
+            throw new RuntimeErrorException(new Error(e.getMessage(), e.getCause()));
+        }
+    }
+    
     public void loadVCToCache (String filename, String filePath)
             throws IOException, QueryException, KustvaktException {
 
@@ -118,23 +131,21 @@
 
     private void cacheVC (String json, String filename)
             throws IOException, QueryException {
-        jlog.info("Create KrillCollection: " + filename);
         long start, end;
         start = System.currentTimeMillis();
 
         KrillCollection collection = new KrillCollection(json);
         collection.setIndex(searchKrill.getIndex());
 
-        jlog.info("Store vc in cache " + filename);
+        jlog.info("Store {} in cache ", filename);
         if (collection != null) {
             collection.storeInCache(filename);
         }
         end = System.currentTimeMillis();
-        jlog.info(filename + " caching duration: " + (end - start));
+        jlog.info("{} caching duration: {}", filename, (end - start));
         if (DEBUG) {
             jlog.debug("memory cache: "
                     + KrillCollection.cache.calculateInMemorySize());
         }
     }
-
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
index 806069b..9d3d952 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
@@ -186,7 +186,9 @@
         }
 
         node = node.at("/collection");
-        jlog.debug("REWRITES: " + node.toString());
+        if (DEBUG) { 
+            jlog.debug("REWRITES: " + node.toString());
+        }
         
         return node;
     }
diff --git a/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java b/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
deleted file mode 100644
index b2510ec..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package de.ids_mannheim.korap.server;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Properties;
-
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-
-public class KustvaktLiteServer extends KustvaktBaseServer {
-
-    public static void main (String[] args) throws Exception {
-        KustvaktLiteServer server = new KustvaktLiteServer();
-        kargs = server.readAttributes(args);
-
-        if (kargs == null) System.exit(0);
-
-        File f = new File("kustvakt-lite.conf");
-        Properties properties = new Properties();
-        InputStream in = null;
-
-        if (!f.exists()) {
-            in = KustvaktLiteServer.class.getClassLoader()
-                    .getResourceAsStream("kustvakt-lite.conf");
-        }
-        else {
-            in = new FileInputStream(f);
-        }
-
-        properties.load(in);
-        in.close();
-        config = new KustvaktConfiguration(properties);
-
-        kargs.setSpringConfig("lite-config.xml");
-        rootPackages =
-                "de.ids_mannheim.korap.web";
-
-        server.start();
-    }
-
-}
diff --git a/full/src/main/resources/default-config.xml b/full/src/main/resources/default-config.xml
index 948b2f7..2fbd0ae 100644
--- a/full/src/main/resources/default-config.xml
+++ b/full/src/main/resources/default-config.xml
@@ -172,8 +172,6 @@
 
 	<!-- Data access objects -->
 	<bean id="adminDao" class="de.ids_mannheim.korap.dao.AdminDaoImpl" />
-	<bean id="resourceDao" class="de.ids_mannheim.korap.dao.ResourceDao" />
-	<bean id="accessScopeDao" class="de.ids_mannheim.korap.oauth2.dao.AccessScopeDao" />
 	<bean id="authorizationDao" class="de.ids_mannheim.korap.oauth2.dao.CachedAuthorizationDaoImpl" />
 
 	<!-- Filters -->
