diff --git a/Changes b/Changes
index 93a2045..7ed23ca 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,8 @@
-0.55.3 2016-02-19
+0.55.3 2016-02-21
 	- [bugfix] Use base foundry for default sentences and paragraphs
 	  (diewald, margaretha)
 	- [bugfix] Distance constraint exclusion serialized (diewald)
+	- [bugfix] Use indexer without krill.properties packaged (diewald)
 
 0.55.2 2016-02-13
         - [bugfix] Fixed support for corpus and doc IDs containing
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 4eed08a..e5067e1 100644
--- a/src/main/java/de/ids_mannheim/korap/index/Indexer.java
+++ b/src/main/java/de/ids_mannheim/korap/index/Indexer.java
@@ -16,7 +16,7 @@
  * this tool may be more suitable for your needs
  * (especially as it is way faster).
  * 
- * Usage: java -jar Krill-X.XX.jar [propfile] [directories]*
+ * Usage: java -jar Krill-Indexer.jar [--config propfile] [directories]*
  */
 public class Indexer {
     KrillIndex index;
@@ -117,20 +117,20 @@
     public static void main (String[] argv) throws IOException {
 
         if (argv.length == 0) {
-            /*
-          String jar = new File(Indexer.class.getProtectionDomain()
-          .getCodeSource().getLocation().getPath()).getName();
-          System.out.println("Usage: java -jar " + jar
-          + "--config [propfile] [directories]*");
-          return;
-            */
-
-            System.err.println("Call with parameters:");
-            System.err.println("--config|-c      Configuration file (defaults to " +
+            String jar = new File(Indexer.class.getProtectionDomain()
+                                  .getCodeSource().getLocation().getPath()).getName();
+            
+            System.out.println("Add documents from a directory to the Krill index.");
+            System.out.println("Usage: java -jar " + jar
+                               + " [--config propfile] [directories]*");
+            Syste.out.println();
+            System.err.println("  --config|-c    Configuration file");
+            System.err.println("                 (defaults to " +
                                de.ids_mannheim.korap.util.KrillProperties.file +
                                ")");
-            System.err.println("--indexDir|-d    Index directory "+
-                               "(defaults to krill.indexDir in configuration)");
+            System.err.println("  --indexDir|-d  Index directory");
+            System.err.println("                 (defaults to krill.indexDir"+
+                               " in configuration)");
             System.err.println();
             return;
         };
