diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index 82b0908..e399264 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -5,7 +5,7 @@
 import de.ids_mannheim.korap.collection.CollectionBuilder;
 import de.ids_mannheim.korap.response.Notifications;
 import de.ids_mannheim.korap.util.QueryException;
-import de.ids_mannheim.korap.util.StatusCode;
+import de.ids_mannheim.korap.util.StatusCodes;
 
 import org.apache.lucene.search.*;
 import org.apache.lucene.index.*;
@@ -87,7 +87,7 @@
             JsonNode json = mapper.readTree(jsonString);
  
             if (json.has("errors") && json.get("errors").size()>0){
-                this.addError(StatusCode.INVALID_QUERY,"Json has errors.");
+                this.addError(StatusCodes.INVALID_QUERY,"Json has errors.");
             }
             else if (json.has("collection")){
                 this.fromKoral(json.get("collection"));
@@ -97,7 +97,7 @@
                         "Collections are not supported anymore in favour of a single collection");
             }
             else{
-                this.addError(StatusCode.MISSING_COLLECTION, "Collection is not found.");
+                this.addError(StatusCodes.MISSING_COLLECTION, "Collection is not found.");
             }
         }
 
diff --git a/src/main/java/de/ids_mannheim/korap/response/Notifications.java b/src/main/java/de/ids_mannheim/korap/response/Notifications.java
index 0d788b3..2f0e582 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Notifications.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Notifications.java
@@ -13,7 +13,7 @@
 import de.ids_mannheim.korap.response.Message;
 import de.ids_mannheim.korap.response.Messages;
 import de.ids_mannheim.korap.util.QueryException;
-import de.ids_mannheim.korap.util.StatusCode;
+import de.ids_mannheim.korap.util.StatusCodes;
 
 /**
  * A unified notification class for KorAP related errors,
@@ -246,7 +246,7 @@
         return this;
     }
     
-    public Notifications addError (StatusCode status, String msg, String ... terms) {
+    public Notifications addError (StatusCodes status, String msg, String ... terms) {
         if (this.errors == null)
             this.errors = new Messages();
         this.errors.add(status.getCode(), msg, terms);
diff --git a/src/main/java/de/ids_mannheim/korap/util/StatusCode.java b/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
similarity index 97%
rename from src/main/java/de/ids_mannheim/korap/util/StatusCode.java
rename to src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
index fda3a86..9816669 100644
--- a/src/main/java/de/ids_mannheim/korap/util/StatusCode.java
+++ b/src/main/java/de/ids_mannheim/korap/util/StatusCodes.java
@@ -1,6 +1,6 @@
 package de.ids_mannheim.korap.util;
 
-public enum StatusCode {
+public enum StatusCodes {
     // 600 - 699 - Krill server error codes
     UNABLE_TO_READ_INDEX(600), 
     UNABLE_TO_FIND_INDEX(601),
@@ -80,7 +80,7 @@
     INVALID_FOUNDRY(970);
 
     private int code;
-    StatusCode (int code) {
+    StatusCodes (int code) {
         this.code = code;
     }
    
