Finally removed legacy collection classes

Change-Id: I05948702b76d14a9024cefa3c7c5882e00cb718a
diff --git a/Changes b/Changes
index fe5d4f3..f6b5eb9 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.53 2015-07-31
+0.53 2015-08-04
         - [feature] Implemented new KrillCollection (diewald)
 	  This should fix a lot of issues with deleted
 	  documents and negation in virtual collections.
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index e026682..0d02b79 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -217,7 +217,8 @@
             }
 
             else if (json.has("collections")) {
-                this.addError(899, "Collections are not supported anymore in favour of a single collection");
+                this.addError(899,
+                        "Collections are not supported anymore in favour of a single collection");
             };
         }
         catch (QueryException q) {
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index ceb6671..14cbec1 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -93,7 +93,8 @@
                 this.fromJson(json.get("collection"));
 
             else if (json.has("collections"))
-                this.addError(899, "Collections are not supported anymore in favour of a single collection");
+                this.addError(899,
+                        "Collections are not supported anymore in favour of a single collection");
         }
 
         // Query Exception
@@ -155,7 +156,8 @@
     };
 
 
-    private CollectionBuilder.Interface _fromJson (JsonNode json) throws QueryException {
+    private CollectionBuilder.Interface _fromJson (JsonNode json)
+            throws QueryException {
 
         if (!json.has("@type")) {
             throw new QueryException(701,
@@ -189,14 +191,14 @@
 
                 // TODO: This isn't stable yet
                 switch (match) {
-                case "match:eq":
-                    return this.cb.date(key, dateStr);
-                case "match:ne":
-                    return this.cb.date(key, dateStr).not();
-                case "match:geq":
-                    return this.cb.since(key, dateStr);
-                case "match:leq":
-                    return this.cb.till(key, dateStr);
+                    case "match:eq":
+                        return this.cb.date(key, dateStr);
+                    case "match:ne":
+                        return this.cb.date(key, dateStr).not();
+                    case "match:geq":
+                        return this.cb.since(key, dateStr);
+                    case "match:leq":
+                        return this.cb.till(key, dateStr);
                 };
 
                 throw new QueryException(841, "Match relation unknown for type");
@@ -209,22 +211,26 @@
 
                 switch (match) {
 
-                case "match:eq":
-                    return this.cb.term(key, json.get("value").asText());
-                case "match:ne":
-                    return this.cb.term(key, json.get("value").asText()).not();
+                    case "match:eq":
+                        return this.cb.term(key, json.get("value").asText());
+                    case "match:ne":
+                        return this.cb.term(key, json.get("value").asText())
+                                .not();
 
-                // This may change - but for now it means the elements are lowercased
-                case "match:contains":
-                    return this.cb.term(key, json.get("value").asText().toLowerCase());
+                        // This may change - but for now it means the elements are lowercased
+                    case "match:contains":
+                        return this.cb.term(key, json.get("value").asText()
+                                .toLowerCase());
 
-                case "match:containsnot":
-                    return this.cb.term(key, json.get("value").asText().toLowerCase()).not();
+                    case "match:containsnot":
+                        return this.cb.term(key,
+                                json.get("value").asText().toLowerCase()).not();
 
-                    // <LEGACY>
-                case "match:excludes":
-                    return this.cb.term(key, json.get("value").asText().toLowerCase()).not();
-                    // </LEGACY>
+                        // <LEGACY>
+                    case "match:excludes":
+                        return this.cb.term(key,
+                                json.get("value").asText().toLowerCase()).not();
+                        // </LEGACY>
                 };
 
                 throw new QueryException(841, "Match relation unknown for type");
@@ -259,21 +265,23 @@
         else if (type.equals("koral:docGroup")) {
 
             if (!json.has("operands") || !json.get("operands").isArray())
-                throw new QueryException(842, "Document group needs operand list");
+                throw new QueryException(842,
+                        "Document group needs operand list");
 
             CollectionBuilder.Group group;
 
             String operation = "operation:and";
             if (json.has("operation"))
-                operation = json.get("operation").asText();            
+                operation = json.get("operation").asText();
 
             if (operation.equals("operation:or"))
                 group = this.cb.orGroup();
             else if (operation.equals("operation:and"))
                 group = this.cb.andGroup();
             else
-                throw new QueryException(810, "Unknown document group operation");
-    
+                throw new QueryException(810,
+                        "Unknown document group operation");
+
             for (JsonNode operand : json.get("operands")) {
                 group.with(this._fromJson(operand));
             };
@@ -282,7 +290,8 @@
 
         // Unknown type
         throw new QueryException(813, "Collection type is not supported");
-    }; 
+    };
+
 
     // Returns the number of filters - always one!
     @Deprecated
@@ -294,13 +303,15 @@
     /**
      * Set the collection from a {@link CollectionBuilder} object.
      * 
-     * @param cb The CollectionBuilder object.
+     * @param cb
+     *            The CollectionBuilder object.
      */
     public KrillCollection fromBuilder (CollectionBuilder.Interface cbi) {
         this.cbi = cbi;
         return this;
     };
 
+
     public CollectionBuilder.Interface getBuilder () {
         return this.cbi;
     };
@@ -310,12 +321,15 @@
         return this.cb;
     };
 
+
     public KrillCollection filter (CollectionBuilder.Interface filter) {
         return this.fromBuilder(this.cb.andGroup().with(this.cbi).with(filter));
     };
 
+
     public KrillCollection extend (CollectionBuilder.Interface extension) {
-        return this.fromBuilder(this.cb.orGroup().with(this.cbi).with(extension));
+        return this.fromBuilder(this.cb.orGroup().with(this.cbi)
+                .with(extension));
     };
 
 
@@ -434,12 +448,13 @@
      * This will respect deleted documents.
      * 
      * @param atomic
-     *           The {@link AtomicReaderContext} to search in.
+     *            The {@link AtomicReaderContext} to search in.
      * @param accepted
      *            {@link Bits} vector of accepted documents.
      * @throws IOException
      */
-    public DocIdSet getDocIdSet (AtomicReaderContext atomic, Bits acceptDocs) throws IOException {
+    public DocIdSet getDocIdSet (AtomicReaderContext atomic, Bits acceptDocs)
+            throws IOException {
 
         int maxDoc = atomic.reader().maxDoc();
         FixedBitSet bitset = new FixedBitSet(maxDoc);
@@ -455,7 +470,8 @@
 
             // Init vector
             DocIdSet docids = filter.getDocIdSet(atomic, null);
-            DocIdSetIterator filterIter = (docids == null) ? null : docids.iterator();
+            DocIdSetIterator filterIter = (docids == null) ? null : docids
+                    .iterator();
 
             if (filterIter == null) {
                 if (!this.cbi.isNegative())
@@ -479,16 +495,16 @@
         };
 
         // Remove deleted docs
-        return (DocIdSet) BitsFilteredDocIdSet.wrap(
-            (DocIdSet) bitset,
-            acceptDocs
-        );
+        return (DocIdSet) BitsFilteredDocIdSet.wrap((DocIdSet) bitset,
+                acceptDocs);
     };
 
+
     public long numberOf (String type) throws IOException {
         return this.numberOf("tokens", type);
     };
 
+
     /**
      * Search for the number of occurrences of different types,
      * e.g. <i>documents</i>, <i>sentences</i> etc. in the virtual
@@ -525,7 +541,7 @@
             else
                 return this.docCount();
         };
-        
+
         // Create search term
         // This may be prefixed by foundries
         Term term = new Term(field, "-:" + type);
@@ -544,10 +560,11 @@
 
                 occurrences += this._numberOfAtomic(bits, atomic, term);
                 if (DEBUG)
-                    log.debug("Added up to {} for {}/{}", occurrences, field, type);
+                    log.debug("Added up to {} for {}/{}", occurrences, field,
+                            type);
             };
         }
-        
+
         // Something went wrong
         catch (IOException e) {
             log.warn(e.getMessage());
@@ -577,11 +594,8 @@
                 // TODO: Reuse a DocsAndPositionsEnum!!
 
                 // Start an iterator to fetch all payloads of the term
-                DocsAndPositionsEnum docs = termsEnum.docsAndPositions(
-                        docvec,
-                        null,
-                        DocsAndPositionsEnum.FLAG_PAYLOADS
-                );
+                DocsAndPositionsEnum docs = termsEnum.docsAndPositions(docvec,
+                        null, DocsAndPositionsEnum.FLAG_PAYLOADS);
 
 
                 // The iterator is empty
@@ -605,17 +619,17 @@
                     // Copy payload with the offset of the BytesRef
                     payload = docs.getPayload();
                     if (payload != null) {
-                        System.arraycopy(payload.bytes, payload.offset, pl, 0, 4);
+                        System.arraycopy(payload.bytes, payload.offset, pl, 0,
+                                4);
 
                         // Add payload as integer
                         occurrences += bb.wrap(pl).getInt();
 
                         if (DEBUG)
-                            log.debug("Value for {} incremented by {} to {} in {}",
-                                      term,
-                                      bb.wrap(pl).getInt(),
-                                      occurrences,
-                                      docs.docID());                    
+                            log.debug(
+                                    "Value for {} incremented by {} to {} in {}",
+                                    term, bb.wrap(pl).getInt(), occurrences,
+                                    docs.docID());
                     };
                 };
 
@@ -626,7 +640,7 @@
 
         // Nothing found
         return 0;
-    };    
+    };
 
 
     /**
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollectionLegacy.java b/src/main/java/de/ids_mannheim/korap/KrillCollectionLegacy.java
deleted file mode 100644
index 17fa1fe..0000000
--- a/src/main/java/de/ids_mannheim/korap/KrillCollectionLegacy.java
+++ /dev/null
@@ -1,937 +0,0 @@
-package de.ids_mannheim.korap;
-
-import java.util.*;
-import java.io.IOException;
-
-import de.ids_mannheim.korap.*;
-import de.ids_mannheim.korap.util.KrillDate;
-import de.ids_mannheim.korap.util.QueryException;
-import de.ids_mannheim.korap.collection.BooleanFilter;
-import de.ids_mannheim.korap.collection.RegexFilter;
-import de.ids_mannheim.korap.collection.FilterOperation;
-import de.ids_mannheim.korap.collection.CollectionBuilderLegacy;
-import de.ids_mannheim.korap.response.Notifications;
-import de.ids_mannheim.korap.response.Result;
-
-import org.apache.lucene.search.spans.SpanQuery;
-import org.apache.lucene.search.*;
-
-import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.util.FixedBitSet;
-import org.apache.lucene.util.Bits;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.io.StringWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Create a Virtual Collection of documents by means of a KoralQuery
- * collection object.
- * Alternatively by applying manual filters and extensions on Lucene
- * fields.
- * 
- * <blockquote><pre>
- * KrillCollectionLegacy kc = new KrillCollectionLegacy(json);
- * kc.filterUIDS("a1", "a2", "a3");
- * </pre></blockquote>
- * 
- * <strong>Warning</strong>: This API is deprecated and will
- * be replaced in future versions. It supports legacy versions of
- * KoralQuery that will be disabled.
- * 
- * @author diewald
- */
-/*
- * TODO: Clean up for new KoralQuery
- * TODO: Make a cache for the bits
- *       Delete it in case of an extension or a filter
- * TODO: Maybe use randomaccessfilterstrategy
- * TODO: Maybe a constantScoreQuery can make things faster?
- * See http://mail-archives.apache.org/mod_mbox/lucene-java-user/
- *     200805.mbox/%3C17080852.post@talk.nabble.com%3E
- */
-public class KrillCollectionLegacy extends Notifications {
-    private KrillIndex index;
-    private KrillDate created;
-    private String id;
-    private ArrayList<FilterOperation> filter;
-    private int filterCount = 0;
-    private JsonNode json;
-
-    // Logger
-    private final static Logger log = LoggerFactory
-            .getLogger(KrillCollection.class);
-
-    // This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = false;
-
-
-    /**
-     * Construct a new KrillCollectionLegacy by passing a KrillIndex.
-     * 
-     * @param index
-     *            The {@link KrillIndex} object.
-     */
-    public KrillCollectionLegacy (KrillIndex index) {
-        this.index = index;
-        this.filter = new ArrayList<FilterOperation>(5);
-    };
-
-
-    /**
-     * Construct a new KrillCollectionLegacy by passing a KoralQuery.
-     * This supports collections with the key "collection" and
-     * legacy collections with the key "collections".
-     * 
-     * @param jsonString
-     *            The virtual collection as a KoralQuery.
-     */
-    public KrillCollectionLegacy (String jsonString) {
-        ObjectMapper mapper = new ObjectMapper();
-        this.filter = new ArrayList<FilterOperation>(5);
-
-        try {
-            JsonNode json = mapper.readTree(jsonString);
-
-            // Deserialize from recent collections
-            if (json.has("collection")) {
-                this.fromJson(json.get("collection"));
-            }
-
-            // Legacy collection serialization
-            // This will be removed!
-            else if (json.has("collections")) {
-                this.addMessage(850,
-                        "Collections are deprecated in favour of a single collection");
-                for (JsonNode collection : json.get("collections")) {
-                    this.fromJsonLegacy(collection);
-                };
-            };
-        }
-        // Some exceptions ...
-        catch (QueryException qe) {
-            this.addError(qe.getErrorCode(), qe.getMessage());
-        }
-        catch (IOException e) {
-            this.addError(621, "Unable to parse JSON", "KrillCollectionLegacy",
-                    e.getLocalizedMessage());
-        };
-    };
-
-
-    /**
-     * Construct a new KrillCollectionLegacy.
-     */
-    public KrillCollectionLegacy () {
-        this.filter = new ArrayList<FilterOperation>(5);
-    };
-
-
-    /**
-     * Import the "collection" part of a KoralQuery.
-     * 
-     * @param jsonString
-     *            The "collection" part of a KoralQuery.
-     * @throws QueryException
-     */
-    public KrillCollectionLegacy fromJson (String jsonString) throws QueryException {
-        ObjectMapper mapper = new ObjectMapper();
-        try {
-            this.fromJson((JsonNode) mapper.readTree(jsonString));
-        }
-        catch (Exception e) {
-            this.addError(621, "Unable to parse JSON", "KrillCollection");
-        };
-
-        return this;
-    };
-
-
-    /**
-     * Import the "collection" part of a KoralQuery.
-     * 
-     * @param json
-     *            The "collection" part of a KoralQuery
-     *            as a {@link JsonNode} object.
-     * @throws QueryException
-     */
-    public KrillCollectionLegacy fromJson (JsonNode json) throws QueryException {
-        this.json = json;
-        this.filter(this._fromJson(json));
-        return this;
-    };
-
-
-    // Create a boolean filter from JSON
-    private BooleanFilter _fromJson (JsonNode json) throws QueryException {
-        return this._fromJson(json, "tokens");
-    };
-
-
-    // Create a booleanfilter from JSON
-    private BooleanFilter _fromJson (JsonNode json, String field)
-            throws QueryException {
-        BooleanFilter bfilter = new BooleanFilter();
-
-        if (!json.has("@type")) {
-            throw new QueryException(701,
-                    "JSON-LD group has no @type attribute");
-        };
-
-        String type = json.get("@type").asText();
-
-        // Single filter
-        if (type.equals("koral:doc")) {
-
-            String key = "tokens";
-            String valtype = "type:string";
-            String match = "match:eq";
-
-            if (json.has("key"))
-                key = json.get("key").asText();
-
-            if (json.has("type"))
-                valtype = json.get("type").asText();
-
-            // Filter based on date
-            if (valtype.equals("type:date")) {
-
-                if (!json.has("value"))
-                    throw new QueryException(612, "Dates require value fields");
-
-                String dateStr = json.get("value").asText();
-                if (json.has("match"))
-                    match = json.get("match").asText();
-
-                // TODO: This isn't stable yet
-                switch (match) {
-                    case "match:eq":
-                        bfilter.date(dateStr);
-                        break;
-                    case "match:geq":
-                        bfilter.since(dateStr);
-                        break;
-                    case "match:leq":
-                        bfilter.till(dateStr);
-                        break;
-                };
-
-                // No good reason for gt or lt
-                return bfilter;
-            }
-
-            // Filter based on string
-            else if (valtype.equals("type:string")) {
-                if (json.has("match"))
-                    match = json.get("match").asText();
-
-                if (match.equals("match:eq")) {
-                    bfilter.and(key, json.get("value").asText());
-                }
-                else if (match.equals("match:ne")) {
-                    bfilter.andNot(key, json.get("value").asText());
-                }
-                // This may change - but for now it means the elements are lowercased
-                else if (match.equals("match:contains")) {
-                    bfilter.and(key, json.get("value").asText().toLowerCase());
-                }
-                else if (match.equals("match:containsnot")) {
-                    bfilter.andNot(key, json.get("value").asText().toLowerCase());
-                }
-                // <LEGACY>
-                else if (match.equals("match:excludes")) {
-                    bfilter.andNot(key, json.get("value").asText().toLowerCase());
-                }
-                // </LEGACY>
-                else {
-                    throw new QueryException(0, "Unknown match type");
-                };
-
-                return bfilter;
-            }
-
-            // Filter based on regex
-            else if (valtype.equals("type:regex")) {
-                if (json.has("match"))
-                    match = json.get("match").asText();
-
-                if (match.equals("match:eq")) {
-                    return bfilter.and(key, new RegexFilter(json.get("value")
-                            .asText()));
-                }
-                else if (match.equals("match:ne")) {
-                    return bfilter.andNot(key, new RegexFilter(json
-                            .get("value").asText()));
-                };
-
-                // TODO! for excludes and contains
-                throw new QueryException(0, "Unknown document type");
-            };
-
-            // TODO!
-            throw new QueryException(0, "Unknown document operation");
-        }
-
-        // nested group
-        else if (type.equals("koral:docGroup")) {
-            if (!json.has("operands") || !json.get("operands").isArray())
-                throw new QueryException(612, "Groups need operands");
-
-            String operation = "operation:and";
-            if (json.has("operation"))
-                operation = json.get("operation").asText();
-
-            BooleanFilter group = new BooleanFilter();
-
-            for (JsonNode operand : json.get("operands")) {
-                if (operation.equals("operation:and"))
-                    group.and(this._fromJson(operand, field));
-
-                else if (operation.equals("operation:or"))
-                    group.or(this._fromJson(operand, field));
-
-                else
-                    throw new QueryException(613,
-                            "Unknown document group operation");
-            };
-            bfilter.and(group);
-            return bfilter;
-        }
-
-        // Unknown type
-        else
-            throw new QueryException(613,
-                    "Collection query type has to be doc or docGroup");
-
-        // return new BooleanFilter();
-    };
-
-
-    /**
-     * Import the "collections" part of a KoralQuery.
-     * This method is deprecated and will vanish in future versions.
-     * 
-     * @param jsonString
-     *            The "collections" part of a KoralQuery.
-     * @throws QueryException
-     */
-    @Deprecated
-    public KrillCollectionLegacy fromJsonLegacy (String jsonString)
-            throws QueryException {
-        ObjectMapper mapper = new ObjectMapper();
-        try {
-            this.fromJsonLegacy((JsonNode) mapper.readValue(jsonString,
-                    JsonNode.class));
-        }
-        catch (Exception e) {
-            this.addError(621, "Unable to parse JSON", "KrillCollection");
-        };
-        return this;
-    };
-
-
-    /**
-     * Import the "collections" part of a KoralQuery.
-     * This method is deprecated and will vanish in future versions.
-     * 
-     * @param json
-     *            The "collections" part of a KoralQuery
-     *            as a {@link JsonNode} object.
-     * @throws QueryException
-     */
-    @Deprecated
-    public KrillCollectionLegacy fromJsonLegacy (JsonNode json) throws QueryException {
-        if (!json.has("@type"))
-            throw new QueryException(701,
-                    "JSON-LD group has no @type attribute");
-
-        if (!json.has("@value"))
-            throw new QueryException(851, "Legacy filter need @value fields");
-
-        BooleanFilter bf = this._fromJsonLegacy(json.get("@value"), "tokens");
-        String type = json.get("@type").asText();
-
-        // Filter the collection
-        if (type.equals("koral:meta-filter")) {
-            if (DEBUG)
-                log.trace("Add Filter LEGACY");
-            this.filter(bf);
-        }
-
-        // Extend the collection
-        else if (type.equals("koral:meta-extend")) {
-            if (DEBUG)
-                log.trace("Add Extend LEGACY");
-            this.extend(bf);
-        };
-
-        return this;
-    };
-
-
-    // Create a boolean filter from a Json string
-    @Deprecated
-    private BooleanFilter _fromJsonLegacy (JsonNode json, String field)
-            throws QueryException {
-        BooleanFilter bfilter = new BooleanFilter();
-
-        if (!json.has("@type"))
-            throw new QueryException(612,
-                    "JSON-LD group has no @type attribute");
-
-        String type = json.get("@type").asText();
-
-        if (DEBUG)
-            log.trace("@type: " + type);
-
-        if (json.has("@field"))
-            field = _getFieldLegacy(json);
-
-        if (type.equals("koral:term")) {
-            if (field != null && json.has("@value"))
-                bfilter.and(field, json.get("@value").asText());
-            return bfilter;
-        }
-        else if (type.equals("koral:group")) {
-            if (!json.has("relation"))
-                throw new QueryException(612, "Group needs relation");
-
-            if (!json.has("operands"))
-                throw new QueryException(612, "Group needs operand list");
-
-            String dateStr, till;
-            JsonNode operands = json.get("operands");
-
-            if (!operands.isArray())
-                throw new QueryException(612, "Group needs operand list");
-
-            if (DEBUG)
-                log.trace("relation found {}", json.get("relation").asText());
-
-            BooleanFilter group = new BooleanFilter();
-
-            switch (json.get("relation").asText()) {
-                case "between":
-                    dateStr = _getDateLegacy(json, 0);
-                    till = _getDateLegacy(json, 1);
-                    if (dateStr != null && till != null)
-                        bfilter.between(dateStr, till);
-                    break;
-
-                case "until":
-                    dateStr = _getDateLegacy(json, 0);
-                    if (dateStr != null)
-                        bfilter.till(dateStr);
-                    break;
-
-                case "since":
-                    dateStr = _getDateLegacy(json, 0);
-                    if (dateStr != null)
-                        bfilter.since(dateStr);
-                    break;
-
-                case "equals":
-                    dateStr = _getDateLegacy(json, 0);
-                    if (dateStr != null)
-                        bfilter.date(dateStr);
-                    break;
-
-                case "and":
-                    if (operands.size() < 1)
-                        throw new QueryException(612,
-                                "Operation needs at least two operands");
-
-                    for (JsonNode operand : operands) {
-                        group.and(this._fromJsonLegacy(operand, field));
-                    }
-                    ;
-                    bfilter.and(group);
-                    break;
-
-                case "or":
-                    if (operands.size() < 1)
-                        throw new QueryException(612,
-                                "Operation needs at least two operands");
-
-                    for (JsonNode operand : operands) {
-                        group.or(this._fromJsonLegacy(operand, field));
-                    }
-                    ;
-                    bfilter.and(group);
-                    break;
-
-                default:
-                    throw new QueryException(613, "Relation is not supported");
-            };
-        }
-        else {
-            throw new QueryException(613,
-                    "Filter type is not a supported group");
-        };
-        return bfilter;
-    };
-
-
-    /**
-     * Set the {@link KrillIndex} the virtual collection refers to.
-     * 
-     * @param index
-     *            The {@link KrillIndex} the virtual collection refers
-     *            to.
-     */
-    public void setIndex (KrillIndex index) {
-        this.index = index;
-    };
-
-
-    /**
-     * Add a filter by means of a {@link BooleanFilter}.
-     * 
-     * <strong>Warning</strong>: Filters are part of the collections
-     * legacy API and may vanish without warning.
-     * 
-     * @param filter
-     *            The filter to add to the collection.
-     * @return The {@link KrillCollectionLegacy} object for chaining.
-     */
-    // TODO: The checks may not be necessary
-    public KrillCollectionLegacy filter (BooleanFilter filter) {
-        if (DEBUG)
-            log.trace("Added filter: {}", filter.toString());
-
-        if (filter == null) {
-            this.addWarning(830, "Filter was empty");
-            return this;
-        };
-
-        Filter f = (Filter) new QueryWrapperFilter(filter.toQuery());
-        if (f == null) {
-            this.addWarning(831, "Filter is not wrappable");
-            return this;
-        };
-        FilterOperation fo = new FilterOperation(f, false);
-        if (fo == null) {
-            this.addWarning(832, "Filter operation is invalid");
-            return this;
-        };
-        this.filter.add(fo);
-        this.filterCount++;
-        return this;
-    };
-
-
-    /**
-     * Add a filter by means of a {@link CollectionBuilderLegacy} object.
-     * 
-     * <strong>Warning</strong>: Filters are part of the collections
-     * legacy API and may vanish without warning.
-     * 
-     * @param filter
-     *            The filter to add to the collection.
-     * @return The {@link KrillCollectionLegacy} object for chaining.
-     */
-    public KrillCollectionLegacy filter (CollectionBuilderLegacy filter) {
-        return this.filter(filter.getBooleanFilter());
-    };
-
-
-    /**
-     * Add an extension by means of a {@link BooleanFilter}.
-     * 
-     * <strong>Warning</strong>: Extensions are part of the
-     * collections
-     * legacy API and may vanish without warning.
-     * 
-     * @param extension
-     *            The extension to add to the collection.
-     * @return The {@link KrillCollectionLegacy} object for chaining.
-     */
-    public KrillCollectionLegacy extend (BooleanFilter extension) {
-        if (DEBUG)
-            log.trace("Added extension: {}", extension.toString());
-
-        this.filter.add(new FilterOperation((Filter) new QueryWrapperFilter(
-                extension.toQuery()), true));
-        this.filterCount++;
-        return this;
-    };
-
-
-    /**
-     * Add an extension by means of a {@link CollectionBuilderLegacy}
-     * object.
-     * 
-     * <strong>Warning</strong>: Extensions are part of the
-     * collections
-     * legacy API and may vanish without warning.
-     * 
-     * @param extension
-     *            The extension to add to the collection.
-     * @return The {@link KrillCollectionLegacy} object for chaining.
-     */
-    public KrillCollectionLegacy extend (CollectionBuilderLegacy extension) {
-        return this.extend(extension.getBooleanFilter());
-    };
-
-
-    /**
-     * Add a filter based on a list of unique document identifiers.
-     * UIDs may be indexed in the field "UID".
-     * 
-     * This filter is not part of the legacy API!
-     * 
-     * @param uids
-     *            The list of unique document identifier.
-     * @return The {@link KrillCollectionLegacy} object for chaining.
-     */
-    public KrillCollectionLegacy filterUIDs (String ... uids) {
-        BooleanFilter filter = new BooleanFilter();
-        filter.or("UID", uids);
-        if (DEBUG)
-            log.debug("UID based filter: {}", filter.toString());
-        return this.filter(filter);
-    };
-
-
-    /**
-     * Get the list of filters constructing the collection.
-     * 
-     * <strong>Warning</strong>: This is part of the collections
-     * legacy API and may vanish without warning.
-     * 
-     * @return The list of filters.
-     */
-    public List<FilterOperation> getFilters () {
-        return this.filter;
-    };
-
-
-    /**
-     * Get a certain {@link FilterOperation} from the list of filters
-     * constructing the collection by its numerical index.
-     * 
-     * <strong>Warning</strong>: This is part of the collections
-     * legacy API and may vanish without warning.
-     * 
-     * @param index
-     *            The index position of the requested
-     *            {@link FilterOperation}.
-     * @return The {@link FilterOperation} at the certain list
-     *         position.
-     */
-    public FilterOperation getFilter (int index) {
-        return this.filter.get(index);
-    };
-
-
-    /**
-     * Get the number of filter operations constructing this
-     * collection.
-     * 
-     * <strong>Warning</strong>: This is part of the collections
-     * legacy API and may vanish without warning.
-     * 
-     * @return The number of filter operations constructing this
-     *         collection.
-     */
-    public int getCount () {
-        return this.filterCount;
-    };
-
-
-    /**
-     * Generate a string representatio of the virtual collection.
-     * 
-     * <strong>Warning</strong>: This currently does not generate a
-     * valid
-     * KoralQuery string, so this may change in a future version.
-     * 
-     * @return A string representation of the virtual collection.
-     */
-    public String toString () {
-        StringBuilder sb = new StringBuilder();
-        for (FilterOperation fo : this.filter) {
-            sb.append(fo.toString()).append("; ");
-        };
-        return sb.toString();
-    };
-
-
-    /**
-     * Return the associated KoralQuery collection object
-     * as a {@link JsonNode}. This won't work,
-     * if the object was build using a CollectionBuilderLegacy,
-     * therefore it is limited to mirror a deserialized KoralQuery
-     * object.
-     * 
-     * @return The {@link JsonNode} representing the collection object
-     *         of a deserialized KoralQuery object.
-     */
-    public JsonNode toJsonNode () {
-        return this.json;
-    };
-
-
-
-    /**
-     * Search in the virtual collection.
-     * This is mostly used for testing purposes
-     * and <strong>is not recommended</strong>
-     * as a common search API.
-     * 
-     * Please use {@link KrillQuery#run} instead.
-     * 
-     * @param query
-     *            a {@link SpanQuery} to apply on the
-     *            virtual collection.
-     * @return A {@link Result} object representing the search's
-     *         result.
-     */
-    public Result search (SpanQuery query) {
-        /*
-return this.index.search(this, query, 0, (short) 20, true, (short) 5,
-                true, (short) 5);
-        */
-        return null;
-    };
-
-
-    /**
-     * Create a bit vector representing the live documents of the
-     * virtual collection to be used in searches.
-     * 
-     * @param The
-     *            {@link AtomicReaderContext} to search in.
-     * @return A bit vector representing the live documents of the
-     *         virtual collection.
-     * @throws IOException
-     */
-    public FixedBitSet bits (AtomicReaderContext atomic) throws IOException {
-        // TODO: Probably use Bits.MatchAllBits(int len)
-        boolean noDoc = true;
-        FixedBitSet bitset;
-
-        // There are filters set
-        if (this.filterCount > 0) {
-            bitset = new FixedBitSet(atomic.reader().maxDoc());
-
-            ArrayList<FilterOperation> filters = (ArrayList<FilterOperation>) this.filter
-                    .clone();
-
-            FilterOperation kcInit = filters.remove(0);
-            if (DEBUG)
-                log.trace("FILTER: {}", kcInit);
-
-            // Init vector
-            DocIdSet docids = kcInit.filter.getDocIdSet(atomic, null);
-
-            DocIdSetIterator filterIter = docids.iterator();
-
-            // The filter has an effect
-            if (filterIter != null) {
-                if (DEBUG)
-                    log.trace("InitFilter has effect");
-                bitset.or(filterIter);
-                noDoc = false;
-            };
-
-            // Apply all filters sequentially
-            for (FilterOperation kc : filters) {
-                if (DEBUG)
-                    log.trace("FILTER: {}", kc);
-
-                // TODO: BUG???
-                docids = kc.filter.getDocIdSet(atomic, kc.isExtension() ? null
-                        : bitset);
-                filterIter = docids.iterator();
-
-                if (filterIter == null) {
-                    // There must be a better way ...
-                    if (kc.isFilter()) {
-                        // TODO: Check if this is really correct!
-                        // Maybe here is the bug
-                        bitset.clear(0, bitset.length());
-                        noDoc = true;
-                    };
-                    continue;
-                };
-                if (kc.isExtension())
-                    bitset.or(filterIter);
-                else
-                    bitset.and(filterIter);
-            };
-
-            if (!noDoc) {
-                FixedBitSet livedocs = (FixedBitSet) atomic.reader()
-                        .getLiveDocs();
-                if (livedocs != null)
-                    bitset.and(livedocs);
-            };
-        }
-        else {
-            bitset = (FixedBitSet) atomic.reader().getLiveDocs();
-        };
-
-        return bitset;
-    };
-
-
-    /**
-     * Search for the number of occurrences of different types,
-     * e.g. <i>documents</i>, <i>sentences</i> etc. in the virtual
-     * collection.
-     * 
-     * @param field
-     *            The field containing the textual data and the
-     *            annotations as a string.
-     * @param type
-     *            The type of meta information,
-     *            e.g. <i>documents</i> or <i>sentences</i> as a
-     *            string.
-     * @return The number of the occurrences.
-     * @throws IOException
-     * @see KrillIndex#numberOf
-     */
-    public long numberOf (String field, String type) throws IOException {
-        if (this.index == null)
-            return (long) -1;
-
-        // return this.index.numberOf(this, field, type);
-        return (long) 0;
-    };
-
-
-    /**
-     * Search for the number of occurrences of different types,
-     * e.g. <i>documents</i>, <i>sentences</i> etc. in the virtual
-     * collection, in the <i>base</i> foundry.
-     * 
-     * @param type
-     *            The type of meta information,
-     *            e.g. <i>documents</i> or <i>sentences</i> as a
-     *            string.
-     * @return The number of the occurrences.
-     * @throws IOException
-     * @see KrillIndex#numberOf
-     */
-    public long numberOf (String type) throws IOException {
-        if (this.index == null)
-            return (long) -1;
-
-        // return this.index.numberOf(this, "tokens", type);
-        return (long) 0;
-    };
-
-
-    // Term relation API is not in use anymore
-    /*
-    @Deprecated
-    public HashMap getTermRelation (String field) throws Exception {
-        if (this.index == null) {
-            HashMap<String, Long> map = new HashMap<>(1);
-            map.put("-docs", (long) 0);
-            return map;
-        };
-
-        return this.index.getTermRelation(this, field);
-    };
-    */
-
-
-    // Term relation API is not in use anymore
-    /*
-    @Deprecated
-    public String getTermRelationJSON (String field) throws IOException {
-        ObjectMapper mapper = new ObjectMapper();
-        StringWriter sw = new StringWriter();
-        sw.append("{\"field\":");
-        mapper.writeValue(sw, field);
-        sw.append(",");
-
-        try {
-            HashMap<String, Long> map = this.getTermRelation(field);
-
-            sw.append("\"documents\":");
-            mapper.writeValue(sw, map.remove("-docs"));
-            sw.append(",");
-
-            String[] keys = map.keySet().toArray(new String[map.size()]);
-
-            HashMap<String, Integer> setHash = new HashMap<>(20);
-            ArrayList<HashMap<String, Long>> set = new ArrayList<>(20);
-            ArrayList<Long[]> overlap = new ArrayList<>(100);
-
-            int count = 0;
-            for (String key : keys) {
-                if (!key.startsWith("#__")) {
-                    HashMap<String, Long> simpleMap = new HashMap<>();
-                    simpleMap.put(key, map.remove(key));
-                    set.add(simpleMap);
-                    setHash.put(key, count++);
-                };
-            };
-
-            keys = map.keySet().toArray(new String[map.size()]);
-            for (String key : keys) {
-                String[] comb = key.substring(3).split(":###:");
-                Long[] l = new Long[3];
-                l[0] = (long) setHash.get(comb[0]);
-                l[1] = (long) setHash.get(comb[1]);
-                l[2] = map.remove(key);
-                overlap.add(l);
-            };
-
-            sw.append("\"sets\":");
-            mapper.writeValue(sw, (Object) set);
-            sw.append(",\"overlaps\":");
-            mapper.writeValue(sw, (Object) overlap);
-            sw.append(",\"error\":null");
-        }
-        catch (Exception e) {
-            sw.append("\"error\":");
-            mapper.writeValue(sw, e.getMessage());
-        };
-
-        sw.append("}");
-        return sw.getBuffer().toString();
-    };
-    */
-
-    // Get legacy field
-    @Deprecated
-    private static String _getFieldLegacy (JsonNode json) {
-        if (!json.has("@field"))
-            return (String) null;
-
-        String field = json.get("@field").asText();
-        return field.replaceFirst("koral:field#", "");
-    };
-
-
-    // Get legacy date
-    @Deprecated
-    private static String _getDateLegacy (JsonNode json, int index) {
-        if (!json.has("operands"))
-            return (String) null;
-
-        if (!json.get("operands").has(index))
-            return (String) null;
-
-        JsonNode date = json.get("operands").get(index);
-
-        if (!date.has("@type"))
-            return (String) null;
-
-        if (!date.get("@type").asText().equals("koral:date"))
-            return (String) null;
-
-        if (!date.has("@value"))
-            return (String) null;
-
-        return date.get("@value").asText();
-    };
-};
diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index c1c0c00..7dc25ee 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -218,8 +218,7 @@
         analyzerPerField.put("keywords", new KeywordAnalyzer());
         analyzerPerField.put("foundries", new KeywordAnalyzer());
         PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(
-          new TextAnalyzer(), analyzerPerField
-        );
+                new TextAnalyzer(), analyzerPerField);
 
         // Create configuration with base analyzer
         this.config = new IndexWriterConfig(Version.LUCENE_CURRENT, analyzer);
@@ -430,9 +429,7 @@
         if (field == null || term == null)
             return false;
         try {
-            this.writer().deleteDocuments(
-                new Term(field, term)
-            );
+            this.writer().deleteDocuments(new Term(field, term));
             if (++commitCounter > autoCommit) {
                 this.commit();
                 commitCounter = 0;
@@ -1011,7 +1008,7 @@
                         field);
 
                 HashSet<String> fields = (HashSet<String>) new Krill()
-                    .getMeta().getFields().clone();
+                        .getMeta().getFields().clone();
 
                 fields.add(field);
 
@@ -1025,8 +1022,7 @@
                 match.populateDocument(doc, field, fields);
                 if (DEBUG)
                     log.trace("The document has the id '{}' or the sigle '{}'",
-                              match.getDocID(),
-                              match.getTextSigle());
+                            match.getDocID(), match.getTextSigle());
 
                 // Todo:
                 SearchContext context = match.getContext();
@@ -1034,7 +1030,8 @@
                 // Search for minimal surrounding sentences
                 if (extendToSentence) {
 
-                    String element = (match.getTextSigle() == null ? "s" : "base/s:s");
+                    String element = (match.getTextSigle() == null ? "s"
+                            : "base/s:s");
 
                     // SUPPORT FOR LEGACY ANNOTATIONS
                     int[] spanContext = match.expandContextToSpan(element);
@@ -1043,8 +1040,7 @@
                         log.trace("Extend to sentence element '{}'", element);
 
                     // </legacy>
-                    if (spanContext[0] >= 0 &&
-                        spanContext[0] < spanContext[1]) {
+                    if (spanContext[0] >= 0 && spanContext[0] < spanContext[1]) {
                         match.setStartPos(spanContext[0]);
                         match.setEndPos(spanContext[1]);
                         match.startMore = false;
@@ -1222,7 +1218,7 @@
         // Todo: Make kr subclassing ks - so ks has a method for a new Result!
         Result kr = new Result(query.toString(), meta.getStartIndex(),
                 meta.getCount(), meta.getContext());
-        
+
         // Set version info to result
         if (this.getVersion() != null)
             kr.setVersion(this.getVersion());
@@ -1350,8 +1346,8 @@
                     int docID = atomic.docBase + localDocID;
 
                     // Do not load all of this, in case the doc is the same!
-                    Document doc = (fields != null) ? lreader.document(localDocID, fields) :
-                        lreader.document(localDocID);
+                    Document doc = (fields != null) ? lreader.document(
+                            localDocID, fields) : lreader.document(localDocID);
 
                     // Create new Match
                     Match match = new Match(pto, localDocID, spans.start(),
@@ -1451,6 +1447,7 @@
         return kr;
     };
 
+
     public void getFields () {
         /*
          * Return a map of key, value pairs:
@@ -1460,10 +1457,12 @@
          */
     };
 
+
     public void getValues (String field) {
 
     };
 
+
     // Collect matches
     public MatchCollector collect (Krill ks, MatchCollector mc) {
         if (DEBUG)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 72fc389..07a3c3b 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -399,39 +399,39 @@
 
         // Branch on operation
         switch (operation) {
-        case "operation:junction":
-            return this._operationJunctionFromJson(operands);
+            case "operation:junction":
+                return this._operationJunctionFromJson(operands);
 
-        case "operation:position":
-            return this._operationPositionFromJson(json, operands);
+            case "operation:position":
+                return this._operationPositionFromJson(json, operands);
 
-        case "operation:sequence":
-            return this._operationSequenceFromJson(json, operands);
+            case "operation:sequence":
+                return this._operationSequenceFromJson(json, operands);
 
-        case "operation:class":
-            return this._operationClassFromJson(json, operands);
+            case "operation:class":
+                return this._operationClassFromJson(json, operands);
 
-        case "operation:repetition":
-            return this._operationRepetitionFromJson(json, operands);
+            case "operation:repetition":
+                return this._operationRepetitionFromJson(json, operands);
 
-        case "operation:relation":
-            if (!json.has("relation")) {
-                throw new QueryException(717, "Missing relation node");
-            }
+            case "operation:relation":
+                if (!json.has("relation")) {
+                    throw new QueryException(717, "Missing relation node");
+                }
 
-            return _operationRelationFromJson(operands,
-                                              json.get("relation"));
-            /*throw new QueryException(765,
-              "Relations are currently not supported");*/
+                return _operationRelationFromJson(operands,
+                        json.get("relation"));
+                /*throw new QueryException(765,
+                  "Relations are currently not supported");*/
 
-        case "operation:or": // Deprecated in favor of operation:junction
-            return this._operationJunctionFromJson(operands);
-            /*
-              case "operation:submatch": // Deprecated in favor of koral:reference
-              return this._operationSubmatchFromJson(json, operands);
-            */
-        case "operation:disjunction":
-            return this._operationJunctionFromJson(operands);
+            case "operation:or": // Deprecated in favor of operation:junction
+                return this._operationJunctionFromJson(operands);
+                /*
+                  case "operation:submatch": // Deprecated in favor of koral:reference
+                  return this._operationSubmatchFromJson(json, operands);
+                */
+            case "operation:disjunction":
+                return this._operationJunctionFromJson(operands);
         };
 
         // Unknown
diff --git a/src/main/java/de/ids_mannheim/korap/collection/BooleanFilter.java b/src/main/java/de/ids_mannheim/korap/collection/BooleanFilter.java
deleted file mode 100644
index 19693c6..0000000
--- a/src/main/java/de/ids_mannheim/korap/collection/BooleanFilter.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import java.util.*;
-
-import org.apache.lucene.index.Term;
-
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.RegexpQuery;
-import org.apache.lucene.search.NumericRangeQuery;
-
-import de.ids_mannheim.korap.util.KrillDate;
-import de.ids_mannheim.korap.KrillCollection;
-import de.ids_mannheim.korap.util.QueryException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/*
-  THIS IS LIMITED TO PUBDATE AT THE MOMENT AND COMPLETELY LEGACY!
-*/
-
-/**
- * @author Nils Diewald
- * 
- *         BooleanFilter implements a simple API for boolean
- *         operations
- *         on constraints for KorapFilter.
- */
-public class BooleanFilter {
-    private String type;
-
-    // Logger
-    private final static Logger log = LoggerFactory
-            .getLogger(KrillCollection.class);
-
-    // This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = false;
-
-    private BooleanQuery bool;
-    private String error;
-
-
-    public BooleanFilter () {
-        bool = new BooleanQuery();
-    };
-
-
-    public BooleanFilter or (String type, String ... terms) {
-        for (String term : terms) {
-
-            if (DEBUG)
-                log.trace("Filter: OR {}={}", type, term);
-
-            bool.add(new TermQuery(new Term(type, term)),
-                    BooleanClause.Occur.SHOULD);
-        };
-        return this;
-    };
-
-
-    public BooleanFilter or (String type, RegexFilter value) {
-        bool.add(value.toQuery(type), BooleanClause.Occur.SHOULD);
-        return this;
-    };
-
-
-    public BooleanFilter or (BooleanFilter bf) {
-        if (bf.bool.clauses().size() == 1) {
-            BooleanClause bc = bf.bool.getClauses()[0];
-            bc.setOccur(BooleanClause.Occur.SHOULD);
-            bool.add(bc);
-            return this;
-        }
-        bool.add(bf.toQuery(), BooleanClause.Occur.SHOULD);
-        return this;
-    };
-
-
-    public BooleanFilter or (NumericRangeQuery<Integer> nrq) {
-        bool.add(nrq, BooleanClause.Occur.SHOULD);
-        return this;
-    };
-
-
-    public BooleanFilter and (String type, String ... terms) {
-        for (String term : terms) {
-            bool.add(new TermQuery(new Term(type, term)),
-                    BooleanClause.Occur.MUST);
-        };
-        return this;
-    };
-
-
-    public BooleanFilter and (String type, RegexFilter value) {
-        bool.add(value.toQuery(type), BooleanClause.Occur.MUST);
-        return this;
-    };
-
-
-    public BooleanFilter and (BooleanFilter bf) {
-        if (bf.bool.clauses().size() == 1) {
-            BooleanClause bc = bf.bool.getClauses()[0];
-            bc.setOccur(BooleanClause.Occur.MUST);
-            bool.add(bc);
-            return this;
-        }
-        bool.add(bf.toQuery(), BooleanClause.Occur.MUST);
-        return this;
-    };
-
-
-    public BooleanFilter andNot (String type, String ... terms) {
-        for (String term : terms) {
-            bool.add(new TermQuery(new Term(type, term)),
-                    BooleanClause.Occur.MUST_NOT);
-        };
-        return this;
-    };
-
-
-    public BooleanFilter andNot (String type, RegexFilter value) {
-        bool.add(value.toQuery(type), BooleanClause.Occur.MUST_NOT);
-        return this;
-    };
-
-
-    public BooleanFilter andNot (BooleanFilter bf) {
-        if (bf.bool.clauses().size() == 1) {
-            BooleanClause bc = bf.bool.getClauses()[0];
-            bc.setOccur(BooleanClause.Occur.MUST_NOT);
-            bool.add(bc);
-            return this;
-        }
-        bool.add(bf.toQuery(), BooleanClause.Occur.MUST_NOT);
-        return this;
-    };
-
-
-    public BooleanFilter since (String dateStr) {
-        int since = new KrillDate(dateStr).floor();
-
-        if (since == 0 || since == KrillDate.BEGINNING)
-            return this;
-
-        bool.add(NumericRangeQuery.newIntRange("pubDate", since, KrillDate.END,
-                true, true), BooleanClause.Occur.MUST);
-
-        return this;
-    };
-
-
-    public BooleanFilter till (String dateStr) {
-        try {
-            int till = new KrillDate(dateStr).ceil();
-            if (till == 0 || till == KrillDate.END)
-                return this;
-
-            bool.add(NumericRangeQuery.newIntRange("pubDate",
-                    KrillDate.BEGINNING, till, true, true),
-                    BooleanClause.Occur.MUST);
-        }
-        catch (NumberFormatException e) {
-            log.warn("Parameter of till(date) is invalid");
-        };
-        return this;
-    };
-
-
-    public BooleanFilter between (String beginStr, String endStr) {
-        KrillDate beginDF = new KrillDate(beginStr);
-
-        int begin = beginDF.floor();
-
-        int end = new KrillDate(endStr).ceil();
-
-        if (end == 0)
-            return this;
-
-        if (begin == KrillDate.BEGINNING && end == KrillDate.END)
-            return this;
-
-        if (begin == end) {
-            this.and("pubDate", beginDF.toString());
-            return this;
-        };
-
-        this.bool.add(NumericRangeQuery.newIntRange("pubDate", begin, end,
-                true, true), BooleanClause.Occur.MUST);
-        return this;
-    };
-
-
-    public BooleanFilter date (String dateStr) {
-        KrillDate dateDF = new KrillDate(dateStr);
-
-        if (dateDF.year == 0)
-            return this;
-
-        if (dateDF.day == 0 || dateDF.month == 0) {
-            int begin = dateDF.floor();
-            int end = dateDF.ceil();
-
-            if (end == 0
-                    || (begin == KrillDate.BEGINNING && end == KrillDate.END))
-                return this;
-
-            this.bool.add(NumericRangeQuery.newIntRange("pubDate", begin, end,
-                    true, true), BooleanClause.Occur.MUST);
-            return this;
-        };
-
-        this.and("pubDate", dateDF.toString());
-        return this;
-    };
-
-
-    public Query toQuery () {
-        return this.bool;
-    };
-
-
-    public String toString () {
-        return this.bool.toString();
-    };
-};
diff --git a/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java b/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
index 60c4ebb..53b0b66 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/BooleanGroupFilter.java
@@ -20,17 +20,19 @@
 /**
  * A container Filter that allows Boolean composition of Filters
  * in groups (either or-groups or and-groups).
- *
+ * 
  * @author Nils Diewald
- *
- * This filter is roughly based on org.apache.lucene.queries.BooleanFilter.
+ * 
+ *         This filter is roughly based on
+ *         org.apache.lucene.queries.BooleanFilter.
  */
 public class BooleanGroupFilter extends Filter {
     // Group is either an or- or an and-Group
     private boolean isOptional;
 
     // Logger
-    private final static Logger log = LoggerFactory.getLogger(KrillCollection.class);
+    private final static Logger log = LoggerFactory
+            .getLogger(KrillCollection.class);
 
     // This advices the java compiler to ignore all loggings
     public static final boolean DEBUG = false;
@@ -43,6 +45,7 @@
         public Filter filter;
         public boolean isNegative;
 
+
         // Operand has filter and negativity information
         public GroupFilterOperand (Filter filter, boolean negative) {
             this.filter = filter;
@@ -50,6 +53,7 @@
         };
     };
 
+
     /**
      * Create a new BooleanGroupFilter.
      * Accepts a boolean parameter to make it an or-Group
@@ -82,7 +86,7 @@
     public boolean equals (Object obj) {
         if (this == obj)
             return true;
-        
+
         if ((obj == null) || (obj.getClass() != this.getClass()))
             return false;
 
@@ -92,16 +96,15 @@
 
 
     @Override
-    public int hashCode() {
+    public int hashCode () {
         return 657153719 ^ operands.hashCode();
     };
 
-    
+
     @Override
     public String toString () {
-        StringBuilder buffer = new StringBuilder(
-            this.isOptional ? "OrGroup(" : "AndGroup("
-        );
+        StringBuilder buffer = new StringBuilder(this.isOptional ? "OrGroup("
+                : "AndGroup(");
         boolean first = true;
         for (final GroupFilterOperand operand : this.operands) {
             if (first)
@@ -117,12 +120,13 @@
         return buffer.append(')').toString();
     };
 
-  
+
     @Override
-    public DocIdSet getDocIdSet (AtomicReaderContext context, Bits acceptDocs) throws IOException {
+    public DocIdSet getDocIdSet (AtomicReaderContext context, Bits acceptDocs)
+            throws IOException {
         final AtomicReader reader = context.reader();
         int maxDoc = reader.maxDoc();
-        FixedBitSet bitset     = new FixedBitSet(maxDoc);
+        FixedBitSet bitset = new FixedBitSet(maxDoc);
         FixedBitSet combinator = new FixedBitSet(maxDoc);
         boolean init = true;
 
@@ -131,17 +135,18 @@
 
         for (final GroupFilterOperand operand : this.operands) {
             final DocIdSet docids = operand.filter.getDocIdSet(context, null);
-            final DocIdSetIterator filterIter = (docids == null) ? null : docids.iterator();
+            final DocIdSetIterator filterIter = (docids == null) ? null
+                    : docids.iterator();
 
             if (DEBUG)
                 log.debug("> Filter to bitset of {} ({} negative)",
-                          operand.filter.toString(),
-                          operand.isNegative);
+                        operand.filter.toString(), operand.isNegative);
 
             // Filter resulted in no docs
             if (filterIter == null) {
 
-                if (DEBUG) log.debug("- Filter is null");
+                if (DEBUG)
+                    log.debug("- Filter is null");
 
                 // Filter matches
                 if (operand.isNegative) {
@@ -150,25 +155,29 @@
                     if (this.isOptional) {
 
                         // Everything is allowed
-                        if (DEBUG) log.debug("- Filter to allow all documents");
+                        if (DEBUG)
+                            log.debug("- Filter to allow all documents");
 
                         bitset.set(0, maxDoc);
                         return BitsFilteredDocIdSet.wrap(bitset, acceptDocs);
                     };
 
                     // There is no possible match
-                    if (DEBUG) log.debug("- Filter to allow no documents (1)");
+                    if (DEBUG)
+                        log.debug("- Filter to allow no documents (1)");
                     return null;
                 }
 
                 // The result is unimportant
                 else if (this.isOptional) {
-                    if (DEBUG) log.debug("- Filter is ignorable");
+                    if (DEBUG)
+                        log.debug("- Filter is ignorable");
                     continue;
                 };
 
                 // There is no possible match
-                if (DEBUG) log.debug("- Filter to allow no documents (2)");
+                if (DEBUG)
+                    log.debug("- Filter to allow no documents (2)");
                 return null;
             }
 
@@ -177,30 +186,40 @@
 
                 bitset.or(filterIter);
 
-                if (DEBUG) log.debug("- Filter is inial with card {}", bitset.cardinality());
+                if (DEBUG)
+                    log.debug("- Filter is inial with card {}",
+                            bitset.cardinality());
 
                 // Flip the matching documents
                 if (operand.isNegative) {
                     bitset.flip(0, maxDoc);
-                    if (DEBUG) log.debug("- Filter is negative - so flipped to card {} (1)", bitset.cardinality());
+                    if (DEBUG)
+                        log.debug(
+                                "- Filter is negative - so flipped to card {} (1)",
+                                bitset.cardinality());
                 };
 
                 init = false;
             }
             else {
 
-                if (DEBUG) log.debug("- Filter is fine and operating");
+                if (DEBUG)
+                    log.debug("- Filter is fine and operating");
 
                 // Operator is negative and needs to be flipped
                 if (operand.isNegative) {
                     if (this.isOptional) {
-                    if (DEBUG) log.debug("- Filter is negative optional");
+                        if (DEBUG)
+                            log.debug("- Filter is negative optional");
 
                         // Negative or ... may be slow
                         combinator.or(filterIter);
                         combinator.flip(0, maxDoc);
 
-                        if (DEBUG) log.debug("- Filter is negative - so flipped to card {} (2)", combinator.cardinality());
+                        if (DEBUG)
+                            log.debug(
+                                    "- Filter is negative - so flipped to card {} (2)",
+                                    combinator.cardinality());
 
                         bitset.or(combinator);
                         combinator.clear(0, maxDoc);
@@ -208,22 +227,27 @@
 
                     // Negative and
                     else {
-                        if (DEBUG) log.debug("- Filter is negative not optional");
+                        if (DEBUG)
+                            log.debug("- Filter is negative not optional");
                         bitset.andNot(filterIter);
-                        if (DEBUG) log.debug("- Filter is negative - so andNotted");
+                        if (DEBUG)
+                            log.debug("- Filter is negative - so andNotted");
                     }
                 }
                 else if (this.isOptional) {
-                    if (DEBUG) log.debug("- Filter is simply optional");
+                    if (DEBUG)
+                        log.debug("- Filter is simply optional");
                     bitset.or(filterIter);
                 }
                 else {
-                    if (DEBUG) log.debug("- Filter is simply not optional");
+                    if (DEBUG)
+                        log.debug("- Filter is simply not optional");
                     bitset.and(filterIter);
                     // TODO: Check with nextSetBit() if the filter is not applicable
                 };
 
-                if (DEBUG) log.debug("- Subresult has card {} ", bitset.cardinality());
+                if (DEBUG)
+                    log.debug("- Subresult has card {} ", bitset.cardinality());
             };
         };
         return BitsFilteredDocIdSet.wrap(bitset, acceptDocs);
diff --git a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java b/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
index 836aaa1..350d852 100644
--- a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
+++ b/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilder.java
@@ -25,19 +25,23 @@
 public class CollectionBuilder {
 
     // Logger
-    private final static Logger log = LoggerFactory.getLogger(KrillCollection.class);
+    private final static Logger log = LoggerFactory
+            .getLogger(KrillCollection.class);
 
     // This advices the java compiler to ignore all loggings
     public static final boolean DEBUG = false;
 
+
     public CollectionBuilder.Interface term (String field, String term) {
         return new CollectionBuilder.Term(field, term);
     };
 
+
     public CollectionBuilder.Interface re (String field, String term) {
         return new CollectionBuilder.Term(field, term, true);
     };
 
+
     public CollectionBuilder.Interface since (String field, String date) {
         int since = new KrillDate(date).floor();
 
@@ -47,6 +51,7 @@
         return new CollectionBuilder.Range(field, since, KrillDate.END);
     };
 
+
     public CollectionBuilder.Interface till (String field, String date) {
         try {
             int till = new KrillDate(date).ceil();
@@ -61,8 +66,10 @@
         return null;
     };
 
+
     // This will be optimized away in future versions
-    public CollectionBuilder.Interface between (String field, String start, String end) {
+    public CollectionBuilder.Interface between (String field, String start,
+            String end) {
         CollectionBuilder.Interface startObj = this.since(field, start);
         if (startObj == null)
             return null;
@@ -74,6 +81,7 @@
         return this.andGroup().with(startObj).with(endObj);
     };
 
+
     public CollectionBuilder.Interface date (String field, String date) {
         KrillDate dateDF = new KrillDate(date);
 
@@ -85,7 +93,7 @@
             int end = dateDF.ceil();
 
             if (end == 0
-                || (begin == KrillDate.BEGINNING && end == KrillDate.END))
+                    || (begin == KrillDate.BEGINNING && end == KrillDate.END))
                 return null;
 
             return new CollectionBuilder.Range(field, begin, end);
@@ -94,18 +102,26 @@
         return new CollectionBuilder.Range(field, dateDF.floor(), dateDF.ceil());
     };
 
+
     public CollectionBuilder.Group andGroup () {
         return new CollectionBuilder.Group(false);
     };
 
+
     public CollectionBuilder.Group orGroup () {
         return new CollectionBuilder.Group(true);
     };
 
     public interface Interface {
         public String toString ();
+
+
         public Filter toFilter ();
+
+
         public boolean isNegative ();
+
+
         public CollectionBuilder.Interface not ();
     };
 
@@ -115,28 +131,33 @@
         private String field;
         private String term;
 
+
         public Term (String field, String term) {
             this.field = field;
             this.term = term;
         };
 
+
         public Term (String field, String term, boolean regex) {
             this.field = field;
             this.term = term;
             this.regex = regex;
         };
 
+
         public Filter toFilter () {
             // Regular expression
             if (this.regex)
                 return new QueryWrapperFilter(
-                    new RegexpQuery(new org.apache.lucene.index.Term(this.field, this.term))
-                );
-            
+                        new RegexpQuery(new org.apache.lucene.index.Term(
+                                this.field, this.term)));
+
             // Simple term
-            return new TermsFilter(new org.apache.lucene.index.Term(this.field, this.term));
+            return new TermsFilter(new org.apache.lucene.index.Term(this.field,
+                    this.term));
         };
 
+
         public String toString () {
             Filter filter = this.toFilter();
             if (filter == null)
@@ -144,6 +165,7 @@
             return filter.toString();
         };
 
+
         public boolean isNegative () {
             return this.isNegative;
         };
@@ -159,21 +181,25 @@
         private boolean isOptional = false;
         private boolean isNegative = true;
 
+
         public boolean isNegative () {
             return this.isNegative;
         };
 
+
         public boolean isOptional () {
             return this.isOptional;
         };
 
         private ArrayList<CollectionBuilder.Interface> operands;
 
+
         public Group (boolean optional) {
             this.isOptional = optional;
             this.operands = new ArrayList<CollectionBuilder.Interface>(3);
         };
 
+
         public Group with (CollectionBuilder.Interface cb) {
             if (cb == null)
                 return this;
@@ -184,12 +210,14 @@
             return this;
         };
 
+
         public Group with (String field, String term) {
             if (field == null || term == null)
                 return this;
             return this.with(new CollectionBuilder.Term(field, term));
         };
 
+
         public Filter toFilter () {
             if (this.operands == null || this.operands.isEmpty())
                 return null;
@@ -214,6 +242,7 @@
             return bool;
         };
 
+
         public String toString () {
             Filter filter = this.toFilter();
             if (filter == null)
@@ -221,6 +250,7 @@
             return filter.toString();
         };
 
+
         public CollectionBuilder.Interface not () {
             this.isNegative = true;
             return this;
@@ -232,16 +262,19 @@
         private String field;
         private int start, end;
 
+
         public Range (String field, int start, int end) {
             this.field = field;
             this.start = start;
             this.end = end;
         };
 
+
         public boolean isNegative () {
             return this.isNegative;
         };
 
+
         public String toString () {
             Filter filter = this.toFilter();
             if (filter == null)
@@ -249,14 +282,13 @@
             return filter.toString();
         };
 
+
         public Filter toFilter () {
-            return NumericRangeFilter.newIntRange(this.field,
-                                                  this.start,
-                                                  this.end,
-                                                  true,
-                                                  true);
+            return NumericRangeFilter.newIntRange(this.field, this.start,
+                    this.end, true, true);
         };
 
+
         public CollectionBuilder.Interface not () {
             this.isNegative = true;
             return this;
diff --git a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilderLegacy.java b/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilderLegacy.java
deleted file mode 100644
index 37fa50f..0000000
--- a/src/main/java/de/ids_mannheim/korap/collection/CollectionBuilderLegacy.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import de.ids_mannheim.korap.collection.BooleanFilter;
-import de.ids_mannheim.korap.collection.RegexFilter;
-import de.ids_mannheim.korap.util.QueryException;
-import de.ids_mannheim.korap.util.KrillDate;
-
-import org.apache.lucene.search.Query;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.JsonNode;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * CollectionBuilderLegacy implements a simple API for creating queries
- * constituing Virtual Collections.
- * 
- * <strong>Warning</strong>: The API is likely to change.
- * 
- * @author diewald
- */
-/*
- * Todo: WildCardFilter!
- * Todo: Support delete boolean etc.
- * Todo: Supports foundries
- */
-public class CollectionBuilderLegacy {
-    private BooleanFilter filter;
-    private String field = "tokens";
-
-    // Logger
-    private final static Logger log = LoggerFactory
-            .getLogger(CollectionBuilder.class);
-
-    // This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = false;
-
-
-    /**
-     * Construct a new CollectionBuilderLegacy object.
-     */
-    public CollectionBuilderLegacy () {
-        filter = new BooleanFilter();
-    };
-
-
-    public BooleanFilter and (String type, String ... terms) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.and(type, terms);
-        return bf;
-    };
-
-
-    public BooleanFilter or (String type, String ... terms) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.or(type, terms);
-        return bf;
-    };
-
-
-    public BooleanFilter and (String type, RegexFilter re) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.and(type, re);
-        return bf;
-    };
-
-
-    public BooleanFilter or (String type, RegexFilter re) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.or(type, re);
-        return bf;
-    };
-
-
-    public BooleanFilter since (String date) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.since(date);
-        return bf;
-    };
-
-
-    public BooleanFilter till (String date) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.till(date);
-        return bf;
-    };
-
-
-    public BooleanFilter date (String date) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.date(date);
-        return bf;
-    };
-
-
-    public BooleanFilter between (String date1, String date2) {
-        BooleanFilter bf = new BooleanFilter();
-        bf.between(date1, date2);
-        return bf;
-    };
-
-
-    public RegexFilter re (String regex) {
-        return new RegexFilter(regex);
-    };
-
-
-    public BooleanFilter getBooleanFilter () {
-        return this.filter;
-    };
-
-
-    public void setBooleanFilter (BooleanFilter bf) {
-        this.filter = bf;
-    };
-
-
-    public Query toQuery () {
-        return this.filter.toQuery();
-    };
-
-
-    public String toString () {
-        return this.filter.toQuery().toString();
-    };
-};
diff --git a/src/main/java/de/ids_mannheim/korap/collection/FilterOperation.java b/src/main/java/de/ids_mannheim/korap/collection/FilterOperation.java
deleted file mode 100644
index 5d3be07..0000000
--- a/src/main/java/de/ids_mannheim/korap/collection/FilterOperation.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import org.apache.lucene.search.Filter;
-
-public class FilterOperation {
-    private boolean extension;
-    public Filter filter;
-
-
-    public FilterOperation (Filter filter, boolean extension) {
-        this.extension = extension;
-        this.filter = filter;
-    };
-
-
-    public boolean isExtension () {
-        return this.extension;
-    };
-
-
-    public boolean isFilter () {
-        return !(this.extension);
-    };
-
-
-    @Override
-    public Object clone () throws CloneNotSupportedException {
-        return (Object) new FilterOperation(this.filter, this.extension);
-    };
-
-
-    @Override
-    public String toString () {
-        StringBuilder sb = new StringBuilder();
-        if (this.extension) {
-            sb.append("extend with ");
-        }
-        else {
-            sb.append("filter with ");
-        };
-        sb.append(this.filter.toString());
-        return sb.toString();
-    };
-};
diff --git a/src/main/java/de/ids_mannheim/korap/collection/RegexFilter.java b/src/main/java/de/ids_mannheim/korap/collection/RegexFilter.java
deleted file mode 100644
index c948dab..0000000
--- a/src/main/java/de/ids_mannheim/korap/collection/RegexFilter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import java.util.*;
-
-import org.apache.lucene.search.RegexpQuery;
-import org.apache.lucene.index.Term;
-
-/**
- * @author Nils Diewald
- * 
- *         RegexFilter implements a helper object for
- *         regular expressions used in KrillCollection
- *         constraints.
- */
-
-public class RegexFilter {
-    String regex;
-
-
-    public RegexFilter (String regex) {
-        this.regex = regex;
-    };
-
-
-    public RegexpQuery toQuery (String field) {
-        return new RegexpQuery(new Term(field, this.regex));
-    };
-};
diff --git a/src/main/java/de/ids_mannheim/korap/index/KeywordAnalyzer.java b/src/main/java/de/ids_mannheim/korap/index/KeywordAnalyzer.java
index e20af6f..0725778 100644
--- a/src/main/java/de/ids_mannheim/korap/index/KeywordAnalyzer.java
+++ b/src/main/java/de/ids_mannheim/korap/index/KeywordAnalyzer.java
@@ -10,10 +10,11 @@
 
 public class KeywordAnalyzer extends Analyzer {
 
-  @Override
-  protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) {
-    final Tokenizer source = new WhitespaceTokenizer(reader);
-    TokenStream sink = new LowerCaseFilter(source);
-    return new TokenStreamComponents(source, sink);
-  };
+    @Override
+    protected TokenStreamComponents createComponents (final String fieldName,
+            final Reader reader) {
+        final Tokenizer source = new WhitespaceTokenizer(reader);
+        TokenStream sink = new LowerCaseFilter(source);
+        return new TokenStreamComponents(source, sink);
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/index/TextAnalyzer.java b/src/main/java/de/ids_mannheim/korap/index/TextAnalyzer.java
index bca39b5..771c6c1 100644
--- a/src/main/java/de/ids_mannheim/korap/index/TextAnalyzer.java
+++ b/src/main/java/de/ids_mannheim/korap/index/TextAnalyzer.java
@@ -10,10 +10,11 @@
 
 public class TextAnalyzer extends Analyzer {
 
-  @Override
-  protected TokenStreamComponents createComponents (final String fieldName, final Reader reader) {
-    final Tokenizer source = new StandardTokenizer(reader);
-    TokenStream sink = new LowerCaseFilter(source);
-    return new TokenStreamComponents(source, sink);
-  };
+    @Override
+    protected TokenStreamComponents createComponents (final String fieldName,
+            final Reader reader) {
+        final Tokenizer source = new StandardTokenizer(reader);
+        TokenStream sink = new LowerCaseFilter(source);
+        return new TokenStreamComponents(source, sink);
+    };
 };
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index b324ffc..617f07a 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -374,7 +374,7 @@
         this.addHighlight(new Highlight(target, target, id));
     };
 
-    
+
     /**
      * Populate document meta information with information coming from
      * the index.
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
index b384222..53280c7 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/DocIdentifier.java
@@ -8,8 +8,8 @@
 
 public class DocIdentifier {
     protected String textSigle, // fine
-        corpusID, // LEGACY
-        docID;    // LEGACY
+            corpusID, // LEGACY
+            docID;    // LEGACY
 
 
     // Legacy
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
index f9fdfbe..7ebf161 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
@@ -9,11 +9,9 @@
     private ArrayList<int[]> pos = new ArrayList<>(8);
 
     // TODO: "contains" is necessary for a compatibility bug in Kustvakt
-    Pattern idRegex = Pattern
-        .compile("^(?:match-|contains-)"
-                 + "(?:([^!]+?)[!\\.])?"
-                 + "([^!]+)-p([0-9]+)-([0-9]+)"
-                 + "((?:\\(-?[0-9]+\\)-?[0-9]+--?[0-9]+)*)" + "(?:c.+?)?$");
+    Pattern idRegex = Pattern.compile("^(?:match-|contains-)"
+            + "(?:([^!]+?)[!\\.])?" + "([^!]+)-p([0-9]+)-([0-9]+)"
+            + "((?:\\(-?[0-9]+\\)-?[0-9]+--?[0-9]+)*)" + "(?:c.+?)?$");
     Pattern posRegex = Pattern.compile("\\(([0-9]+)\\)([0-9]+)-([0-9]+)");
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
index 4f7ba16..922792e 100644
--- a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
+++ b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
@@ -11,7 +11,6 @@
 import de.ids_mannheim.korap.KrillQuery;
 import de.ids_mannheim.korap.query.QueryBuilder;
 import org.apache.lucene.store.MMapDirectory;
-import de.ids_mannheim.korap.collection.BooleanFilter;
 import org.apache.lucene.search.spans.SpanQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
 import de.ids_mannheim.korap.util.QueryException;
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilder.java b/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilder.java
index 9dd7baf..27a3dd7 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilder.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilder.java
@@ -20,38 +20,42 @@
     @Test
     public void builderTerm () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("author:tree",
-                     kc.term("author", "tree").toString());
+        assertEquals("author:tree", kc.term("author", "tree").toString());
     };
 
+
     @Test
     public void builderRegex () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
         assertEquals("QueryWrapperFilter(author:/tre*?/)",
-                     kc.re("author", "tre*?").toString());
+                kc.re("author", "tre*?").toString());
     };
 
+
     @Test
     public void builderDateYear () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
         assertEquals("pubDate:[20050000 TO 20059999]",
-                     kc.date("pubDate", "2005").toString());
+                kc.date("pubDate", "2005").toString());
     };
 
+
     @Test
     public void builderDateMonth () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
         assertEquals("pubDate:[20051000 TO 20051099]",
-                     kc.date("pubDate", "2005-10").toString());
+                kc.date("pubDate", "2005-10").toString());
     };
 
+
     @Test
     public void builderDateDay () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
         assertEquals("pubDate:[20051011 TO 20051011]",
-                     kc.date("pubDate", "2005-10-11").toString());
+                kc.date("pubDate", "2005-10-11").toString());
     };
 
+
     @Test
     public void builderDateBorders () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
@@ -59,109 +63,127 @@
         assertNull(kc.date("pubDate", ""));
 
         assertEquals("pubDate:[20051580 TO 20051580]",
-                     kc.date("pubDate", "2005-15-80").toString());
+                kc.date("pubDate", "2005-15-80").toString());
 
         assertNull(kc.date("pubDate", "2005-15-8"));
         assertNull(kc.date("pubDate", "2005-5-18"));
         assertNull(kc.date("pubDate", "200-05-18"));
     };
 
+
     @Test
     public void builderSince () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
         assertEquals("pubDate:[20050000 TO 99999999]",
-                     kc.since("pubDate", "2005").toString());
+                kc.since("pubDate", "2005").toString());
 
         assertEquals("pubDate:[20051000 TO 99999999]",
-                     kc.since("pubDate", "2005-10").toString());
+                kc.since("pubDate", "2005-10").toString());
 
         assertEquals("pubDate:[20051012 TO 99999999]",
-                     kc.since("pubDate", "2005-10-12").toString());
+                kc.since("pubDate", "2005-10-12").toString());
     };
 
 
     @Test
     public void builderTill () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("pubDate:[0 TO 20059999]",
-                     kc.till("pubDate", "2005").toString());
+        assertEquals("pubDate:[0 TO 20059999]", kc.till("pubDate", "2005")
+                .toString());
 
-        assertEquals("pubDate:[0 TO 20051299]",
-                     kc.till("pubDate", "2005-12").toString());
+        assertEquals("pubDate:[0 TO 20051299]", kc.till("pubDate", "2005-12")
+                .toString());
 
-        assertEquals("pubDate:[0 TO 20051204]",
-                     kc.till("pubDate", "2005-12-04").toString());
+        assertEquals("pubDate:[0 TO 20051204]", kc
+                .till("pubDate", "2005-12-04").toString());
     };
 
 
     @Test
     public void builderAndSimple () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("author:tree", kc.andGroup().with(kc.term("author", "tree")).toString());
+        assertEquals("author:tree",
+                kc.andGroup().with(kc.term("author", "tree")).toString());
     };
 
+
     @Test
     public void builderOrSimple () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("author:tree", kc.orGroup().with(kc.term("author", "tree")).toString());
+        assertEquals("author:tree", kc.orGroup()
+                .with(kc.term("author", "tree")).toString());
     };
 
+
     @Test
     public void builderAndCombined () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("AndGroup(author:tree title:name)",
-                     kc.andGroup().with(kc.term("author", "tree"))
-                     .with(kc.term("title", "name")).toString());
+        assertEquals(
+                "AndGroup(author:tree title:name)",
+                kc.andGroup().with(kc.term("author", "tree"))
+                        .with(kc.term("title", "name")).toString());
     };
 
+
     @Test
     public void builderAndNestedSimple () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("AndGroup(author:tree title:name)",
-                     kc.andGroup().with(kc.andGroup().with(kc.term("author", "tree")).with(kc.term("title", "name"))).toString());
+        assertEquals(
+                "AndGroup(author:tree title:name)",
+                kc.andGroup()
+                        .with(kc.andGroup().with(kc.term("author", "tree"))
+                                .with(kc.term("title", "name"))).toString());
     };
 
 
     @Test
     public void builderOrCombined () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("OrGroup(author:tree title:name)",
-                     kc.orGroup().with(kc.term("author", "tree"))
-                     .with(kc.term("title", "name")).toString());
+        assertEquals(
+                "OrGroup(author:tree title:name)",
+                kc.orGroup().with(kc.term("author", "tree"))
+                        .with(kc.term("title", "name")).toString());
     };
 
+
     @Test
     public void builderOrNestedSimple () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        assertEquals("OrGroup(author:tree title:name)",
-                     kc.orGroup().with(kc.orGroup().with(kc.term("author", "tree"))
-                                .with(kc.term("title", "name"))).toString()
-                     );
+        assertEquals(
+                "OrGroup(author:tree title:name)",
+                kc.orGroup()
+                        .with(kc.orGroup().with(kc.term("author", "tree"))
+                                .with(kc.term("title", "name"))).toString());
     };
 
+
     @Test
     public void builderGroups () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        String g = kc.orGroup().with(
-                                     kc.orGroup().with(kc.term("author", "tree1")).with(kc.term("title", "name1"))
-        ).with(
-               kc.andGroup().with(kc.term("author", "tree2")).with(kc.term("title", "name2"))
-               ).toString();
-        assertEquals("OrGroup(OrGroup(author:tree1 title:name1) AndGroup(author:tree2 title:name2))", g);
+        String g = kc
+                .orGroup()
+                .with(kc.orGroup().with(kc.term("author", "tree1"))
+                        .with(kc.term("title", "name1")))
+                .with(kc.andGroup().with(kc.term("author", "tree2"))
+                        .with(kc.term("title", "name2"))).toString();
+        assertEquals(
+                "OrGroup(OrGroup(author:tree1 title:name1) AndGroup(author:tree2 title:name2))",
+                g);
     };
 
+
     @Test
     public void builderNegationRoot () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        CollectionBuilder.Interface kbi = kc.orGroup().with(kc.term("author", "tree1")).with(kc.term("title", "name1"));
-        assertEquals(
-                     "OrGroup(author:tree1 title:name1)",
-                     kbi.toString());
+        CollectionBuilder.Interface kbi = kc.orGroup()
+                .with(kc.term("author", "tree1"))
+                .with(kc.term("title", "name1"));
+        assertEquals("OrGroup(author:tree1 title:name1)", kbi.toString());
         assertFalse(kbi.isNegative());
 
-        kbi = kc.andGroup().with(
-                                 kc.orGroup().with(kc.term("author", "tree1")).with(kc.term("title", "name1"))
-              ).not();
+        kbi = kc.andGroup()
+                .with(kc.orGroup().with(kc.term("author", "tree1"))
+                        .with(kc.term("title", "name1"))).not();
         assertEquals("OrGroup(author:tree1 title:name1)", kbi.toString());
         assertTrue(kbi.isNegative());
     };
@@ -170,8 +192,7 @@
     @Test
     public void builderNegation () throws IOException {
         CollectionBuilder kc = new CollectionBuilder();
-        CollectionBuilder.Interface kbi =
-            kc.term("author", "tree").not();
+        CollectionBuilder.Interface kbi = kc.term("author", "tree").not();
         assertEquals("author:tree", kbi.toString());
         assertTrue(kbi.isNegative());
 
@@ -184,6 +205,7 @@
         assertTrue(kbi.isNegative());
     };
 
+
     // The legacy tests were adopted from the legacy collection builder and reformuated
 
     @Test
@@ -193,14 +215,18 @@
         /*
         assertEquals("+textClass:tree", kf.and("textClass", "tree").toString());
         */
-        assertEquals("textClass:tree", kf.andGroup().with(kf.term("textClass", "tree")).toString());
+        assertEquals("textClass:tree",
+                kf.andGroup().with(kf.term("textClass", "tree")).toString());
 
         /*
         assertEquals("+textClass:tree +textClass:sport",
                 kf.and("textClass", "tree").and("textClass", "sport")
                         .toString());
         */
-        assertEquals("AndGroup(textClass:tree textClass:sport)", kf.andGroup().with(kf.term("textClass", "tree")).with(kf.term("textClass", "sport")).toString());
+        assertEquals(
+                "AndGroup(textClass:tree textClass:sport)",
+                kf.andGroup().with(kf.term("textClass", "tree"))
+                        .with(kf.term("textClass", "sport")).toString());
 
         /*
         assertEquals(
@@ -208,22 +234,34 @@
                 kf.and("textClass", "tree").and("textClass", "sport")
                         .or("textClass", "news").toString());
         */
-        assertEquals("OrGroup(AndGroup(textClass:tree textClass:sport) textClass:news)", kf.orGroup().with(kf.andGroup().with("textClass", "tree").with("textClass", "sport")).with("textClass", "news").toString());
+        assertEquals(
+                "OrGroup(AndGroup(textClass:tree textClass:sport) textClass:news)",
+                kf.orGroup()
+                        .with(kf.andGroup().with("textClass", "tree")
+                                .with("textClass", "sport"))
+                        .with("textClass", "news").toString());
 
         /*
         assertEquals("+textClass:tree +textClass:sport +textClass:news", kf
                 .and("textClass", "tree", "sport", "news").toString());
         */
-        assertEquals("AndGroup(textClass:tree textClass:sport textClass:news)", kf.andGroup().with("textClass", "tree").with("textClass", "sport").with("textClass", "news").toString());
+        assertEquals(
+                "AndGroup(textClass:tree textClass:sport textClass:news)",
+                kf.andGroup().with("textClass", "tree")
+                        .with("textClass", "sport").with("textClass", "news")
+                        .toString());
 
         /*
         assertEquals("corpusID:c-1 corpusID:c-2 corpusID:c-3",
                 kf.or("corpusID", "c-1", "c-2", "c-3").toString());
         */
-        assertEquals("OrGroup(corpusID:c-1 corpusID:c-2 corpusID:c-3)", kf.orGroup().with("corpusID", "c-1").with("corpusID", "c-2").with("corpusID", "c-3").toString());
+        assertEquals("OrGroup(corpusID:c-1 corpusID:c-2 corpusID:c-3)", kf
+                .orGroup().with("corpusID", "c-1").with("corpusID", "c-2")
+                .with("corpusID", "c-3").toString());
 
     };
 
+
     @Test
     public void LegacyRangeExample () throws IOException {
         CollectionBuilder kf = new CollectionBuilder();
@@ -232,27 +270,31 @@
                 kf.between("2003-06-04", "2003-08-99").toString());
         */
         // This will be optimized and probably crash
-        assertEquals("AndGroup(pubDate:[20030604 TO 99999999] pubDate:[0 TO 20030899])", kf.andGroup().with(kf.since("pubDate", "2003-06-04")).with(kf.till("pubDate", "2003-08-99")).toString());
+        assertEquals(
+                "AndGroup(pubDate:[20030604 TO 99999999] pubDate:[0 TO 20030899])",
+                kf.andGroup().with(kf.since("pubDate", "2003-06-04"))
+                        .with(kf.till("pubDate", "2003-08-99")).toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20030604]", kf.till("2003-06-04")
                 .toString());
         */
-        assertEquals("pubDate:[0 TO 20030604]", kf.till("pubDate", "2003-06-04")
-                .toString());
+        assertEquals("pubDate:[0 TO 20030604]", kf
+                .till("pubDate", "2003-06-04").toString());
 
 
         /*
         assertEquals("+pubDate:[20030604 TO 99999999]", kf.since("2003-06-04")
                 .toString());
         */
-        assertEquals("pubDate:[20030604 TO 99999999]", kf.since("pubDate", "2003-06-04")
-                .toString());
+        assertEquals("pubDate:[20030604 TO 99999999]",
+                kf.since("pubDate", "2003-06-04").toString());
 
         /*
         assertEquals("+pubDate:20030604", kf.date("2003-06-04").toString());
         */
-        assertEquals("pubDate:[20030604 TO 20030604]", kf.date("pubDate", "2003-06-04").toString());
+        assertEquals("pubDate:[20030604 TO 20030604]",
+                kf.date("pubDate", "2003-06-04").toString());
     };
 
 
@@ -263,57 +305,66 @@
         assertEquals("+pubDate:[20050000 TO 20099999]",
                 kf.between("2005", "2009").toString());
         */
-        assertEquals("AndGroup(pubDate:[20050000 TO 99999999] pubDate:[0 TO 20099999])",
-                     kf.between("pubDate", "2005", "2009").toString());
+        assertEquals(
+                "AndGroup(pubDate:[20050000 TO 99999999] pubDate:[0 TO 20099999])",
+                kf.between("pubDate", "2005", "2009").toString());
 
         /*
         assertEquals("+pubDate:[20051000 TO 20090899]",
                 kf.between("200510", "200908").toString());
         */
-        assertEquals("AndGroup(pubDate:[20051000 TO 99999999] pubDate:[0 TO 20090899])",
-                     kf.between("pubDate", "200510", "200908").toString());
+        assertEquals(
+                "AndGroup(pubDate:[20051000 TO 99999999] pubDate:[0 TO 20090899])",
+                kf.between("pubDate", "200510", "200908").toString());
 
         /*
         assertEquals("+pubDate:[20051000 TO 20090899]",
                 kf.between("2005-10", "2009-08").toString());
         */
-        assertEquals("AndGroup(pubDate:[20051000 TO 99999999] pubDate:[0 TO 20090899])",
-                     kf.between("pubDate", "2005-10", "2009-08").toString());
+        assertEquals(
+                "AndGroup(pubDate:[20051000 TO 99999999] pubDate:[0 TO 20090899])",
+                kf.between("pubDate", "2005-10", "2009-08").toString());
 
 
         /*
         assertEquals("+pubDate:[20051006 TO 20090803]",
                 kf.between("2005-1006", "2009-0803").toString());
          */
-        assertEquals("AndGroup(pubDate:[20051006 TO 99999999] pubDate:[0 TO 20090803])",
-                     kf.between("pubDate", "2005-1006", "2009-0803").toString());
+        assertEquals(
+                "AndGroup(pubDate:[20051006 TO 99999999] pubDate:[0 TO 20090803])",
+                kf.between("pubDate", "2005-1006", "2009-0803").toString());
 
         /*
         assertEquals("+pubDate:[20051006 TO 20090803]",
                 kf.between("2005-10-06", "2009-08-03").toString());
         */
-        assertEquals("AndGroup(pubDate:[20051006 TO 99999999] pubDate:[0 TO 20090803])",
-                     kf.between("pubDate", "2005-10-06", "2009-08-03").toString());
+        assertEquals(
+                "AndGroup(pubDate:[20051006 TO 99999999] pubDate:[0 TO 20090803])",
+                kf.between("pubDate", "2005-10-06", "2009-08-03").toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20059999]", kf.till("2005").toString());
         */
-        assertEquals("pubDate:[0 TO 20059999]", kf.till("pubDate", "2005").toString());
+        assertEquals("pubDate:[0 TO 20059999]", kf.till("pubDate", "2005")
+                .toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20051099]", kf.till("200510").toString());
         */
-        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "200510").toString());
+        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "200510")
+                .toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20051099]", kf.till("200510").toString());
         */
-        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "200510").toString());
+        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "200510")
+                .toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20051099]", kf.till("2005-10").toString());
         */
-        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "2005-10").toString());
+        assertEquals("pubDate:[0 TO 20051099]", kf.till("pubDate", "2005-10")
+                .toString());
 
         /*
         assertEquals("+pubDate:[0 TO 20051006]", kf.till("2005-1006")
@@ -326,76 +377,78 @@
         assertEquals("+pubDate:[0 TO 20051006]", kf.till("2005-10-06")
                 .toString());
         */
-        assertEquals("pubDate:[0 TO 20051006]", kf.till("pubDate", "2005-10-06")
-                .toString());
+        assertEquals("pubDate:[0 TO 20051006]", kf
+                .till("pubDate", "2005-10-06").toString());
 
         /*
         assertEquals("+pubDate:[20050000 TO 99999999]", kf.since("2005")
                 .toString());
         */
-        assertEquals("pubDate:[20050000 TO 99999999]", kf.since("pubDate", "2005")
-                .toString());
+        assertEquals("pubDate:[20050000 TO 99999999]",
+                kf.since("pubDate", "2005").toString());
 
         /*
         assertEquals("+pubDate:[20051000 TO 99999999]", kf.since("200510")
                 .toString());
         */
-        assertEquals("pubDate:[20051000 TO 99999999]", kf.since("pubDate", "200510")
-                .toString());
+        assertEquals("pubDate:[20051000 TO 99999999]",
+                kf.since("pubDate", "200510").toString());
 
 
         /*
         assertEquals("+pubDate:[20051000 TO 99999999]", kf.since("2005-10")
                 .toString());
         */
-        assertEquals("pubDate:[20051000 TO 99999999]", kf.since("pubDate", "2005-10")
-                .toString());
+        assertEquals("pubDate:[20051000 TO 99999999]",
+                kf.since("pubDate", "2005-10").toString());
 
         /*
         assertEquals("+pubDate:[20051006 TO 99999999]", kf.since("2005-1006")
                 .toString());
         */
-        assertEquals("pubDate:[20051006 TO 99999999]", kf.since("pubDate", "2005-1006")
-                .toString());
+        assertEquals("pubDate:[20051006 TO 99999999]",
+                kf.since("pubDate", "2005-1006").toString());
 
         /*
         assertEquals("+pubDate:[20051006 TO 99999999]", kf.since("2005-10-06")
                 .toString());
         */
-        assertEquals("pubDate:[20051006 TO 99999999]", kf.since("pubDate", "2005-10-06")
-                .toString());
+        assertEquals("pubDate:[20051006 TO 99999999]",
+                kf.since("pubDate", "2005-10-06").toString());
 
         /*
         assertEquals("+pubDate:[20050000 TO 20059999]", kf.date("2005")
                 .toString());
         */
-        assertEquals("pubDate:[20050000 TO 20059999]", kf.date("pubDate", "2005")
-                .toString());
+        assertEquals("pubDate:[20050000 TO 20059999]",
+                kf.date("pubDate", "2005").toString());
 
 
         /*
         assertEquals("+pubDate:[20051000 TO 20051099]", kf.date("200510")
                 .toString());
         */
-        assertEquals("pubDate:[20051000 TO 20051099]", kf.date("pubDate", "200510")
-                .toString());
+        assertEquals("pubDate:[20051000 TO 20051099]",
+                kf.date("pubDate", "200510").toString());
 
         /*
         assertEquals("+pubDate:[20051000 TO 20051099]", kf.date("2005-10")
                 .toString());
         */
-        assertEquals("pubDate:[20051000 TO 20051099]", kf.date("pubDate", "2005-10")
-                .toString());
+        assertEquals("pubDate:[20051000 TO 20051099]",
+                kf.date("pubDate", "2005-10").toString());
 
         /*
         assertEquals("+pubDate:20051006", kf.date("2005-1006").toString());
         */
-        assertEquals("pubDate:[20051006 TO 20051006]", kf.date("pubDate", "2005-1006").toString());
+        assertEquals("pubDate:[20051006 TO 20051006]",
+                kf.date("pubDate", "2005-1006").toString());
 
         /*
         assertEquals("+pubDate:20051006", kf.date("2005-10-06").toString());
         */
-        assertEquals("pubDate:[20051006 TO 20051006]", kf.date("pubDate", "2005-10-06").toString());
+        assertEquals("pubDate:[20051006 TO 20051006]",
+                kf.date("pubDate", "2005-10-06").toString());
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilderLegacy.java b/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilderLegacy.java
deleted file mode 100644
index a52a575..0000000
--- a/src/test/java/de/ids_mannheim/korap/collection/TestCollectionBuilderLegacy.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import java.util.*;
-import java.io.*;
-
-import org.apache.lucene.util.Version;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.Bits;
-
-import static org.junit.Assert.*;
-import org.junit.Test;
-import org.junit.Ignore;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import de.ids_mannheim.korap.collection.CollectionBuilderLegacy;
-
-@RunWith(JUnit4.class)
-public class TestCollectionBuilderLegacy {
-
-    @Test
-    @Ignore
-    public void filterExample () throws IOException {
-        CollectionBuilderLegacy kf = new CollectionBuilderLegacy();
-
-        assertEquals("+textClass:tree", kf.and("textClass", "tree").toString());
-        assertEquals("+textClass:tree +textClass:sport",
-                kf.and("textClass", "tree").and("textClass", "sport")
-                        .toString());
-        assertEquals(
-                "+textClass:tree +textClass:sport textClass:news",
-                kf.and("textClass", "tree").and("textClass", "sport")
-                        .or("textClass", "news").toString());
-        assertEquals("+textClass:tree +textClass:sport +textClass:news", kf
-                .and("textClass", "tree", "sport", "news").toString());
-
-        assertEquals("corpusID:c-1 corpusID:c-2 corpusID:c-3",
-                kf.or("corpusID", "c-1", "c-2", "c-3").toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void rangeExample () throws IOException {
-        CollectionBuilderLegacy kf = new CollectionBuilderLegacy();
-        assertEquals("+pubDate:[20030604 TO 20030899]",
-                kf.between("2003-06-04", "2003-08-99").toString());
-        assertEquals("+pubDate:[0 TO 20030604]", kf.till("2003-06-04")
-                .toString());
-        assertEquals("+pubDate:[20030604 TO 99999999]", kf.since("2003-06-04")
-                .toString());
-        assertEquals("+pubDate:20030604", kf.date("2003-06-04").toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void rangeLimited () throws IOException {
-        CollectionBuilderLegacy kf = new CollectionBuilderLegacy();
-        assertEquals("+pubDate:[20050000 TO 20099999]",
-                kf.between("2005", "2009").toString());
-        assertEquals("+pubDate:[20051000 TO 20090899]",
-                kf.between("200510", "200908").toString());
-        assertEquals("+pubDate:[20051000 TO 20090899]",
-                kf.between("2005-10", "2009-08").toString());
-        assertEquals("+pubDate:[20051006 TO 20090803]",
-                kf.between("2005-1006", "2009-0803").toString());
-        assertEquals("+pubDate:[20051006 TO 20090803]",
-                kf.between("2005-10-06", "2009-08-03").toString());
-
-        assertEquals("+pubDate:[0 TO 20059999]", kf.till("2005").toString());
-        assertEquals("+pubDate:[0 TO 20051099]", kf.till("200510").toString());
-        assertEquals("+pubDate:[0 TO 20051099]", kf.till("2005-10").toString());
-        assertEquals("+pubDate:[0 TO 20051006]", kf.till("2005-1006")
-                .toString());
-        assertEquals("+pubDate:[0 TO 20051006]", kf.till("2005-10-06")
-                .toString());
-
-        assertEquals("+pubDate:[20050000 TO 99999999]", kf.since("2005")
-                .toString());
-        assertEquals("+pubDate:[20051000 TO 99999999]", kf.since("200510")
-                .toString());
-        assertEquals("+pubDate:[20051000 TO 99999999]", kf.since("2005-10")
-                .toString());
-        assertEquals("+pubDate:[20051006 TO 99999999]", kf.since("2005-1006")
-                .toString());
-        assertEquals("+pubDate:[20051006 TO 99999999]", kf.since("2005-10-06")
-                .toString());
-
-        assertEquals("+pubDate:[20050000 TO 20059999]", kf.date("2005")
-                .toString());
-        assertEquals("+pubDate:[20051000 TO 20051099]", kf.date("200510")
-                .toString());
-        assertEquals("+pubDate:[20051000 TO 20051099]", kf.date("2005-10")
-                .toString());
-        assertEquals("+pubDate:20051006", kf.date("2005-1006").toString());
-        assertEquals("+pubDate:20051006", kf.date("2005-10-06").toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void rangeFailure () throws IOException {
-        CollectionBuilderLegacy kf = new CollectionBuilderLegacy();
-        assertEquals("", kf.between("aaaa-bb-cc", "aaaabbcc").toString());
-        assertEquals("", kf.till("aaaa-bb-cc").toString());
-        assertEquals("", kf.since("aaaa-bb-cc").toString());
-        assertEquals("", kf.date("aaaa-bb-cc").toString());
-    };
-};
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index 5fe41bf..932426a 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -1,4 +1,5 @@
 package de.ids_mannheim.korap.collection;
+
 import java.io.IOException;
 
 import de.ids_mannheim.korap.KrillIndex;
@@ -10,7 +11,6 @@
 import de.ids_mannheim.korap.KrillQuery;
 import de.ids_mannheim.korap.query.QueryBuilder;
 
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
@@ -20,8 +20,6 @@
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.search.spans.SpanQuery;
 
-
-
 import static org.junit.Assert.*;
 import org.junit.Test;
 import org.junit.Ignore;
@@ -32,6 +30,7 @@
 public class TestKrillCollectionIndex {
     private KrillIndex ki;
 
+
     @Test
     public void testIndexWithCollectionBuilder () throws IOException {
         ki = new KrillIndex();
@@ -65,47 +64,57 @@
         assertEquals(1, kcn.docCount());
 
         // Simple orGroup tests
-        kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Frank")).with(cb.term("author", "Michael")));
+        kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Frank"))
+                .with(cb.term("author", "Michael")));
         assertEquals(1, kcn.docCount());
 
-        kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Frank")).with(cb.term("author", "Sebastian")));
+        kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Frank"))
+                .with(cb.term("author", "Sebastian")));
         assertEquals(2, kcn.docCount());
 
         kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Frank"))
-                        .with(cb.term("author", "Sebastian"))
-                        .with(cb.term("author", "Peter")));
+                .with(cb.term("author", "Sebastian"))
+                .with(cb.term("author", "Peter")));
         assertEquals(3, kcn.docCount());
 
         kcn.fromBuilder(cb.orGroup().with(cb.term("author", "Huhu"))
-                        .with(cb.term("author", "Haha"))
-                        .with(cb.term("author", "Hehe")));
+                .with(cb.term("author", "Haha"))
+                .with(cb.term("author", "Hehe")));
         assertEquals(0, kcn.docCount());
 
         // Multi field orGroup tests
-        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1")).with(cb.term("author", "Peter")));
+        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1"))
+                .with(cb.term("author", "Peter")));
         assertEquals(2, kcn.docCount());
 
-        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1")).with(cb.term("author", "Frank")));
+        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1"))
+                .with(cb.term("author", "Frank")));
         assertEquals(1, kcn.docCount());
 
-        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1")).with(cb.term("author", "Michael")));
+        kcn.fromBuilder(cb.orGroup().with(cb.term("ID", "doc-1"))
+                .with(cb.term("author", "Michael")));
         assertEquals(1, kcn.docCount());
 
         // Simple andGroup tests
-        kcn.fromBuilder(cb.andGroup().with(cb.term("author", "Frank")).with(cb.term("author", "Michael")));
+        kcn.fromBuilder(cb.andGroup().with(cb.term("author", "Frank"))
+                .with(cb.term("author", "Michael")));
         assertEquals(0, kcn.docCount());
 
-        kcn.fromBuilder(cb.andGroup().with(cb.term("ID", "doc-1")).with(cb.term("author", "Frank")));
+        kcn.fromBuilder(cb.andGroup().with(cb.term("ID", "doc-1"))
+                .with(cb.term("author", "Frank")));
         assertEquals(1, kcn.docCount());
 
         // andGroup in keyword field test
-        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "reisen")).with(cb.term("textClass", "finanzen")));
+        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "reisen"))
+                .with(cb.term("textClass", "finanzen")));
         assertEquals(1, kcn.docCount());
 
-        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "reisen")).with(cb.term("textClass", "kultur")));
+        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "reisen"))
+                .with(cb.term("textClass", "kultur")));
         assertEquals(2, kcn.docCount());
 
-        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "finanzen")).with(cb.term("textClass", "kultur")));
+        kcn.fromBuilder(cb.andGroup().with(cb.term("textClass", "finanzen"))
+                .with(cb.term("textClass", "kultur")));
         assertEquals(0, kcn.docCount());
 
         kcn.fromBuilder(cb.term("text", "mann"));
@@ -115,6 +124,7 @@
         assertEquals(1, kcn.docCount());
     };
 
+
     @Test
     public void testIndexWithNegation () throws IOException {
         ki = new KrillIndex();
@@ -136,18 +146,17 @@
         assertEquals(1, kcn.docCount());
 
         // orGroup with simple Negation
-        kcn.fromBuilder(
-          cb.orGroup().with(cb.term("textClass", "kultur").not()).with(cb.term("author", "Peter"))
-        );
+        kcn.fromBuilder(cb.orGroup().with(cb.term("textClass", "kultur").not())
+                .with(cb.term("author", "Peter")));
         assertEquals(2, kcn.docCount());
 
-        kcn.fromBuilder(
-          cb.orGroup().with(cb.term("textClass", "kultur").not()).with(cb.term("author", "Sebastian"))
-        );
+        kcn.fromBuilder(cb.orGroup().with(cb.term("textClass", "kultur").not())
+                .with(cb.term("author", "Sebastian")));
         assertEquals(1, kcn.docCount());
-        
+
     };
 
+
     @Test
     public void testIndexWithMultipleCommitsAndDeletes () throws IOException {
         ki = new KrillIndex();
@@ -206,6 +215,7 @@
         assertEquals(3, kcn.docCount());
     };
 
+
     @Test
     public void testIndexStream () throws IOException {
         ki = new KrillIndex();
@@ -215,8 +225,8 @@
         Analyzer ana = new TextAnalyzer();
         TokenStream ts = fd.doc.getField("text").tokenStream(ana, null);
 
-        CharTermAttribute charTermAttribute =
-            ts.addAttribute(CharTermAttribute.class);
+        CharTermAttribute charTermAttribute = ts
+                .addAttribute(CharTermAttribute.class);
         ts.reset();
 
         ts.incrementToken();
@@ -235,6 +245,7 @@
         assertEquals("straße", charTermAttribute.toString());
     };
 
+
     @Test
     public void testIndexWithDateRanges () throws IOException {
         ki = new KrillIndex();
@@ -353,7 +364,9 @@
                 "freizeit-unterhaltung"));
         */
 
-        kc.fromBuilder(kc.build().andGroup().with(kc.build().term("textClass", "reisen")).with(kc.build().term("textClass", "freizeit-unterhaltung")));
+        kc.fromBuilder(kc.build().andGroup()
+                .with(kc.build().term("textClass", "reisen"))
+                .with(kc.build().term("textClass", "freizeit-unterhaltung")));
 
         assertEquals("Documents", 5, kc.numberOf("documents"));
         assertEquals("Tokens", 1678, kc.numberOf("tokens"));
@@ -393,7 +406,8 @@
         QueryBuilder kq = new QueryBuilder("tokens");
         SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
 
-        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true, (short) 5);
+        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true,
+                (short) 5);
         assertEquals(kr.getTotalResults(), 70);
 
 
@@ -444,7 +458,9 @@
         kc.filter(kf.and("textClass", "reisen").and("textClass",
                 "freizeit-unterhaltung"));
         */
-        kc.filter(kc.build().andGroup().with(kc.build().term("textClass", "reisen")).with(kc.build().term("textClass", "freizeit-unterhaltung")));
+        kc.filter(kc.build().andGroup()
+                .with(kc.build().term("textClass", "reisen"))
+                .with(kc.build().term("textClass", "freizeit-unterhaltung")));
 
         assertEquals("Documents", 5, kc.numberOf("documents"));
         assertEquals("Tokens", 1678, kc.numberOf("tokens"));
@@ -474,7 +490,8 @@
         QueryBuilder kq = new QueryBuilder("tokens");
         SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
 
-        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true, (short) 5);
+        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true,
+                (short) 5);
         assertEquals(kr.getTotalResults(), 70);
 
         // kc.extend(kf.and("textClass", "uninteresting"));
@@ -514,6 +531,7 @@
         assertEquals("Paragraphs", 48, kc.numberOf("paragraphs"));
     };
 
+
     @Test
     public void filterExample2Legacy () throws Exception {
 
@@ -544,7 +562,8 @@
 
         KrillCollection kc = new KrillCollection(ki);
         CollectionBuilder cb = kc.build();
-        kc.filter(cb.andGroup().with(cb.term("textClass", "reisen")).with(cb.term("textClass","freizeit-unterhaltung")));
+        kc.filter(cb.andGroup().with(cb.term("textClass", "reisen"))
+                .with(cb.term("textClass", "freizeit-unterhaltung")));
 
         assertEquals("Documents", 5, kc.numberOf("documents"));
         assertEquals("Tokens", 1678, kc.numberOf("tokens"));
@@ -557,7 +576,8 @@
         SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
 
 
-        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true, (short) 5);
+        Result kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true,
+                (short) 5);
         assertEquals(kr.getTotalResults(), 369);
 
         // kc.filter(kf.and("corpusID", "QQQ"));
@@ -568,7 +588,8 @@
         assertEquals("Sentences", 0, kc.numberOf("sentences"));
         assertEquals("Paragraphs", 0, kc.numberOf("paragraphs"));
 
-        kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true, (short) 5);
+        kr = ki.search(kc, query, 0, (short) 20, true, (short) 5, true,
+                (short) 5);
         assertEquals(kr.getTotalResults(), 0);
     };
 
@@ -612,6 +633,7 @@
         assertEquals((long) 39, kr.getTotalResults());
     };
 
+
     @Test
     public void uidCollectionWithDeletions () throws IOException {
 
@@ -665,6 +687,7 @@
         return fd;
     };
 
+
     private FieldDocument createDoc2 () {
         FieldDocument fd = new FieldDocument();
         fd.addString("ID", "doc-2");
@@ -675,6 +698,7 @@
         return fd;
     };
 
+
     private FieldDocument createDoc3 () {
         FieldDocument fd = new FieldDocument();
         fd.addString("ID", "doc-3");
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
index a504bf2..2736722 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
@@ -29,8 +29,7 @@
     public void collection1 () {
         String metaQuery = _getJSONString("collection_1.jsonld");
         KrillCollection kc = new KrillCollection(metaQuery);
-        assertEquals(kc.toString(),
-                "pubDate:[20000101 TO 20000101]");
+        assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
     };
 
 
@@ -55,7 +54,8 @@
     public void collection5 () {
         String metaQuery = _getJSONString("collection_5.jsonld");
         KrillCollection kc = new KrillCollection(metaQuery);
-        assertEquals(kc.toString(), "OrGroup(pubDate:[19900000 TO 99999999] title:Mannheim)");
+        assertEquals(kc.toString(),
+                "OrGroup(pubDate:[19900000 TO 99999999] title:Mannheim)");
     };
 
 
@@ -66,8 +66,8 @@
         assertFalse(ks.hasErrors());
         assertFalse(ks.hasWarnings());
         assertFalse(ks.hasMessages());
-        assertEquals("QueryWrapperFilter(author:/Goethe/)", ks
-                .getCollection().toString());
+        assertEquals("QueryWrapperFilter(author:/Goethe/)", ks.getCollection()
+                .toString());
     };
 
 
@@ -78,8 +78,8 @@
         assertFalse(ks.hasErrors());
         assertFalse(ks.hasWarnings());
         assertFalse(ks.hasMessages());
-        assertEquals("-QueryWrapperFilter(author:/Goethe/)", ks
-                .getCollection().toString());
+        assertEquals("-QueryWrapperFilter(author:/Goethe/)", ks.getCollection()
+                .toString());
     };
 
 
@@ -90,8 +90,7 @@
         assertFalse(ks.hasErrors());
         assertFalse(ks.hasWarnings());
         assertFalse(ks.hasMessages());
-        assertEquals("-author:Goethe", ks
-                .getCollection().toString());
+        assertEquals("-author:Goethe", ks.getCollection().toString());
     };
 
 
@@ -166,9 +165,12 @@
         */
 
         // This will and should fail on optimization
-        assertEquals("OrGroup(AndGroup(textClass:wissenschaft AndGroup(pubPlace:Erfurt author:Hesse)) AndGroup(AndGroup(pubDate:[20110429 TO 99999999] pubDate:[0 TO 20131231]) textClass:freizeit))", kc.toString());
+        assertEquals(
+                "OrGroup(AndGroup(textClass:wissenschaft AndGroup(pubPlace:Erfurt author:Hesse)) AndGroup(AndGroup(pubDate:[20110429 TO 99999999] pubDate:[0 TO 20131231]) textClass:freizeit))",
+                kc.toString());
     };
 
+
     @Test
     public void metaQuery2Legacy () {
         String metaQuery = getString(getClass().getResource(
@@ -180,7 +182,8 @@
                 "filter with QueryWrapperFilter(+(+author:Hesse +pubDate:[0 TO 20131205]))",
                 kc.getFilter(0).toString());
         */
-        assertEquals("AndGroup(author:Hesse pubDate:[0 TO 20131205])", kc.toString());
+        assertEquals("AndGroup(author:Hesse pubDate:[0 TO 20131205])",
+                kc.toString());
     };
 
 
@@ -196,7 +199,9 @@
                      "filter with QueryWrapperFilter(+(+pubDate:[20000101 TO 99999999] +pubDate:[0 TO 20131231]))",
                 kc.getFilter(0).toString());
         */
-        assertEquals("AndGroup(pubDate:[20000101 TO 99999999] pubDate:[0 TO 20131231])", kc.toString());
+        assertEquals(
+                "AndGroup(pubDate:[20000101 TO 99999999] pubDate:[0 TO 20131231])",
+                kc.toString());
     };
 
 
@@ -215,7 +220,9 @@
                 kc.getFilter(1).toString());
         */
         // TODO: This is subject to optimization and may change in further versions
-        assertEquals("AndGroup(OrGroup(corpusID:c-1 corpusID:c-2) AndGroup(corpusID:d-1 corpusID:d-2))", kc.toString());
+        assertEquals(
+                "AndGroup(OrGroup(corpusID:c-1 corpusID:c-2) AndGroup(corpusID:d-1 corpusID:d-2))",
+                kc.toString());
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSONLegacy.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSONLegacy.java
deleted file mode 100644
index d9a8cff..0000000
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSONLegacy.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import java.util.*;
-import java.io.*;
-
-import de.ids_mannheim.korap.KrillCollectionLegacy;
-
-import static de.ids_mannheim.korap.TestSimple.*;
-
-import static org.junit.Assert.*;
-import org.junit.Test;
-import org.junit.Ignore;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class TestKrillCollectionJSONLegacy {
-
-    @Test
-    @Ignore
-    public void metaQuery1 () {
-        String metaQuery = getString(getClass().getResource(
-                "/queries/metaquery.jsonld").getFile());
-        KrillCollectionLegacy kc = new KrillCollectionLegacy(metaQuery);
-
-        assertEquals("filter with QueryWrapperFilter(+textClass:wissenschaft)",
-                kc.getFilter(0).toString());
-        assertEquals(
-                "filter with QueryWrapperFilter(+(+pubPlace:Erfurt +author:Hesse))",
-                kc.getFilter(1).toString());
-        assertEquals(
-                "extend with QueryWrapperFilter(+(+pubDate:[20110429 TO 20131231] +textClass:freizeit))",
-                kc.getFilter(2).toString());
-        assertEquals(3, kc.getCount());
-    };
-
-
-    @Test
-    @Ignore
-    public void metaQuery2 () {
-        String metaQuery = getString(getClass().getResource(
-                "/queries/metaquery2.jsonld").getFile());
-        KrillCollectionLegacy kc = new KrillCollectionLegacy(metaQuery);
-        assertEquals(1, kc.getCount());
-        assertEquals(
-                "filter with QueryWrapperFilter(+(+author:Hesse +pubDate:[0 TO 20131205]))",
-                kc.getFilter(0).toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void metaQuery3 () {
-        String metaQuery = getString(getClass().getResource(
-                "/queries/metaquery4.jsonld").getFile());
-        KrillCollectionLegacy kc = new KrillCollectionLegacy(metaQuery);
-        assertEquals(1, kc.getCount());
-        assertEquals(
-                     // "filter with QueryWrapperFilter(+pubDate:[20000101 TO 20131231])"
-                     "filter with QueryWrapperFilter(+(+pubDate:[20000101 TO 99999999] +pubDate:[0 TO 20131231]))",
-                kc.getFilter(0).toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void metaQuery7 () {
-        String metaQuery = getString(getClass().getResource(
-                "/queries/metaquery7.jsonld").getFile());
-        KrillCollectionLegacy kc = new KrillCollectionLegacy(metaQuery);
-        assertEquals(2, kc.getCount());
-        assertEquals(
-                "filter with QueryWrapperFilter(+(corpusID:c-1 corpusID:c-2))",
-                kc.getFilter(0).toString());
-        assertEquals(
-                "filter with QueryWrapperFilter(+(+corpusID:d-1 +corpusID:d-2))",
-                kc.getFilter(1).toString());
-    };
-
-
-    @Test
-    @Ignore
-    public void metaQuery9 () {
-        String metaQuery = getString(getClass().getResource(
-                "/queries/metaquery9.jsonld").getFile());
-        KrillCollectionLegacy kc = new KrillCollectionLegacy(metaQuery);
-        assertEquals(1, kc.getCount());
-        assertEquals("filter with QueryWrapperFilter(+corpusID:WPD)", kc
-                .getFilter(0).toString());
-    };
-};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
index 49f9d8c..3f651b5 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -85,8 +85,7 @@
         assertEquals(null, id.getTextSigle());
         assertEquals(id.toString(), "match-c1!d1-p4-20(5)7-8(2)3-4(4)7-8");
 
-        id = new MatchIdentifier(
-                "match-GOE!GOE_AGF.02286-p2105-2106");
+        id = new MatchIdentifier("match-GOE!GOE_AGF.02286-p2105-2106");
         assertEquals(2105, id.getStartPos());
         assertEquals(2106, id.getEndPos());
         assertEquals(null, id.getCorpusID());
@@ -95,6 +94,7 @@
         assertEquals("match-GOE_AGF.02286-p2105-2106", id.toString());
     };
 
+
     @Test
     public void posIdentifierExample1 () throws IOException {
         PosIdentifier id = new PosIdentifier();
@@ -255,22 +255,15 @@
                 km.getSnippetHTML());
     };
 
+
     @Test
     public void indexNewStructure () throws IOException, QueryException {
         KrillIndex ki = new KrillIndex();
         ki.addDoc(getClass().getResourceAsStream("/goe/AGX-00002.json"), false);
         ki.commit();
 
-        Match km = ki.getMatchInfo(
-                                   "match-GOE!GOE_AGX.00002-p210-211",
-                                   "tokens",
-                                   true,
-                                   (String) null,
-                                   (String) null,
-                                   true,
-                                   true,
-                                   true
-                                   );
+        Match km = ki.getMatchInfo("match-GOE!GOE_AGX.00002-p210-211",
+                "tokens", true, (String) null, (String) null, true, true, true);
 
         JsonNode res = mapper.readTree(km.toJsonString());
         assertEquals("tokens", res.at("/field").asText());
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
index 603cbbc..3b96e13 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
@@ -19,7 +19,6 @@
 import de.ids_mannheim.korap.response.Match;
 import de.ids_mannheim.korap.response.Result;
 import de.ids_mannheim.korap.Krill;
-import de.ids_mannheim.korap.collection.BooleanFilter;
 import de.ids_mannheim.korap.query.DistanceConstraint;
 import de.ids_mannheim.korap.query.SpanDistanceQuery;
 import de.ids_mannheim.korap.query.SpanElementQuery;
@@ -168,15 +167,16 @@
         //0.8s
 
         // Check if it includes some results
-        
+
         /*
-BooleanFilter bf = new BooleanFilter();
+        BooleanFilter bf = new BooleanFilter();
         bf.or("ID", "WPD_BBB.04463", "WPD_III.00758");
         */
-        
+
         KrillCollection kc = new KrillCollection();
         CollectionBuilder cb = new CollectionBuilder();
-        kc.fromBuilder(cb.orGroup().with(cb.term("ID", "WPD_BBB.04463")).with(cb.term("ID", "WPD_III.00758")));
+        kc.fromBuilder(cb.orGroup().with(cb.term("ID", "WPD_BBB.04463"))
+                .with(cb.term("ID", "WPD_III.00758")));
 
         // kc.filter(bf);
         ks.setCollection(kc);
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index b906609..3663623 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -32,6 +32,7 @@
         assertTrue(sqwi.isOptional());
     };
 
+
     @Test
     public void queryJSONBsp1Disjunction () throws QueryException {
         SpanQueryWrapper sqwi = jsonQuery(getClass().getResource(
@@ -481,7 +482,9 @@
         SpanQueryWrapper sqwi = jsonQuery(getClass().getResource(
                 "/queries/bugs/unspecified_key_bug.jsonld").getFile());
 
-        assertEquals(sqwi.toQuery().toString(), "spanContain(<tokens:s />, spanDistance(tokens:s:Erde, tokens:s:Sonne, [(w[0:100], ordered, notExcluded)]))");
+        assertEquals(
+                sqwi.toQuery().toString(),
+                "spanContain(<tokens:s />, spanDistance(tokens:s:Erde, tokens:s:Sonne, [(w[0:100], ordered, notExcluded)]))");
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java b/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
index 3d25377..58c0507 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestTemporaryQueryLimitations.java
@@ -23,8 +23,10 @@
 import org.junit.runners.JUnit4;
 
 /**
- * These tests are meant to fail in a predictable way - but they describe
- * temporary behaviour and will be disabled once these features are part of Krill.
+ * These tests are meant to fail in a predictable way - but they
+ * describe
+ * temporary behaviour and will be disabled once these features are
+ * part of Krill.
  */
 
 @RunWith(JUnit4.class)
@@ -57,9 +59,9 @@
         assertEquals(kr.getStartIndex(), 0);
 
         assertEquals("This is a warning coming from the serialization", kr
-                     .getWarning(0).getMessage());
+                .getWarning(0).getMessage());
         assertEquals("Class reference checks are currently not supported"
-                     + " - results may not be correct", kr.getWarning(1)
-                     .getMessage());
+                + " - results may not be correct", kr.getWarning(1)
+                .getMessage());
     };
 };
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
index 01d1a4b..bde5902 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -263,6 +263,7 @@
         assertEquals(kr.getTotalResults(), 0);
     };
 
+
     /*
      * Queries should be mirrored correctly for debugging reasons.
      */
@@ -271,8 +272,7 @@
         // Construct index
         KrillIndex ki = new KrillIndex();
         String json = getString(getClass().getResource(
-            "/queries/bugs/failing_mirror.jsonld").getFile()
-        );
+                "/queries/bugs/failing_mirror.jsonld").getFile());
         Krill ks = new Krill(json);
         Result kr = ks.apply(ki);
 
@@ -282,15 +282,14 @@
         assertEquals("Unable to parse JSON", res.at("/errors/0/1").asText());
 
         json = getString(getClass().getResource(
-            "/queries/bugs/failing_mirror_2.jsonld").getFile()
-        );
+                "/queries/bugs/failing_mirror_2.jsonld").getFile());
         ks = new Krill(json);
         kr = ks.apply(ki);
 
         res = mapper.readTree(kr.toJsonString());
 
-        assertEquals(23,res.at("/meta/count").asInt());
-        assertEquals(25,res.at("/meta/itemsPerPage").asInt());
+        assertEquals(23, res.at("/meta/count").asInt());
+        assertEquals(25, res.at("/meta/itemsPerPage").asInt());
         assertEquals("base/s:p", res.at("/meta/context").asText());
         assertFalse(res.at("/query").isMissingNode());
         assertTrue(res.at("/query/@type").isMissingNode());
@@ -813,7 +812,8 @@
         kc.extend(new CollectionBuilder().or("corpusSigle", "BZK"));
         */
         CollectionBuilder cb = new CollectionBuilder();
-        kc.fromBuilder(cb.orGroup().with(kc.getBuilder()).with(cb.term("corpusSigle", "BZK")));
+        kc.fromBuilder(cb.orGroup().with(kc.getBuilder())
+                .with(cb.term("corpusSigle", "BZK")));
 
         ks.setCollection(kc);
         assertEquals(1, kc.numberOf("documents"));
@@ -913,7 +913,9 @@
                 + " +tokens:s:Schriftzeichen)))",
                 ks.getCollection().getFilter(1).toString());
         */
-        assertEquals("AndGroup(OrGroup(ID:WPD_AAA.00001 ID:WPD_AAA.00002) OrGroup(ID:WPD_AAA.00003 AndGroup(tokens:s:die tokens:s:Schriftzeichen)))", ks.getCollection().toString());
+        assertEquals(
+                "AndGroup(OrGroup(ID:WPD_AAA.00001 ID:WPD_AAA.00002) OrGroup(ID:WPD_AAA.00003 AndGroup(tokens:s:die tokens:s:Schriftzeichen)))",
+                ks.getCollection().toString());
 
         assertEquals(kr.getTotalResults(), 119);
         assertEquals(0, kr.getStartIndex());
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 d0862a4..0ff48b5 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestMetaFields.java
@@ -215,6 +215,7 @@
                 .asText());
     };
 
+
     @Test
     public void searchCollectionFields () throws IOException {
         KrillIndex ki = new KrillIndex();
@@ -245,7 +246,7 @@
 
         // textClass = reisen & wissenschaft
         String jsonString = getString(getClass().getResource(
-        "/queries/collections/collection_textClass.jsonld").getFile());
+                "/queries/collections/collection_textClass.jsonld").getFile());
         Krill ks = new Krill(jsonString);
         KrillCollection kc = ks.getCollection();
         kc.setIndex(ki);
@@ -254,7 +255,7 @@
 
         // textClass = reisen
         jsonString = getString(getClass().getResource(
-        "/queries/collections/collection_textClass_2.jsonld").getFile());
+                "/queries/collections/collection_textClass_2.jsonld").getFile());
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
@@ -282,7 +283,7 @@
 
         // author = wolfgang
         jsonString = getString(getClass().getResource(
-        "/queries/collections/collection_goethe.jsonld").getFile());
+                "/queries/collections/collection_goethe.jsonld").getFile());
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
@@ -291,7 +292,7 @@
 
         // author = Wolfgang
         jsonString = getString(getClass().getResource(
-        "/queries/collections/collection_goethe_2.jsonld").getFile());
+                "/queries/collections/collection_goethe_2.jsonld").getFile());
         ks = new Krill(jsonString);
         kc = ks.getCollection();
         kc.setIndex(ki);
@@ -299,7 +300,7 @@
         assertEquals(1, kc.numberOf("documents"));
 
         Result kr = ks.apply(ki);
-        
+
         ObjectMapper mapper = new ObjectMapper();
         JsonNode res = mapper.readTree(kr.toJsonString());
         assertEquals(1, res.at("/meta/totalResults").asInt());