diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index ea0abb3..6e384a1 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -7,6 +7,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.lucene.index.DocsAndPositionsEnum;
@@ -33,6 +34,7 @@
 import de.ids_mannheim.korap.collection.CollectionBuilder;
 import de.ids_mannheim.korap.collection.DocBits;
 import de.ids_mannheim.korap.response.Notifications;
+import de.ids_mannheim.korap.util.KrillProperties;
 import de.ids_mannheim.korap.util.QueryException;
 import de.ids_mannheim.korap.util.StatusCodes;
 import net.sf.ehcache.Cache;
@@ -397,7 +399,19 @@
 
     
     private String loadVCFile (String ref) {
-        File file = new File("vc/"+ref+".jsonld");
+        Properties prop = KrillProperties.loadDefaultProperties();
+        if (prop == null){
+            this.addError(StatusCodes.MISSING_KRILL_PROPERTIES,
+                    "krill.properties is not found.");
+            return null;
+        }
+        
+        String namedVCPath = prop.getProperty("krill.namedVC");
+        if (!namedVCPath.endsWith("/")){
+            namedVCPath += "/";
+        }
+        File file = new File(namedVCPath+ref+".jsonld");
+        
         String json = null;
         try {
             FileInputStream fis = new FileInputStream(file);
diff --git a/src/main/java/de/ids_mannheim/korap/collection/DocBits.java b/src/main/java/de/ids_mannheim/korap/collection/DocBits.java
index 59044ab..9b63751 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/DocBits.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/DocBits.java
@@ -13,19 +13,17 @@
 public class DocBits implements Serializable {
 
     /**
-     * 
+     * Auto generated
      */
     private static final long serialVersionUID = -3505650918983180852L;
     final long[] bits;
-    final int numBits;
 
     public DocBits (long[] bits) {
         this.bits = bits;
-        this.numBits = bits.length;
     }
 
     public BitDocIdSet createBitDocIdSet () {
-        FixedBitSet bitset = new FixedBitSet(bits, numBits);
+        FixedBitSet bitset = new FixedBitSet(bits, bits.length);
         BitDocIdSet docIdSet = new BitDocIdSet(bitset);
         return docIdSet;
     }
@@ -36,7 +34,7 @@
         int i = 1;
         for (long b : bits) {
             sb.append(b);
-            if (i < numBits) {
+            if (i < bits.length) {
                 sb.append(",");
             }
             i++;
diff --git a/src/main/java/de/ids_mannheim/korap/collection/ToCacheVCFilter.java b/src/main/java/de/ids_mannheim/korap/collection/ToCacheVCFilter.java
index b0f3b59..981d0ed 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/ToCacheVCFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/ToCacheVCFilter.java
@@ -60,8 +60,6 @@
                 bitset.flip(0, maxDoc);
             }
         }
-        
-        
 
         docIdMap.put(context.hashCode(), new DocBits(bitset.getBits()));
         CachedVCData cachedVCData = new CachedVCData(new HashMap<>(docIdMap));
diff --git a/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java b/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java
index 1ba261c..e9a38e6 100644
--- a/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java
+++ b/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java
@@ -91,4 +91,8 @@
         };
         return info;
     };
+    
+    public static void setProp (Properties prop) {
+        KrillProperties.prop = prop;
+    }
 };
diff --git a/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java b/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
index b9067ae..a9c9adf 100644
--- a/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
+++ b/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
@@ -7,6 +7,7 @@
     public static final int UNABLE_TO_ADD_DOC_TO_INDEX = 602;
     public static final int UNABLE_TP_COMMIT_STAGED_DATA_TO_INDEX = 603;
     public static final int UNABLE_TO_CONNECT_TO_DB = 604;
+    public static final int MISSING_KRILL_PROPERTIES = 605;
     public static final int MISSING_REQUEST_PARAMETER = 610;
     public static final int ARBITRARY_DESERIALIZATION_ERROR = 613;
     public static final int UNABLE_TO_GENERATE_JSON = 620;
diff --git a/src/test/resources/krill.properties b/src/test/resources/krill.properties
index e14926b..a6302b6 100644
--- a/src/test/resources/krill.properties
+++ b/src/test/resources/krill.properties
@@ -1,3 +1,4 @@
 krill.version = ${project.version}
 krill.name = ${project.name}
-krill.indexDir = test-output
\ No newline at end of file
+krill.indexDir = test-output
+krill.namedVC = vc
\ No newline at end of file
