diff --git a/Changes b/Changes
index e67a228..8b6ba47 100644
--- a/Changes
+++ b/Changes
@@ -4,6 +4,8 @@
 	  (margaretha)
 	- [bugfix] Store lazy loading embedded spans for startsWith in
 	  WithinSpans (diewald)
+	- [bugfix] Fixed loading krill.info in case krill.properties is given
+	  (diewald)
 
 0.55.4 2016-04-22
 	- [bugfix] Wrap <base/s=t> boundaries around right extended queries
diff --git a/src/main/java/de/ids_mannheim/korap/index/Indexer.java b/src/main/java/de/ids_mannheim/korap/index/Indexer.java
index 1735517..c5da39b 100644
--- a/src/main/java/de/ids_mannheim/korap/index/Indexer.java
+++ b/src/main/java/de/ids_mannheim/korap/index/Indexer.java
@@ -128,7 +128,7 @@
             System.out.println();
             System.err.println("  --config|-c    Configuration file");
             System.err.println("                 (defaults to "
-                    + de.ids_mannheim.korap.util.KrillProperties.file + ")");
+                    + de.ids_mannheim.korap.util.KrillProperties.propStr + ")");
             System.err.println("  --indexDir|-d  Index directory");
             System.err.println("                 (defaults to krill.indexDir"
                     + " in configuration)");
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 fc066f1..8d2f466 100644
--- a/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java
+++ b/src/main/java/de/ids_mannheim/korap/util/KrillProperties.java
@@ -9,9 +9,9 @@
 // Todo: Properties may be loaded twice - althogh Java may cache automatically
 public class KrillProperties {
 
-    public static String file = "krill.properties";
-    private static String info = "krill.info";
-    private static Properties prop;
+    public static String propStr = "krill.properties";
+    private static String infoStr = "krill.info";
+    private static Properties prop, info;
 
     // Logger
     private final static Logger log = LoggerFactory.getLogger(Krill.class);
@@ -22,7 +22,7 @@
         if (prop != null)
             return prop;
 
-        prop = loadProperties(file);
+        prop = loadProperties(propStr);
         return prop;
     };
 
@@ -66,22 +66,22 @@
     // Load version info from file
     public static Properties loadInfo () {
         try {
+            info = new Properties();
             InputStream iFile = KrillProperties.class.getClassLoader()
-                    .getResourceAsStream(info);
+                    .getResourceAsStream(infoStr);
 
             if (iFile == null) {
-                log.error("Cannot find {}.", info);
+                log.error("Cannot find {}.", infoStr);
                 return null;
             };
 
-            Properties prop = new Properties();
-            prop.load(iFile);
+            info.load(iFile);
             iFile.close();
         }
         catch (IOException e) {
             log.error(e.getLocalizedMessage());
             return null;
         };
-        return prop;
+        return info;
     };
 };
