diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
similarity index 67%
rename from src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyQuery.java
rename to src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
index d2b7a0b..d507c07 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanMatchModifyClassQuery.java
@@ -15,29 +15,29 @@
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.ToStringUtils;
 
-import de.ids_mannheim.korap.query.spans.MatchModifySpans;
+import de.ids_mannheim.korap.query.spans.MatchModifyClassSpans;
 import de.ids_mannheim.korap.query.SpanClassQuery;
 
 /**
  * Shrinks spans to a classed span.
  */
-public class SpanMatchModifyQuery extends SpanClassQuery {
+public class SpanMatchModifyClassQuery extends SpanClassQuery {
     private boolean divide = false;
 
-    public SpanMatchModifyQuery (SpanQuery highlight, byte number, boolean divide) {
+    public SpanMatchModifyClassQuery (SpanQuery highlight, byte number, boolean divide) {
 	super(highlight, number);
 	this.divide = divide;
     };
 
-    public SpanMatchModifyQuery (SpanQuery highlight, boolean divide) {
+    public SpanMatchModifyClassQuery (SpanQuery highlight, boolean divide) {
 	this(highlight, (byte) 0, divide);
     };
 
-    public SpanMatchModifyQuery (SpanQuery highlight, byte number) {
+    public SpanMatchModifyClassQuery (SpanQuery highlight, byte number) {
 	this(highlight, number, false);
     };
 
-    public SpanMatchModifyQuery (SpanQuery highlight) {
+    public SpanMatchModifyClassQuery (SpanQuery highlight) {
 	this(highlight, (byte) 0, false);
     };
 
@@ -60,12 +60,12 @@
 
     @Override
     public Spans getSpans (final AtomicReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts) throws IOException {
-	return (Spans) new MatchModifySpans(this.highlight, context, acceptDocs, termContexts, number, divide);
+	return (Spans) new MatchModifyClassSpans(this.highlight, context, acceptDocs, termContexts, number, divide);
     };
 
     @Override
     public Query rewrite (IndexReader reader) throws IOException {
-	SpanMatchModifyQuery clone = null;
+	SpanMatchModifyClassQuery clone = null;
 	SpanQuery query = (SpanQuery) this.highlight.rewrite(reader);
 
 	if (query != this.highlight) {
@@ -81,8 +81,8 @@
     };
 
     @Override
-    public SpanMatchModifyQuery clone() {
-	SpanMatchModifyQuery spanMatchQuery = new SpanMatchModifyQuery(
+    public SpanMatchModifyClassQuery clone() {
+	SpanMatchModifyClassQuery spanMatchQuery = new SpanMatchModifyClassQuery(
 	    (SpanQuery) this.highlight.clone(),
 	    this.number,
 	    this.divide
@@ -96,14 +96,14 @@
     @Override
     public boolean equals(Object o) {
 	if (this == o) return true;
-	if (!(o instanceof SpanMatchModifyQuery)) return false;
+	if (!(o instanceof SpanMatchModifyClassQuery)) return false;
 	
-	final SpanMatchModifyQuery spanMatchModifyQuery = (SpanMatchModifyQuery) o;
+	final SpanMatchModifyClassQuery spanMatchModifyClassQuery = (SpanMatchModifyClassQuery) o;
 	
-	if (!highlight.equals(spanMatchModifyQuery.highlight)) return false;
-	if (this.number != spanMatchModifyQuery.number) return false;
-	if (this.divide != spanMatchModifyQuery.divide) return false;
-	return getBoost() == spanMatchModifyQuery.getBoost();
+	if (!highlight.equals(spanMatchModifyClassQuery.highlight)) return false;
+	if (this.number != spanMatchModifyClassQuery.number) return false;
+	if (this.divide != spanMatchModifyClassQuery.divide) return false;
+	return getBoost() == spanMatchModifyClassQuery.getBoost();
     };
 
 
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifySpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
similarity index 96%
rename from src/main/java/de/ids_mannheim/korap/query/spans/MatchModifySpans.java
rename to src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
index 2d785fa..0a4f490 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifySpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
@@ -19,7 +19,7 @@
 
 import java.nio.ByteBuffer;
 
-public class MatchModifySpans extends Spans {
+public class MatchModifyClassSpans extends Spans {
     private List<byte[]> highlightedPayload;
     private Collection<byte[]> payload;
     private final Spans spans;
@@ -28,13 +28,13 @@
     private ByteBuffer bb;
 
     private SpanQuery highlight;
-    private final Logger log = LoggerFactory.getLogger(MatchModifySpans.class);
+    private final Logger log = LoggerFactory.getLogger(MatchModifyClassSpans.class);
 
     private int start = -1, end;
     private int tempStart, tempEnd = 0;
 
 
-    public MatchModifySpans (SpanQuery highlight,
+    public MatchModifyClassSpans (SpanQuery highlight,
 		       AtomicReaderContext context,
 		       Bits acceptDocs,
 		       Map<Term,TermContext> termContexts,
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
index 14bda8b..aa25021 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
@@ -2,7 +2,7 @@
 
 import org.apache.lucene.search.spans.SpanQuery;
 
-import de.ids_mannheim.korap.query.SpanMatchModifyQuery;
+import de.ids_mannheim.korap.query.SpanMatchModifyClassQuery;
 import de.ids_mannheim.korap.query.wrap.SpanQueryWrapperInterface;
 
 import java.util.*;
@@ -33,6 +33,6 @@
     };
 
     public SpanQuery toQuery () {
-	return new SpanMatchModifyQuery(this.subquery.toQuery(), this.number);
+	return new SpanMatchModifyClassQuery(this.subquery.toQuery(), this.number);
     };
 };
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 f6cface..51308d1 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,7 @@
 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.SpanMatchModifyQuery;
+import de.ids_mannheim.korap.query.SpanMatchModifyClassQuery;
 import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.index.FieldDocument;
 import de.ids_mannheim.korap.analysis.MultiTermTokenStream;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
index 3576fc5..46f8f41 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
@@ -15,7 +15,7 @@
 import de.ids_mannheim.korap.KorapQuery;
 import de.ids_mannheim.korap.KorapResult;
 import de.ids_mannheim.korap.query.SpanNextQuery;
-import de.ids_mannheim.korap.query.SpanMatchModifyQuery;
+import de.ids_mannheim.korap.query.SpanMatchModifyClassQuery;
 import de.ids_mannheim.korap.query.SpanClassQuery;
 import de.ids_mannheim.korap.index.FieldDocument;
 import de.ids_mannheim.korap.analysis.MultiTermTokenStream;
@@ -72,7 +72,7 @@
 
 	assertEquals("Test no 'more' context", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\">b<em class=\"class-0 level-0\">a</em></span><span class=\"context-right\">c</span>", kr.match(0).snippetHTML());
 
-	sq = new SpanMatchModifyQuery(
+	sq = new SpanMatchModifyClassQuery(
             new SpanNextQuery(
                 new SpanTermQuery(new Term("base", "s:b")),
                 new SpanClassQuery(
@@ -87,7 +87,7 @@
 	assertEquals("EndPos (0)", 9, kr.match(0).endPos);
 	assertEquals("SnippetBrackets (0)", "... cabcab[a]c", kr.match(0).snippetBrackets());
 
-	sq = new SpanMatchModifyQuery(
+	sq = new SpanMatchModifyClassQuery(
             new SpanNextQuery(
 	        new SpanClassQuery(new SpanTermQuery(new Term("base", "s:a")), (byte) 2),
                 new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")), (byte) 3)
@@ -116,7 +116,7 @@
 
 
 	// abcabcabac
-	sq = new SpanMatchModifyQuery( 
+	sq = new SpanMatchModifyClassQuery( 
             new SpanNextQuery(
                 new SpanTermQuery(new Term("base", "s:a")),
                 new SpanClassQuery(
@@ -151,7 +151,7 @@
 
 	// System.err.println(kr.toJSON());
 
-	sq = new SpanMatchModifyQuery(
+	sq = new SpanMatchModifyClassQuery(
             new SpanNextQuery(
 	        new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")), (byte) 1),
                 new SpanClassQuery(new SpanTermQuery(new Term("base", "s:c")), (byte) 2)
@@ -172,7 +172,7 @@
 	assertEquals("Token count", 10, ki.numberOf("base", "t"));
 
 
-	sq = new SpanMatchModifyQuery(
+	sq = new SpanMatchModifyClassQuery(
             new SpanNextQuery(
                 new SpanTermQuery(new Term("base", "s:a")),
                 new SpanClassQuery(
