diff --git a/src/main/java/de/ids_mannheim/korap/KorapMatch.java b/src/main/java/de/ids_mannheim/korap/KorapMatch.java
index 883cea76..b8a04b3 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapMatch.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapMatch.java
@@ -15,6 +15,7 @@
 // Todo:
 import de.ids_mannheim.korap.meta.SearchContext;
 
+import de.ids_mannheim.korap.model.AbstractDocument;
 import de.ids_mannheim.korap.match.HighlightCombinator;
 import de.ids_mannheim.korap.match.HighlightCombinatorElement;
 import de.ids_mannheim.korap.match.Relation;
@@ -47,7 +48,7 @@
  * @see KorapResult
  */
 @JsonInclude(Include.NON_NULL)
-public class KorapMatch extends KorapDocument {
+public class KorapMatch extends AbstractDocument {
 
     // Logger
     private final static Logger log = LoggerFactory.getLogger(KorapMatch.class);
@@ -361,7 +362,8 @@
      * @param field  Primary data field.
      * @param fields Hash object with all supported fields.
      */
-    public void populateDocument (Document doc, String field, HashSet<String> fields) {
+    public void populateDocument (Document doc,
+                                  String field, HashSet<String> fields) {
 	this.setField(field);
 	this.setPrimaryData( doc.get(field) );
 	if (fields.contains("corpusID"))
diff --git a/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java b/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
index 8a643eb..4258676 100644
--- a/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
+++ b/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
@@ -1,9 +1,8 @@
 package de.ids_mannheim.korap.index;
 
-import org.apache.lucene.document.Document;
 import de.ids_mannheim.korap.model.MultiTermTokenStream;
 import de.ids_mannheim.korap.model.MultiTermToken;
-import de.ids_mannheim.korap.KorapDocument;
+import de.ids_mannheim.korap.model.AbstractDocument;
 import de.ids_mannheim.korap.util.KorapDate;
 import de.ids_mannheim.korap.util.CorpusDataException;
 
@@ -11,6 +10,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import org.apache.lucene.document.Document;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.StoredField;
@@ -35,7 +35,7 @@
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
 // @JsonDeserialize(using = FieldDocumentDeserializer.class)
-public class FieldDocument extends KorapDocument {
+public class FieldDocument extends AbstractDocument {
     ObjectMapper mapper = new ObjectMapper();
 
     public Document doc = new Document();
diff --git a/src/main/java/de/ids_mannheim/korap/KorapDocument.java b/src/main/java/de/ids_mannheim/korap/model/AbstractDocument.java
similarity index 99%
rename from src/main/java/de/ids_mannheim/korap/KorapDocument.java
rename to src/main/java/de/ids_mannheim/korap/model/AbstractDocument.java
index e4c9263..9bd92db 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapDocument.java
+++ b/src/main/java/de/ids_mannheim/korap/model/AbstractDocument.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap;
+package de.ids_mannheim.korap.model;
 
 import java.util.*;
 
@@ -15,7 +15,7 @@
 
 /**
  * Abstract class representing a document in the
- * KorAP index.
+ * Krill index.
  *
  * This model is rather specific to DeReKo data and
  * should be considered experimental. It may be replaced
@@ -25,7 +25,7 @@
  * @author diewald
  */
 @JsonIgnoreProperties(ignoreUnknown = true)
-public abstract class KorapDocument extends KorapResponse {
+public abstract class AbstractDocument extends KorapResponse {
     private String primaryData;
 
     @JsonIgnore
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
index faf7b1b..62b2f41 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
@@ -22,7 +22,6 @@
 import de.ids_mannheim.korap.Krill;
 import de.ids_mannheim.korap.KrillMeta;
 import de.ids_mannheim.korap.KorapMatch;
-import de.ids_mannheim.korap.KorapDocument;
 import de.ids_mannheim.korap.query.SpanNextQuery;
 import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.query.QueryBuilder;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestKorapDocument.java b/src/test/java/de/ids_mannheim/korap/index/TestKorapDocument.java
index ed38e70..ebc29d9 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestKorapDocument.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestKorapDocument.java
@@ -15,12 +15,12 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-import de.ids_mannheim.korap.KorapDocument;
+import de.ids_mannheim.korap.model.AbstractDocument;
 
 @RunWith(JUnit4.class)
 public class TestKorapDocument {
 
-    private class KorapRealDocument extends KorapDocument {};
+    private class KorapRealDocument extends AbstractDocument {};
 
     @Test
     public void createDocument () throws IOException {
