diff --git a/src/main/java/de/ids_mannheim/korap/match/HighlightCombinatorElement.java b/src/main/java/de/ids_mannheim/korap/match/HighlightCombinatorElement.java
index 6432c0e..dbd3e0a 100644
--- a/src/main/java/de/ids_mannheim/korap/match/HighlightCombinatorElement.java
+++ b/src/main/java/de/ids_mannheim/korap/match/HighlightCombinatorElement.java
@@ -45,66 +45,68 @@
 
     // Return html fragment for this combinator element
     public String toHTML (KorapMatch match, FixedBitSet level, byte[] levelCache) {	    
-	// Opening
-	if (this.type == 1) {
-	    StringBuilder sb = new StringBuilder();
-	    if (this.number == -1) {
-		sb.append("<span class=\"match\">");
-	    }
+        // Opening
+        if (this.type == 1) {
+            StringBuilder sb = new StringBuilder();
+            if (this.number == -1) {
+                sb.append("<mark>");
+            }
 
-	    else if (this.number < -1) {
-		sb.append("<span xml:id=\"")
-		    .append(match.getPosID(
-					   match.getClassID(this.number)))
-		    .append("\">");
-	    }
+            else if (this.number < -1) {
+                sb.append("<span xml:id=\"")
+                    .append(match.getPosID(match.getClassID(this.number)))
+                    .append("\">");
+            }
 
-	    else if (this.number >= 256) {
-		sb.append("<span ");
-		if (this.number < 2048) {
-		    sb.append("title=\"")
-			.append(match.getAnnotationID(this.number))
-			.append('"');
-		}
-		else {
-		    Relation rel = match.getRelationID(this.number);
-		    sb.append("xlink:title=\"")
-			.append(rel.annotation)
-			.append("\" xlink:type=\"simple\" xlink:href=\"#")
-			.append(match.getPosID(rel.ref))
-			.append('"');
-		};
-		sb.append('>');
-	    }
+            else if (this.number >= 256) {
+                sb.append("<span ");
+                if (this.number < 2048) {
+                    sb.append("title=\"")
+                        .append(match.getAnnotationID(this.number))
+                        .append('"');
+                }
+                else {
+                    Relation rel = match.getRelationID(this.number);
+                    sb.append("xlink:title=\"")
+                        .append(rel.annotation)
+                        .append("\" xlink:type=\"simple\" xlink:href=\"#")
+                        .append(match.getPosID(rel.ref))
+                        .append('"');
+                };
+                sb.append('>');
+            }
 
-	    // Highlight - < 256
-	    else {
-		// Get the first free level slot
-		byte pos;
-		if (levelCache[this.number] != '\0') {
-		    pos = levelCache[this.number];
-		}
-		else {
-		    pos = (byte) level.nextSetBit(0);
-		    level.clear(pos);
-		    levelCache[this.number] = pos;
-		};
-		sb.append("<em class=\"class-")
-		    .append(this.number)
-		    .append(" level-")
-		    .append(pos)
-		    .append("\">");
-	    };
-	    return sb.toString();
-	}
-	// Closing
-	else if (this.type == 2) {
-	    if (this.number <= -1 || this.number >= 256)
-		return "</span>";
-
-	    if (this.terminal)
-		level.set((int) levelCache[this.number]);
-	    return "</em>";
+            // Highlight - < 256
+            else {
+                // Get the first free level slot
+                byte pos;
+                if (levelCache[this.number] != '\0') {
+                    pos = levelCache[this.number];
+                }
+                else {
+                    pos = (byte) level.nextSetBit(0);
+                    level.clear(pos);
+                    levelCache[this.number] = pos;
+                };
+                sb.append("<mark class=\"class-")
+                    .append(this.number)
+                    .append(" level-")
+                    .append(pos)
+                    .append("\">");
+            };
+            return sb.toString();
+        }
+        // Closing
+        else if (this.type == 2) {
+            if (this.number < -1 || this.number >= 256)
+                return "</span>";
+           
+            if (this.number == -1)
+                return "</mark>";
+         
+            if (this.terminal)
+                level.set((int) levelCache[this.number]);
+            return "</mark>";
 	};
 
 	// HTML encode primary data
diff --git a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
index cb27c50..7e47153 100644
--- a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
@@ -59,7 +59,7 @@
         assertEquals(km.getEndPos(),    2);
         assertEquals(km.getStartPos(1), 1);
         assertEquals(km.getEndPos(1),   2);
-        assertEquals("<span class=\"context-left\">a</span><span class=\"match\"><em class=\"class-1 level-0\">b</em></span><span class=\"context-right\">c</span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\">a</span><mark><mark class=\"class-1 level-0\">b</mark></mark><span class=\"context-right\">c</span>", km.getSnippetHTML());
 
         kr = ki.search((SpanQuery) kq.seq(kq._(1, kq.seg("s:b"))).append(kq._(2, kq.seg("s:c"))).toQuery());
         km = kr.getMatch(0);
@@ -69,7 +69,7 @@
         assertEquals(km.getEndPos(1),   2);
         assertEquals(km.getStartPos(2), 2);
         assertEquals(km.getEndPos(2),   3);
-        assertEquals("<span class=\"context-left\">a</span><span class=\"match\"><em class=\"class-1 level-0\">b</em><em class=\"class-2 level-0\">c</em></span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\">a</span><mark><mark class=\"class-1 level-0\">b</mark><mark class=\"class-2 level-0\">c</mark></mark><span class=\"context-right\"></span>", km.getSnippetHTML());
 
 
         kr = ki.search((SpanQuery) kq.seq(kq._(1, kq.seq(kq.seg("s:a")).append(kq.seg("s:b")))).append(kq._(2, kq.seg("s:c"))).toQuery());
@@ -80,7 +80,7 @@
         assertEquals(km.getEndPos(1),   2);
         assertEquals(km.getStartPos(2), 2);
         assertEquals(km.getEndPos(2),   3);
-        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-1 level-0\">ab</em><em class=\"class-2 level-0\">c</em></span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-1 level-0\">ab</mark><mark class=\"class-2 level-0\">c</mark></mark><span class=\"context-right\"></span>", km.getSnippetHTML());
 
 
         kr = ki.search((SpanQuery) kq._(3, kq.seq(kq._(1, kq.seq(kq.seg("s:a")).append(kq.seg("s:b")))).append(kq._(2, kq.seg("s:c")))).toQuery());
@@ -93,7 +93,7 @@
         assertEquals(km.getEndPos(2),   3);
         assertEquals(km.getStartPos(3), 0);
         assertEquals(km.getEndPos(3),   3);
-        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-3 level-0\"><em class=\"class-1 level-1\">ab</em><em class=\"class-2 level-1\">c</em></em></span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-3 level-0\"><mark class=\"class-1 level-1\">ab</mark><mark class=\"class-2 level-1\">c</mark></mark></mark><span class=\"context-right\"></span>", km.getSnippetHTML());
     };
 
     @Test
@@ -125,14 +125,14 @@
         KorapResult kr = ki.search((SpanQuery) kq.seq(kq.seg("s:a")).append(kq.seg("s:b")).append(kq.seg("s:c")).toQuery());
         KorapMatch km = kr.getMatch(0);
         km.addHighlight(0, 1, (short) 7);
-        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-7 level-0\">ab</em>c</span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-7 level-0\">ab</mark>c</mark><span class=\"context-right\"></span>", km.getSnippetHTML());
 
         km.addHighlight(1, 2, (short) 6);
-        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-7 level-0\">a<em class=\"class-6 level-1\">b</em></em><em class=\"class-6 level-1\">c</em></span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-7 level-0\">a<mark class=\"class-6 level-1\">b</mark></mark><mark class=\"class-6 level-1\">c</mark></mark><span class=\"context-right\"></span>", km.getSnippetHTML());
 
         km.addHighlight(0, 1, (short) 5);
         assertEquals("[{7:{5:a{6:b}}}{6:c}]", km.getSnippetBrackets());
-        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-7 level-0\"><em class=\"class-5 level-1\">a<em class=\"class-6 level-2\">b</em></em></em><em class=\"class-6 level-2\">c</em></span><span class=\"context-right\"></span>", km.getSnippetHTML());
+        assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-7 level-0\"><mark class=\"class-5 level-1\">a<mark class=\"class-6 level-2\">b</mark></mark></mark><mark class=\"class-6 level-2\">c</mark></mark><span class=\"context-right\"></span>", km.getSnippetHTML());
 
     };
 
@@ -287,7 +287,7 @@
         assertEquals(kr.getTotalResults(),7);
         assertEquals(kr.getStartIndex(),0);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),"... 2. Herkunft Die aus dem proto-semitischen [{15:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
-        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><em class=\"class-15 level-0\">Alphabet</em></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
+        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><mark><mark class=\"class-15 level-0\">Alphabet</mark></mark><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         json = getString(getClass().getResource("/queries/bugs/greater_highlights_16.jsonld").getFile());
 
@@ -298,7 +298,7 @@
         assertEquals(kr.getTotalResults(),7);
         assertEquals(kr.getStartIndex(),0);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),"... 2. Herkunft Die aus dem proto-semitischen [{16:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
-        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><em class=\"class-16 level-0\">Alphabet</em></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
+        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><mark><mark class=\"class-16 level-0\">Alphabet</mark></mark><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 127
         json = getString(getClass().getResource("/queries/bugs/greater_highlights_127.jsonld").getFile());
@@ -309,7 +309,7 @@
         assertEquals(kr.getTotalResults(),7);
         assertEquals(kr.getStartIndex(),0);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),"... 2. Herkunft Die aus dem proto-semitischen [{127:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
-        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><em class=\"class-127 level-0\">Alphabet</em></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
+        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><mark><mark class=\"class-127 level-0\">Alphabet</mark></mark><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 255
         json = getString(getClass().getResource("/queries/bugs/greater_highlights_255.jsonld").getFile());
@@ -320,7 +320,7 @@
         assertEquals(kr.getTotalResults(),7);
         assertEquals(kr.getStartIndex(),0);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),"... 2. Herkunft Die aus dem proto-semitischen [Alphabet] stammende Urform des Buchstaben ist wahrscheinlich ...");
-        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\">Alphabet</span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
+        assertEquals(kr.getMatch(0).getSnippetHTML(),"<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><mark>Alphabet</mark><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 300
         json = getString(getClass().getResource("/queries/bugs/greater_highlights_300.jsonld").getFile());
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
index df4c8ae..abf2fad 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
@@ -68,7 +68,7 @@
 	assertEquals("EndPos (0)", 9, kr.getMatch(0).endPos);
 	assertEquals("SnippetBrackets (0)", "... bcabca[ba]c", kr.getMatch(0).getSnippetBrackets());
 	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\">" +
-			"</span>bcabca</span><span class=\"match\">ba</span><span class=\"context-right" +
+			"</span>bcabca</span><mark>ba</mark><span class=\"context-right" +
 			"\">c</span>", kr.getMatch(0).getSnippetHTML());
 
 	sq = new SpanTermQuery(new Term("base", "s:b"));
@@ -80,8 +80,8 @@
 	assertEquals("SnippetBrackets (0)", "a[b]cabcab ...", kr.getMatch(0).getSnippetBrackets());
 
 
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\">" +
-			"b</span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", 
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">a</span><mark>" +
+			"b</mark><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", 
 			kr.getMatch(0).getSnippetHTML());
 
 	assertEquals("StartPos (1)", 4, kr.getMatch(1).startPos);
@@ -98,8 +98,8 @@
 	assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
 	assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
 	assertEquals("snippetBrackets (0)", "a[{1:b}]cabcab ...", kr.getMatch(0).getSnippetBrackets());
-	assertEquals("snippetHTML (0)", "<span class=\"context-left\">a</span><span class=\"match\">" +
-			"<em class=\"class-1 level-0\">b</em></span><span class=\"context-right\">cabcab<span " +
+	assertEquals("snippetHTML (0)", "<span class=\"context-left\">a</span><mark>" +
+			"<mark class=\"class-1 level-0\">b</mark></mark><span class=\"context-right\">cabcab<span " +
 			"class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
 
 	assertEquals("StartPos (1)", 4, kr.getMatch(1).startPos);
@@ -123,7 +123,7 @@
 	assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
 	assertEquals("SnippetBrackets (0)", "[a{1:b}]cabcab ...", kr.getMatch(0).getSnippetBrackets());
 
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"></span><span class=\"match\">a<em class=\"class-1 level-0\">b</em></span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"></span><mark>a<mark class=\"class-1 level-0\">b</mark></mark><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
 
 	assertEquals("StartPos (1)", 3, kr.getMatch(1).startPos);
 	assertEquals("EndPos (1)", 5, kr.getMatch(1).endPos);
@@ -166,19 +166,19 @@
 
 	assertEquals("totalResults", kr.getTotalResults(), 1);
 	assertEquals("SnippetBrackets (0)", "abcabc[a{2:b{1:a}}]c", kr.getMatch(0).getSnippetBrackets());
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">abcabc</span><span class=\"match\">a<em class=\"class-2 level-0\">b<em class=\"class-1 level-1\">a</em></em></span><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\">abcabc</span><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
 
 	// Offset tokens
 	kr = ki.search(sq, 0, (short) 10, true, (short) 2, true, (short) 2);
 	assertEquals("totalResults", kr.getTotalResults(), 1);
 	assertEquals("SnippetBrackets (0)", "... bc[a{2:b{1:a}}]c", kr.getMatch(0).getSnippetBrackets());
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\"></span>bc</span><span class=\"match\">a<em class=\"class-2 level-0\">b<em class=\"class-1 level-1\">a</em></em></span><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\"></span>bc</span><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
 
 	// Offset Characters
 	kr = ki.search(sq, 0, (short) 10, false, (short) 2, false, (short) 2);
 	assertEquals("totalResults", kr.getTotalResults(), 1);
 	assertEquals("SnippetBrackets (0)", "... bc[a{2:b{1:a}}]c", kr.getMatch(0).getSnippetBrackets());
-	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\"></span>bc</span><span class=\"match\">a<em class=\"class-2 level-0\">b<em class=\"class-1 level-1\">a</em></em></span><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0)", "<span class=\"context-left\"><span class=\"more\"></span>bc</span><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
 
 
 	// System.err.println(kr.toJSON());
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 e201de4..5d320e4 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -186,22 +186,22 @@
 		     "<span class=\"more\">"+
 		     "</span>"+
 		     "</span>"+
-		     "<span class=\"match\">"+
-		     "<em class=\"class-2 level-0\">"+
+		     "<mark>"+
+		     "<mark class=\"class-2 level-0\">"+
 		     "<span title=\"f/m:acht\">"+
 		     "<span title=\"f/y:eight\">"+
 		     "b"+
 		     "</span>"+
 		     "</span>"+
-		     "<em class=\"class-4 level-1\">"+
+		     "<mark class=\"class-4 level-1\">"+
 		     "<span title=\"f/m:neun\">"+
 		     "<span title=\"f/y:nine\">"+
 		     "a"+
 		     "</span>"+
 		     "</span>"+
-		     "</em>"+
-		     "</em>"+
-		     "</span>"+
+		     "</mark>"+
+		     "</mark>"+
+		     "</mark>"+
 		     "<span class=\"context-right\">"+
 		     "<span class=\"more\">"+
 		     "</span>"+
@@ -229,8 +229,8 @@
 		     "<span class=\"more\">" +
 		     "</span>" +
 		     "</span>" +
-		     "<span class=\"match\">" +
-		     "<em class=\"class-2 level-0\">" +
+		     "<mark>" +
+		     "<mark class=\"class-2 level-0\">" +
 		     "<span title=\"f/m:acht\">" +
 		     "<span title=\"f/y:eight\">" +
 		     "<span title=\"it/is:8\">" +
@@ -240,7 +240,7 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "<em class=\"class-4 level-1\">" +
+		     "<mark class=\"class-4 level-1\">" +
 		     "<span title=\"f/m:neun\">" +
 		     "<span title=\"f/y:nine\">" +
 		     "<span title=\"it/is:9\">" +
@@ -250,9 +250,9 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "</em>" +
-		     "</em>" +
-		     "</span>" +
+		     "</mark>" +
+		     "</mark>" +
+		     "</mark>" +
 		     "<span class=\"context-right\">" +
 		     "<span class=\"more\">" +
 		     "</span>" +
@@ -279,7 +279,7 @@
 		     "<span class=\"more\">" +
 		     "</span>" +
 		     "</span>" +
-		     "<span class=\"match\">" +
+		     "<mark>" +
 		     "<span title=\"f/m:acht\">" +
 		     "<span title=\"f/y:eight\">" +
 		     "<span title=\"it/is:8\">" +
@@ -298,7 +298,7 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "</span>" +
+		     "</mark>" +
 		     "<span class=\"context-right\">" +
 		     "<span class=\"more\">" +
 		     "</span>" +
@@ -367,9 +367,9 @@
 		     "<span class=\"more\">" +
 		     "</span>" +
 		     "</span>" +
-		     "<span class=\"match\">" +
+		     "<mark>" +
 		     "<span title=\"x/tag\">" +
-		     "<em class=\"class-2 level-0\">" +
+		     "<mark class=\"class-2 level-0\">" +
 		     "<span title=\"f/m:acht\">" +
 		     "<span title=\"f/y:eight\">" +
 		     "<span title=\"it/is:8\">" +
@@ -379,7 +379,7 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "<em class=\"class-4 level-1\">" +
+		     "<mark class=\"class-4 level-1\">" +
 		     "<span title=\"f/m:neun\">" +
 		     "<span title=\"f/y:nine\">" +
 		     "<span title=\"it/is:9\">" +
@@ -389,8 +389,8 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "</em>" +
-		     "</em>" +
+		     "</mark>" +
+		     "</mark>" +
 		     "<span title=\"f/m:zehn\">" +
 		     "<span title=\"f/y:ten\">" +
 		     "<span title=\"it/is:10\">" +
@@ -401,7 +401,7 @@
 		     "</span>" +
 		     "</span>" +
 		     "</span>" +
-		     "</span>" +
+		     "</mark>" +
 		     "<span class=\"context-right\">" +
 		     "</span>",
 		     km.getSnippetHTML());
@@ -427,7 +427,7 @@
 	assertEquals("SnippetBrackets (1)",
 		     "<span class=\"context-left\">" +
 		     "</span>" +
-		     "<span class=\"match\">" +
+		     "<mark>" +
 		     "<span xlink:title=\"x/rel:a\" " +
 		     "xlink:type=\"simple\" " +
 		     "xlink:href=\"#word-c1!d1-p3\">" +
@@ -449,7 +449,7 @@
 		     "<span title=\"x/o:fünftens\">" +
 		     "b" +
 		     "</span>" +
-		     "</span>" +
+		     "</mark>" +
 		     "<span class=\"context-right\">" +
 		     "<span class=\"more\">" +
 		     "</span>" +
@@ -466,7 +466,7 @@
 	assertEquals("SnippetBrackets (1)",
 		     "<span class=\"context-left\">" +
 		     "</span>" +
-		     "<span class=\"match\">" +
+		     "<mark>" +
 		     "<span xlink:title=\"x/rel:a\" " +
 		     "xlink:type=\"simple\" " +
 		     "xlink:href=\"#word-c1!d1-p3\">" +
@@ -477,7 +477,7 @@
 		     "<span title=\"x/o:zweitens\">" +
 		     "b" +
 		     "</span>" +
-		     "<em class=\"class-7 level-0\">" +
+		     "<mark class=\"class-7 level-0\">" +
 		     "<span title=\"x/o:drittens\">" +
 		     "c" +
 		     "</span>" +
@@ -486,11 +486,11 @@
 		     "a" +
 		     "</span>" +
 		     "</span>" +
-		     "</em>" +
+		     "</mark>" +
 		     "<span title=\"x/o:fünftens\">" +
 		     "b" +
 		     "</span>" +
-		     "</span>" +
+		     "</mark>" +
 		     "<span class=\"context-right\">" +
 		     "<span class=\"more\">" +
 		     "</span>" +
@@ -572,7 +572,7 @@
 	assertEquals("SnippetHTML (2)",
 		     "<span class=\"context-left\">" +
 		     "</span>" +
-		     "<span class=\"match\">"+
+		     "<mark>"+
 		     "<span xlink:title=\"x/rel:a\" xlink:type=\"simple\" xlink:href=\"#word-c1!d1-p3\">"+
 		     "<span title=\"f/m:eins\">"+
 		     "<span title=\"f/y:one\">"+
@@ -607,7 +607,7 @@
 		     "</span>"+
 		     "</span>"+
 		     "</span>"+
-		     "</span>"+
+		     "</mark>"+
 		     "<span class=\"context-right\">"+
 		     "<span class=\"more\">"+
 		     "</span>"+
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 7de423b..c3ad7c7 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
@@ -72,7 +72,7 @@
 	assertEquals("EndPos (0)", 9, kr.getMatch(0).endPos);
 	assertEquals("SnippetBrackets (0)", "... bcabca[b{1:a}]c", kr.getMatch(0).getSnippetBrackets());
 
-	assertEquals("Test no 'more' context", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\">b<em class=\"class-1 level-0\">a</em></span><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("Test no 'more' context", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><mark>b<mark class=\"class-1 level-0\">a</mark></mark><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
 	sq = new SpanFocusQuery(
   	     new SpanNextQuery(
                 new SpanTermQuery(new Term("base", "s:b")),
@@ -102,13 +102,13 @@
 	assertEquals("SnippetBrackets (0)", "a[{3:b}]cabcab ...", kr.getMatch(0).getSnippetBrackets());
 	
 
-	assertEquals("<span class=\"context-left\">a</span><span class=\"match\"><em class=\"class-3 level-0\">b</em></span><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("<span class=\"context-left\">a</span><mark><mark class=\"class-3 level-0\">b</mark></mark><span class=\"context-right\">cabcab<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
 
 	assertEquals("StartPos (1)", 4, kr.getMatch(1).startPos);
 	assertEquals("EndPos (1)", 5, kr.getMatch(1).endPos);
 	assertEquals("SnippetBrackets (1)", "abca[{3:b}]cabac", kr.getMatch(1).getSnippetBrackets());
 
-	assertEquals("<span class=\"context-left\">abca</span><span class=\"match\"><em class=\"class-3 level-0\">b</em></span><span class=\"context-right\">cabac</span>", kr.getMatch(1).getSnippetHTML());
+	assertEquals("<span class=\"context-left\">abca</span><mark><mark class=\"class-3 level-0\">b</mark></mark><span class=\"context-right\">cabac</span>", kr.getMatch(1).getSnippetHTML());
 
 	assertEquals("StartPos (2)", 7, kr.getMatch(2).startPos);
 	assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
@@ -132,7 +132,7 @@
 	assertEquals("totalResults", kr.getTotalResults(), 1);
 	assertEquals("SnippetBrackets (0)", "... bcabca[{2:b{1:a}}]c", kr.getMatch(0).getSnippetBrackets());
 
-	assertEquals("SnippetHTML (0) 1", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\"><em class=\"class-2 level-0\">b<em class=\"class-1 level-1\">a</em></em></span><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0) 1", "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><mark><mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\">c</span>", kr.getMatch(0).getSnippetHTML());
 
 	// Offset tokens
 	kr = ki.search(sq, 0, (short) 10, true, (short) 2, true, (short) 2);
@@ -146,7 +146,7 @@
 	assertEquals("totalResults", kr.getTotalResults(), 1);
 	assertEquals("SnippetBrackets (0)", "... a[{2:b{1:a}}] ...", kr.getMatch(0).getSnippetBrackets());
 
-	assertEquals("SnippetHTML (0) 2", "<span class=\"context-left\"><span class=\"more\"></span>a</span><span class=\"match\"><em class=\"class-2 level-0\">b<em class=\"class-1 level-1\">a</em></em></span><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
+	assertEquals("SnippetHTML (0) 2", "<span class=\"context-left\"><span class=\"more\"></span>a</span><mark><mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
 
 	sq = new SpanFocusQuery(
             new SpanClassQuery(
@@ -241,26 +241,26 @@
         kr = ki.search(sq, (short) 20);
 
         assertEquals("totalResults", kr.getTotalResults(), 7);
-        assertEquals("SnippetBrackets (0)", "<span class=\"context-left\"></span><span class=\"match\">a</span><span class=\"context-right\">bcabca<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
+        assertEquals("SnippetBrackets (0)", "<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\">bcabca<span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
         assertEquals("SnippetBrackets (0)", "[a]bcabca ...", kr.getMatch(0).getSnippetBrackets());
 
         assertEquals("SnippetBrackets (1)", "ab[c]abcaba ...", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("SnippetBrackets (1)", "<span class=\"context-left\">ab</span><span class=\"match\">c</span><span class=\"context-right\">abcaba<span class=\"more\"></span></span>", kr.getMatch(1).getSnippetHTML());
+        assertEquals("SnippetBrackets (1)", "<span class=\"context-left\">ab</span><mark>c</mark><span class=\"context-right\">abcaba<span class=\"more\"></span></span>", kr.getMatch(1).getSnippetHTML());
         
         assertEquals("SnippetBrackets (6)", "... abcaba[c]", kr.getMatch(6).getSnippetBrackets());
-        assertEquals("SnippetBrackets (6)", "<span class=\"context-left\"><span class=\"more\"></span>abcaba</span><span class=\"match\">c</span><span class=\"context-right\"></span>", kr.getMatch(6).getSnippetHTML());
+        assertEquals("SnippetBrackets (6)", "<span class=\"context-left\"><span class=\"more\"></span>abcaba</span><mark>c</mark><span class=\"context-right\"></span>", kr.getMatch(6).getSnippetHTML());
 
         kr = ki.search(sq, 0, (short) 20, true, (short) 0, true, (short) 0);
 
         assertEquals("totalResults", kr.getTotalResults(), 7);
         assertEquals("SnippetBrackets (0)", "[a] ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("SnippetHTML (0)", "<span class=\"context-left\"></span><span class=\"match\">a</span><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
+        assertEquals("SnippetHTML (0)", "<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(0).getSnippetHTML());
 
         assertEquals("SnippetBrackets (1)", "... [c] ...", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("SnippetHTML (1)", "<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\">c</span><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(1).getSnippetHTML());
+        assertEquals("SnippetHTML (1)", "<span class=\"context-left\"><span class=\"more\"></span></span><mark>c</mark><span class=\"context-right\"><span class=\"more\"></span></span>", kr.getMatch(1).getSnippetHTML());
 
         assertEquals("SnippetBrackets (6)", "... [c]", kr.getMatch(6).getSnippetBrackets());
-        assertEquals("SnippetBrackets (6)", "<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\">c</span><span class=\"context-right\"></span>", kr.getMatch(6).getSnippetHTML());
+        assertEquals("SnippetBrackets (6)", "<span class=\"context-left\"><span class=\"more\"></span></span><mark>c</mark><span class=\"context-right\"></span>", kr.getMatch(6).getSnippetHTML());
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
index e0324d4..62821c7 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
@@ -818,7 +818,7 @@
         assertEquals("totalResults", kr.getTotalResults(), 1);
         
         assertEquals("... schrie: [\"{3:Das war ich}!\"] und ...",kr.getMatch(0).getSnippetBrackets());
-        assertEquals("<span class=\"context-left\"><span class=\"more\"></span>schrie: </span><span class=\"match\">&quot;<em class=\"class-3 level-0\">Das war ich</em>!&quot;</span><span class=\"context-right\"> und<span class=\"more\"></span></span>",kr.getMatch(0).getSnippetHTML());
+        assertEquals("<span class=\"context-left\"><span class=\"more\"></span>schrie: </span><mark>&quot;<mark class=\"class-3 level-0\">Das war ich</mark>!&quot;</mark><span class=\"context-right\"> und<span class=\"more\"></span></span>",kr.getMatch(0).getSnippetHTML());
 
         kr = ki.search(sq, 0, (short) 15, true, (short) 0, true, (short) 0);
         assertEquals("... [\"{3:Das war ich}!\"] ...",kr.getMatch(0).getSnippetBrackets());
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
index debd89d..f07b184 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
@@ -79,7 +79,7 @@
 	assertEquals(1, res.at("/matches/0/UID").asInt());
 	assertEquals("doc-1", res.at("/matches/0/docID").asText());
 	assertEquals("match-doc-1-p0-1(1)0-0", res.at("/matches/0/ID").asText());
-	assertEquals("<span class=\"context-left\"></span><span class=\"match\"><em class=\"class-1 level-0\">a</em></span><span class=\"context-right\">bab</span>", res.at("/matches/0/snippet").asText());
+	assertEquals("<span class=\"context-left\"></span><mark><mark class=\"class-1 level-0\">a</mark></mark><span class=\"context-right\">bab</span>", res.at("/matches/0/snippet").asText());
 
 	assertEquals("base", res.at("/matches/6/field").asText());
 	/*
@@ -90,7 +90,7 @@
 	assertEquals(2, res.at("/matches/6/UID").asInt());
 	assertEquals("doc-2", res.at("/matches/6/docID").asText());
 	assertEquals("match-doc-2-p2-3(1)2-2", res.at("/matches/6/ID").asText());
-	assertEquals("<span class=\"context-left\">ab</span><span class=\"match\"><em class=\"class-1 level-0\">a</em></span><span class=\"context-right\"></span>", res.at("/matches/6/snippet").asText());
+	assertEquals("<span class=\"context-left\">ab</span><mark><mark class=\"class-1 level-0\">a</mark></mark><span class=\"context-right\"></span>", res.at("/matches/6/snippet").asText());
 
     };
 
@@ -189,7 +189,7 @@
 	assertEquals(1, res.at("/matches/0/UID").asInt());
 	assertEquals("doc-1", res.at("/matches/0/docID").asText());
 	assertEquals("match-doc-1-p0-1", res.at("/matches/0/ID").asText());
-	assertEquals("<span class=\"context-left\"></span><span class=\"match\">a</span><span class=\"context-right\">bab</span>", res.at("/matches/0/snippet").asText());
+	assertEquals("<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\">bab</span>", res.at("/matches/0/snippet").asText());
 
     };
 
