diff --git a/Changes b/Changes
index 1d5ba51..64087df 100644
--- a/Changes
+++ b/Changes
@@ -6,6 +6,8 @@
 	- [cleanup] Removed deprecated method in KrillIndex:
 	  search() (diewald)
         - [documentation] Refer to KoralQuery instead of Koral (diewald)
+	- [cleanup] Removed deprecated method in KrillCollection:
+	  getCount() (diewald)
 
 0.55.5 2016-05-02
 	- [performance] Changed to a dynamic window for sorting in FocusSpans (margaretha)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index 36e9d5a..50f591a 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -155,6 +155,7 @@
     };
 
 
+    // Create collection from KoralQuery
     private CollectionBuilder.Interface _fromKoral (JsonNode json)
             throws QueryException {
 
@@ -291,14 +292,6 @@
         throw new QueryException(813, "Collection type is not supported");
     };
 
-
-    // Returns the number of filters - always one!
-    @Deprecated
-    public int getCount () {
-        return 1;
-    };
-
-
     /**
      * Set the collection from a {@link CollectionBuilder} object.
      * 
@@ -680,13 +673,6 @@
 
 
     /*
-      @Deprecated
-      public HashMap getTermRelation (String field) throws Exception {
-          return this.getTermRelation(new KrillCollection(this), field);
-      };
-    */
-
-    /*
      * Analyze how terms relate
      */
     /*
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index fb7ae74..0bb3e37 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -443,7 +443,8 @@
                 /*throw new QueryException(765,
                   "Relations are currently not supported");*/
 
-            case "operation:or": // Deprecated in favor of operation:junction
+                // Deprecated in favor of operation:junction
+            case "operation:or":
                 return this._operationJunctionFromJson(operands);
                 /*
                   case "operation:submatch": // Deprecated in favor of koral:reference
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java b/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java
index 0ff48b5..5e15394 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java
@@ -250,7 +250,6 @@
         Krill ks = new Krill(jsonString);
         KrillCollection kc = ks.getCollection();
         kc.setIndex(ki);
-        assertEquals(1, kc.getCount()); // 1 filter operation
         assertEquals(1, kc.numberOf("documents"));
 
         // textClass = reisen
@@ -259,14 +258,9 @@
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
-        assertEquals(1, kc.getCount()); // 1 filter operation
         assertEquals(2, kc.numberOf("documents"));
 
         /*
-        System.err.println(StringUtils.join(fd2.doc.getValues("textClass"), ","));
-        System.err.println(StringUtils.join(fd2.doc.getValues("author"), ", "));
-        */
-        /*
         TokenStream ts = fd2.doc.getField("author").tokenStream(
             (Analyzer) ki.writer().getAnalyzer(),
             (TokenStream) null
@@ -287,7 +281,6 @@
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
-        assertEquals(1, kc.getCount()); // 1 filter operation
         assertEquals(1, kc.numberOf("documents"));
 
         // author = Wolfgang
@@ -296,7 +289,6 @@
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
-        assertEquals(1, kc.getCount()); // 1 filter operation
         assertEquals(1, kc.numberOf("documents"));
 
         Result kr = ks.apply(ki);
