diff --git a/Changes b/Changes
index caaa268..e6ecae1 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.55.6 2016-07-27
+0.55.6 2016-08-03
         - [bugfix] distance with key "t" uses default foundry (diewald)
 	- [cleanup] Renamed fromJson() to fromKoral() (diewald)
 	- [cleanup] Removed deprecated methods in Krill:
@@ -14,7 +14,7 @@
 	- [feature] Added experimental KrillStats class (diewald)
 	- [bugfix] Escape quotes in JSON strings (diewald)
 	- [bugfix] Escape XML and Brackets in snippets correctly (diewald)
-	- [feature] Added match highlight to match API,
+	- [feature] Differ between matching scope and match highlighting,
 	  in case the match was extended to the sentence scope (diewald)
 
 0.55.5 2016-05-02
diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index 48ce9d0..bc10a5d 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -918,8 +918,6 @@
         if (match.getStartPos() == -1)
             return match;
 
-        // Todo: add match-highlight
-
         // Create a filter based on the corpusID and the docID
         BooleanQuery bool = new BooleanQuery();
         if (match.getTextSigle() != null) {
@@ -1033,7 +1031,7 @@
             if (DEBUG)
                 log.trace("The final regexObj is {}", regexObj.toString());
         };
-
+	
         try {
 
             // Iterate over all atomic indices and find the matching document
@@ -1094,16 +1092,19 @@
                 // Todo:
                 SearchContext context = match.getContext();
 
+		// Override the normal match marking
+		// to have an inner match
+		match.overrideMatchPosition(
+		  match.getStartPos(),
+		  match.getEndPos() - 1
+		);
+
+		
                 // Search for minimal surrounding sentences
                 if (extendToSentence) {
                     String element = "base/s:s";
                     int[] spanContext = match.expandContextToSpan(element);
 
-                    // Add match highlight with class number -1
-                    // TODO: This is very specific behaviour here and should probably
-                    // be added elsewhere, too.
-                    match.addHighlight(match.getStartPos(), match.getEndPos() - 1, -1);
-
                     if (DEBUG)
                         log.trace("Extend to sentence element '{}'", element);
 
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 acba433..40c7300 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -71,6 +71,9 @@
     public int startPos, endPos = -1;
 
     @JsonIgnore
+    private int innerMatchStartPos, innerMatchEndPos = -1;
+
+    @JsonIgnore
     public int potentialStartPosChar = -1, potentialEndPosChar = -1;
 
     private String version;
@@ -163,7 +166,6 @@
                 for (int[] pos : id.getPos()) {
                     if (pos[0] < id.getStartPos() || pos[1] > id.getEndPos())
                         continue;
-
                     this.addHighlight(pos[0], pos[1], pos[2]);
                 };
         };
@@ -785,7 +787,8 @@
 
     // Start building highlighted snippets
     private boolean _processHighlight () {
-        if (processed)
+
+      if (processed)
             return true;
 
         // Relevant details are missing
@@ -807,6 +810,10 @@
             log.trace("PTO will retrieve {} & {} (Match boundary)",
                     this.getStartPos(), this.getEndPos());
 
+	// Set inner match
+	if (this.innerMatchEndPos != 1)
+	  this.addHighlight(this.innerMatchStartPos, this.innerMatchEndPos, -1);
+	
         // Add all highlights for character retrieval
         if (this.highlight != null) {
             for (Highlight hl : this.highlight) {
@@ -867,7 +874,14 @@
                     return -1;
                 }
                 else if (arg0[1] == arg1[1]) {
-                    return 0;
+
+		    // Compare class number
+		    if (arg0[2] > arg1[2])
+		      return 1;
+		    else if (arg0[2] < arg1[1])
+		      return -1;
+		    return 0;
+
                 }
                 return 1;
             };
@@ -876,7 +890,7 @@
     };
 
     /*
-      Comparator class for closing tags
+     * Comparator class for closing tags
      */
     private class ClosingTagComparator implements Comparator<int[]> {
         @Override
@@ -886,14 +900,15 @@
                 return 1;
             }
             else if (arg0[1] == arg1[1]) {
-                // Check start positions
-                if (arg0[0] < arg1[0]) {
-                    return 1;
-                }
-                else if (arg0[0] == arg1[0]) {
-                    return 0;
-                };
-                return -1;
+
+	      // Check start positions
+	      if (arg0[0] < arg1[0]) {
+		return 1;
+	      }
+	      else if (arg0[0] == arg1[0]) {
+		return 0;
+	      };
+	      return -1;
             };
             return -1;
         };
@@ -1004,10 +1019,11 @@
         rightContext.append("</span>");
 
         // Iterate through all remaining elements
+	sb.append("<span class=\"match\">");
         for (short i = start; i <= end; i++) {
             sb.append(this.snippetArray.get(i).toHTML(this, level, levelCache));
         };
-
+	sb.append("</span>");
         sb.append(rightContext);
 
         return (this.snippetHTML = sb.toString());
@@ -1023,14 +1039,43 @@
         if (this.processed && this.snippetBrackets != null)
             return this.snippetBrackets;
 
+        // Snippet stack sizes
+        short start = (short) 0;
+        short end = this.snippetArray.size();
+        end--;
+	
         StringBuilder sb = new StringBuilder();
 
         if (this.startMore)
             sb.append("... ");
 
-        for (HighlightCombinatorElement hce : this.snippetArray.list())
-            sb.append(hce.toBrackets(this));
+	// First element of sorted array
+        HighlightCombinatorElement elem = this.snippetArray.getFirst();
+	if (elem.type == 0) {
+	  sb.append(elem.toBrackets(this));
+	  start++;
+	};
 
+	sb.append("[");
+	
+	// Last element of sorted array
+        elem = this.snippetArray.getLast();
+        StringBuilder rightContext = new StringBuilder();
+
+	// Last element is textual
+        if (elem != null && elem.type == 0) {
+            rightContext.append(elem.toBrackets(this));
+            // decrement end
+            end--;
+        };
+
+	for (short i = start; i <= end; i++) {
+	  sb.append(this.snippetArray.get(i).toBrackets(this));
+	};
+
+	sb.append("]");
+	sb.append(rightContext);
+	
         if (this.endMore)
             sb.append(" ...");
 
@@ -1088,6 +1133,20 @@
         return stack;
     };
 
+  /**
+   * Sometimes the match start and end positions are inside the
+   * matching region, e.g. when the match was expanded.
+   * This will override the original matching positions
+   * And matrk the real matching.
+   */
+  public void overrideMatchPosition (int start, int end) {
+    if (DEBUG)
+      log.trace("--- Override match position");
+
+    this.innerMatchStartPos = start;
+    this.innerMatchEndPos = end;
+  }; 
+
 
     /**
      * This will retrieve character offsets for all spans.
@@ -1145,8 +1204,9 @@
         // Recalculate startOffsetChar
         int startOffsetChar = startPosChar - intArray[0];
 
-        // Add match span
-        this.span.add(intArray);
+        // Add match span, in case no inner match is defined
+	if (this.innerMatchEndPos == -1)
+	  this.span.add(intArray);
 
         // highlights
         // -- I'm not sure about this.
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
index 42f1c08..1190eb4 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinatorElement.java
@@ -52,6 +52,8 @@
         // Opening
         if (this.type == 1) {
             StringBuilder sb = new StringBuilder();
+
+	    // This is the surrounding match mark
             if (this.number == -1) {
                 sb.append("<mark>");
             }
diff --git a/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java b/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java
index 7b2bd7c..0b1eb95 100644
--- a/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestClass.java
@@ -48,15 +48,15 @@
         assertEquals(61, kr.getMatch(0).getStartPos());
         assertEquals(64, kr.getMatch(0).getEndPos());
         assertEquals(
-                "... Bruckner (Wien) und Mathis Lussy (Paris). [{1:Inspiriert} "
-                        + "{2:durch die}] additiven Modelle arabischer Rhythmik (er half ...",
+                "... Bruckner (Wien) und Mathis Lussy (Paris). [[{1:Inspiriert} "
+                        + "{2:durch die}]] additiven Modelle arabischer Rhythmik (er half ...",
                 kr.getMatch(0).getSnippetBrackets());
 
         assertEquals(31, kr.getMatch(1).getStartPos());
         assertEquals(34, kr.getMatch(1).getEndPos());
         assertEquals(
-                "... des Sendens wird ein unhörbarer Unterton [{1:mitgesendet}, "
-                        + "{2:auf den}] das angesprochene Funkgerät reagiert. Die Abkürzung ...",
+                "... des Sendens wird ein unhörbarer Unterton [[{1:mitgesendet}, "
+                        + "{2:auf den}]] das angesprochene Funkgerät reagiert. Die Abkürzung ...",
                 kr.getMatch(1).getSnippetBrackets());
     }
 
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 d363d7d..c8a7a5a 100644
--- a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
@@ -51,7 +51,7 @@
         assertEquals(km.getStartPos(1), 1);
         assertEquals(km.getEndPos(1), 2);
         assertEquals(
-                "<span class=\"context-left\">a</span><mark><mark class=\"class-1 level-0\">b</mark></mark><span class=\"context-right\">c</span>",
+                "<span class=\"context-left\">a</span><span class=\"match\"><mark><mark class=\"class-1 level-0\">b</mark></mark></span><span class=\"context-right\">c</span>",
                 km.getSnippetHTML());
 
         kr = ki.search((SpanQuery) kq.seq(kq._(1, kq.seg("s:b")))
@@ -64,7 +64,7 @@
         assertEquals(km.getStartPos(2), 2);
         assertEquals(km.getEndPos(2), 3);
         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>",
+                "<span class=\"context-left\">a</span><span class=\"match\"><mark><mark class=\"class-1 level-0\">b</mark><mark class=\"class-2 level-0\">c</mark></mark></span><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
 
@@ -79,7 +79,7 @@
         assertEquals(km.getStartPos(2), 2);
         assertEquals(km.getEndPos(2), 3);
         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>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark><mark class=\"class-1 level-0\">ab</mark><mark class=\"class-2 level-0\">c</mark></mark></span><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
 
@@ -97,7 +97,7 @@
         assertEquals(km.getStartPos(3), 0);
         assertEquals(km.getEndPos(3), 3);
         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>",
+                "<span class=\"context-left\"></span><span class=\"match\"><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><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
     };
 
@@ -124,18 +124,18 @@
         Match km = kr.getMatch(0);
         km.addHighlight(0, 1, (short) 7);
         assertEquals(
-                "<span class=\"context-left\"></span><mark><mark class=\"class-7 level-0\">ab</mark>c</mark><span class=\"context-right\"></span>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark><mark class=\"class-7 level-0\">ab</mark>c</mark></span><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
         km.addHighlight(1, 2, (short) 6);
         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>",
+                "<span class=\"context-left\"></span><span class=\"match\"><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><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
         km.addHighlight(0, 1, (short) 5);
-        assertEquals("[{7:{5:a{6:b}}}{6:c}]", km.getSnippetBrackets());
+        assertEquals("[[{7:{5:a{6:b}}}{6:c}]]", km.getSnippetBrackets());
         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>",
+                "<span class=\"context-left\"></span><span class=\"match\"><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><span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
     };
@@ -185,23 +185,23 @@
                 .or(kq._(2, kq.seg("s:b"))).toQuery();
         Result kr = ki.search(q);
         assertEquals((long) 14, kr.getTotalResults());
-        assertEquals("[{1:a}]bab", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("a[{2:b}]ab", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("ab[{1:a}]b", kr.getMatch(2).getSnippetBrackets());
-        assertEquals("aba[{2:b}]", kr.getMatch(3).getSnippetBrackets());
+        assertEquals("[[{1:a}]]bab", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("a[[{2:b}]]ab", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("ab[[{1:a}]]b", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("aba[[{2:b}]]", kr.getMatch(3).getSnippetBrackets());
 
-        assertEquals("[{1:a}]ba", kr.getMatch(4).getSnippetBrackets());
-        assertEquals("a[{2:b}]a", kr.getMatch(5).getSnippetBrackets());
-        assertEquals("ab[{1:a}]", kr.getMatch(6).getSnippetBrackets());
+        assertEquals("[[{1:a}]]ba", kr.getMatch(4).getSnippetBrackets());
+        assertEquals("a[[{2:b}]]a", kr.getMatch(5).getSnippetBrackets());
+        assertEquals("ab[[{1:a}]]", kr.getMatch(6).getSnippetBrackets());
 
-        assertEquals("[{1:a}]bab", kr.getMatch(7).getSnippetBrackets());
-        assertEquals("a[{2:b}]ab", kr.getMatch(8).getSnippetBrackets());
-        assertEquals("ab[{1:a}]b", kr.getMatch(9).getSnippetBrackets());
-        assertEquals("aba[{2:b}]", kr.getMatch(10).getSnippetBrackets());
+        assertEquals("[[{1:a}]]bab", kr.getMatch(7).getSnippetBrackets());
+        assertEquals("a[[{2:b}]]ab", kr.getMatch(8).getSnippetBrackets());
+        assertEquals("ab[[{1:a}]]b", kr.getMatch(9).getSnippetBrackets());
+        assertEquals("aba[[{2:b}]]", kr.getMatch(10).getSnippetBrackets());
 
-        assertEquals("[{1:a}]ba", kr.getMatch(11).getSnippetBrackets());
-        assertEquals("a[{2:b}]a", kr.getMatch(12).getSnippetBrackets());
-        assertEquals("ab[{1:a}]", kr.getMatch(13).getSnippetBrackets());
+        assertEquals("[[{1:a}]]ba", kr.getMatch(11).getSnippetBrackets());
+        assertEquals("a[[{2:b}]]a", kr.getMatch(12).getSnippetBrackets());
+        assertEquals("ab[[{1:a}]]", kr.getMatch(13).getSnippetBrackets());
 
         kq = new QueryBuilder("base");
         q = (SpanQuery) kq.or(kq._(1, kq.seg("i:a")))
@@ -212,32 +212,32 @@
         kr = ki.search(qs);
         assertEquals((long) 10, kr.getTotalResults());
 
-        assertEquals("[{1:a}]b ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("... b[{2:a}]b", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("... a[{1:b}]", kr.getMatch(2).getSnippetBrackets());
-        assertEquals("[{1:a}]b ...", kr.getMatch(3).getSnippetBrackets());
-        assertEquals("... b[{2:a}]", kr.getMatch(4).getSnippetBrackets());
-        assertEquals("[{1:a}]b ...", kr.getMatch(5).getSnippetBrackets());
-        assertEquals("... b[{2:a}]b", kr.getMatch(6).getSnippetBrackets());
-        assertEquals("... a[{1:b}]", kr.getMatch(7).getSnippetBrackets());
-        assertEquals("[{1:a}]b ...", kr.getMatch(8).getSnippetBrackets());
-        assertEquals("... b[{2:a}]", kr.getMatch(9).getSnippetBrackets());
+        assertEquals("[[{1:a}]]b ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... b[[{2:a}]]b", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("... a[[{1:b}]]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("[[{1:a}]]b ...", kr.getMatch(3).getSnippetBrackets());
+        assertEquals("... b[[{2:a}]]", kr.getMatch(4).getSnippetBrackets());
+        assertEquals("[[{1:a}]]b ...", kr.getMatch(5).getSnippetBrackets());
+        assertEquals("... b[[{2:a}]]b", kr.getMatch(6).getSnippetBrackets());
+        assertEquals("... a[[{1:b}]]", kr.getMatch(7).getSnippetBrackets());
+        assertEquals("[[{1:a}]]b ...", kr.getMatch(8).getSnippetBrackets());
+        assertEquals("... b[[{2:a}]]", kr.getMatch(9).getSnippetBrackets());
 
         qs.getMeta().getContext().left.setToken(true).setLength((short) 0);
         qs.getMeta().getContext().right.setToken(true).setLength((short) 0);
         kr = ki.search(qs);
         assertEquals((long) 10, kr.getTotalResults());
 
-        assertEquals("[{1:a}] ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("... [{2:a}] ...", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("... [{1:b}]", kr.getMatch(2).getSnippetBrackets());
-        assertEquals("[{1:a}] ...", kr.getMatch(3).getSnippetBrackets());
-        assertEquals("... [{2:a}]", kr.getMatch(4).getSnippetBrackets());
-        assertEquals("[{1:a}] ...", kr.getMatch(5).getSnippetBrackets());
-        assertEquals("... [{2:a}] ...", kr.getMatch(6).getSnippetBrackets());
-        assertEquals("... [{1:b}]", kr.getMatch(7).getSnippetBrackets());
-        assertEquals("[{1:a}] ...", kr.getMatch(8).getSnippetBrackets());
-        assertEquals("... [{2:a}]", kr.getMatch(9).getSnippetBrackets());
+        assertEquals("[[{1:a}]] ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... [[{2:a}]] ...", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("... [[{1:b}]]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("[[{1:a}]] ...", kr.getMatch(3).getSnippetBrackets());
+        assertEquals("... [[{2:a}]]", kr.getMatch(4).getSnippetBrackets());
+        assertEquals("[[{1:a}]] ...", kr.getMatch(5).getSnippetBrackets());
+        assertEquals("... [[{2:a}]] ...", kr.getMatch(6).getSnippetBrackets());
+        assertEquals("... [[{1:b}]]", kr.getMatch(7).getSnippetBrackets());
+        assertEquals("[[{1:a}]] ...", kr.getMatch(8).getSnippetBrackets());
+        assertEquals("... [[{2:a}]]", kr.getMatch(9).getSnippetBrackets());
 
         q = (SpanQuery) kq._(3,
                 kq.or(kq._(1, kq.seg("i:a"))).or(kq._(2, kq.seg("i:c"))))
@@ -248,16 +248,16 @@
         kr = ki.search(qs);
         assertEquals((long) 10, kr.getTotalResults());
 
-        assertEquals("[{3:{1:a}}] ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("... [{3:{2:a}}] ...", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("... [{3:{1:b}}]", kr.getMatch(2).getSnippetBrackets());
-        assertEquals("[{3:{1:a}}] ...", kr.getMatch(3).getSnippetBrackets());
-        assertEquals("... [{3:{2:a}}]", kr.getMatch(4).getSnippetBrackets());
-        assertEquals("[{3:{1:a}}] ...", kr.getMatch(5).getSnippetBrackets());
-        assertEquals("... [{3:{2:a}}] ...", kr.getMatch(6).getSnippetBrackets());
-        assertEquals("... [{3:{1:b}}]", kr.getMatch(7).getSnippetBrackets());
-        assertEquals("[{3:{1:a}}] ...", kr.getMatch(8).getSnippetBrackets());
-        assertEquals("... [{3:{2:a}}]", kr.getMatch(9).getSnippetBrackets());
+        assertEquals("[[{3:{1:a}}]] ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... [[{3:{2:a}}]] ...", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("... [[{3:{1:b}}]]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("[[{3:{1:a}}]] ...", kr.getMatch(3).getSnippetBrackets());
+        assertEquals("... [[{3:{2:a}}]]", kr.getMatch(4).getSnippetBrackets());
+        assertEquals("[[{3:{1:a}}]] ...", kr.getMatch(5).getSnippetBrackets());
+        assertEquals("... [[{3:{2:a}}]] ...", kr.getMatch(6).getSnippetBrackets());
+        assertEquals("... [[{3:{1:b}}]]", kr.getMatch(7).getSnippetBrackets());
+        assertEquals("[[{3:{1:a}}]] ...", kr.getMatch(8).getSnippetBrackets());
+        assertEquals("... [[{3:{2:a}}]]", kr.getMatch(9).getSnippetBrackets());
     };
 
 
@@ -285,10 +285,10 @@
         assertEquals(kr.getStartIndex(), 0);
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
-                "... 2. Herkunft Die aus dem proto-semitischen [{15:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
+                "... 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><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>");
+                "<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><mark><mark class=\"class-15 level-0\">Alphabet</mark></mark></span><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());
@@ -301,10 +301,10 @@
         assertEquals(kr.getStartIndex(), 0);
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
-                "... 2. Herkunft Die aus dem proto-semitischen [{16:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
+                "... 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><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>");
+                "<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><mark><mark class=\"class-16 level-0\">Alphabet</mark></mark></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 127
         json = getString(getClass().getResource(
@@ -317,10 +317,10 @@
         assertEquals(kr.getStartIndex(), 0);
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
-                "... 2. Herkunft Die aus dem proto-semitischen [{127:Alphabet}] stammende Urform des Buchstaben ist wahrscheinlich ...");
+                "... 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><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>");
+                "<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><mark><mark class=\"class-127 level-0\">Alphabet</mark></mark></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 255
         json = getString(getClass().getResource(
@@ -333,10 +333,10 @@
         assertEquals(kr.getStartIndex(), 0);
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
-                "... 2. Herkunft Die aus dem proto-semitischen [Alphabet] stammende Urform des Buchstaben ist wahrscheinlich ...");
+                "... 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><mark>Alphabet</mark><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
+                "<span class=\"context-left\"><span class=\"more\"></span>2. Herkunft Die aus dem proto-semitischen </span><span class=\"match\"><mark>Alphabet</mark></span><span class=\"context-right\"> stammende Urform des Buchstaben ist wahrscheinlich<span class=\"more\"></span></span>");
 
         // 300
         json = getString(getClass().getResource(
@@ -380,14 +380,14 @@
 
         Result kr = ki.search(qs);
         assertEquals((long) 1, kr.getTotalResults());
-        assertEquals("[Mit \"Mann\" & \\{Ma\\\\us\\}]", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("<span class=\"context-left\"></span><mark>Mit &quot;Mann&quot; &amp; {Ma\\us}</mark><span class=\"context-right\"></span>", kr.getMatch(0).getSnippetHTML());
+        assertEquals("[[Mit \"Mann\" & \\{Ma\\\\us\\}]]", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("<span class=\"context-left\"></span><span class=\"match\"><mark>Mit &quot;Mann&quot; &amp; {Ma\\us}</mark></span><span class=\"context-right\"></span>", kr.getMatch(0).getSnippetHTML());
         assertEquals("match-c1/d1/1-p0-4", kr.getMatch(0).getID());
 
         Match km = ki.getMatchInfo("match-c1/d1/1-p0-4", "base", true, (ArrayList) null, (ArrayList) null, true, true, false);
         assertEquals(0, km.getStartPos());
         assertEquals("<span class=\"context-left\"></span>"+
-                     "<mark><span title=\"base/t:t\">"+
+                     "<span class=\"match\"><mark><span title=\"base/t:t\">"+
                      "Mit "+
                      "<span title=\"base/l:&quot;Mann&quot;\">"+
                      "&quot;Mann&quot;"+
@@ -397,7 +397,7 @@
                      " "+
                      "{Ma\\us}"+
                      "</span>"+
-                     "</mark>"+
+                     "</mark></span>"+
                      "<span class=\"context-right\"></span>",
                      km.getSnippetHTML());
     };
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestClassFilterIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestClassFilterIndex.java
index 4abea57..e15c3d1 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestClassFilterIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestClassFilterIndex.java
@@ -51,24 +51,24 @@
         assertEquals(1, kr.getMatch(0).getStartPos());
         assertEquals(5, kr.getMatch(0).getEndPos());
         assertEquals(
-                "Frankenstein, [{2:treat {1:my daughter} well}]. She is the one that saved ...",
+                "Frankenstein, [[{2:treat {1:my daughter} well}]]. She is the one that saved ...",
                 kr.getMatch(0).getSnippetBrackets());
         assertEquals(6, kr.getMatch(1).getStartPos());
         assertEquals(18, kr.getMatch(1).getEndPos());
         assertEquals(
-                "Frankenstein, treat my daughter well. She [{2:is {1:the one} that saved "
-                        + "your master who you hold so dear}].", kr.getMatch(1)
+                "Frankenstein, treat my daughter well. She [[{2:is {1:the one} that saved "
+                        + "your master who you hold so dear}]].", kr.getMatch(1)
                         .getSnippetBrackets());
         assertEquals(
-                "Frankenstein, treat my daughter well. She [{2:is {1:the one that "
-                        + "saved your master who you hold so dear}}].", kr
+                "Frankenstein, treat my daughter well. She [[{2:is {1:the one that "
+                        + "saved your master who you hold so dear}}]].", kr
                         .getMatch(2).getSnippetBrackets());
         assertEquals(
-                "Frankenstein, treat my daughter well. She [{2:is the one that "
-                        + "saved {1:your master} who you hold so dear}].", kr
+                "Frankenstein, treat my daughter well. She [[{2:is the one that "
+                        + "saved {1:your master} who you hold so dear}]].", kr
                         .getMatch(3).getSnippetBrackets());
         assertEquals(
-                "Frankenstein, treat my daughter well. She [{2:is the one that saved your master who {1:you} hold so dear}].",
+                "Frankenstein, treat my daughter well. She [[{2:is the one that saved your master who {1:you} hold so dear}]].",
                 kr.getMatch(4).getSnippetBrackets());
 
     }
@@ -107,19 +107,19 @@
         assertEquals(5, kr.getMatch(0).getEndPos());
 
         assertEquals(
-                "[{1:Frankenstein}, {2:treat my daughter well}]. She is the one that saved ...",
+                "[[{1:Frankenstein}, {2:treat my daughter well}]]. She is the one that saved ...",
                 kr.getMatch(0).getSnippetBrackets());
 
         assertEquals(1, kr.getMatch(1).getStartPos());
         assertEquals(6, kr.getMatch(1).getEndPos());
         assertEquals(
-                "Frankenstein, [{2:treat my daughter well}. {1:She}] is the one that saved your ...",
+                "Frankenstein, [[{2:treat my daughter well}. {1:She}]] is the one that saved your ...",
                 kr.getMatch(1).getSnippetBrackets());
 
         assertEquals(5, kr.getMatch(2).getStartPos());
         assertEquals(18, kr.getMatch(2).getEndPos());
         assertEquals(
-                "Frankenstein, treat my daughter well. [{1:She} {2:is the one that saved your master who you hold so dear}].",
+                "Frankenstein, treat my daughter well. [[{1:She} {2:is the one that saved your master who you hold so dear}]].",
                 kr.getMatch(2).getSnippetBrackets());
     }
 
@@ -186,13 +186,13 @@
         assertEquals(0, kr.getMatch(0).getStartPos());
         assertEquals(3, kr.getMatch(0).getEndPos());
         assertEquals(
-                "[{1:Frankenstein}, treat {2:my}] daughter well. She is the one ...",
+                "[[{1:Frankenstein}, treat {2:my}]] daughter well. She is the one ...",
                 kr.getMatch(0).getSnippetBrackets());
 
         assertEquals(5, kr.getMatch(3).getStartPos());
         assertEquals(9, kr.getMatch(3).getEndPos());
         assertEquals(
-                "Frankenstein, treat my daughter well. [{2:She} is {1:the one}] that saved your master who you ...",
+                "Frankenstein, treat my daughter well. [[{2:She} is {1:the one}]] that saved your master who you ...",
                 kr.getMatch(3).getSnippetBrackets());
         // she is both prp and np
     }
@@ -242,12 +242,12 @@
         assertEquals(0, kr.getMatch(0).getStartPos());
         assertEquals(3, kr.getMatch(0).getEndPos());
         assertEquals(
-                "[{1:Frankenstein, {2:{3:treat}}}{2: my}] daughter well. She is the one ...",
+                "[[{1:Frankenstein, {2:{3:treat}}}{2: my}]] daughter well. She is the one ...",
                 kr.getMatch(0).getSnippetBrackets());
         assertEquals(1, kr.getMatch(1).getStartPos());
         assertEquals(4, kr.getMatch(1).getEndPos());
         assertEquals(
-                "Frankenstein, [{1:{2:{3:treat} my} daughter}] well. She is the one that ...",
+                "Frankenstein, [[{1:{2:{3:treat} my} daughter}]] well. She is the one that ...",
                 kr.getMatch(1).getSnippetBrackets());
     }
 
@@ -296,7 +296,7 @@
         assertEquals(6, kr.getMatch(0).getStartPos());
         assertEquals(18, kr.getMatch(0).getEndPos());
         assertEquals(
-                "Frankenstein, treat my daughter well. She [{2:is the {1:one} that saved {1:your} master who you hold so dear}].",
+                "Frankenstein, treat my daughter well. She [[{2:is the {1:one} that saved {1:your} master who you hold so dear}]].",
                 kr.getMatch(0).getSnippetBrackets());
     }
 
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 c44e4fd..2268d5b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestClassIndex.java
@@ -47,12 +47,12 @@
         assertEquals("totalResults", kr.getTotalResults(), 1);
         assertEquals("StartPos (0)", 7, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 9, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "... bcabca[ba]c", kr.getMatch(0)
+        assertEquals("SnippetBrackets (0)", "... bcabca[[ba]]c", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetHTML (0)",
                 "<span class=\"context-left\"><span class=\"more\">"
-                        + "</span>bcabca</span><mark>ba</mark><span class=\"context-right"
+                        + "</span>bcabca</span><span class=\"match\"><mark>ba</mark></span><span class=\"context-right"
                         + "\">c</span>", kr.getMatch(0).getSnippetHTML());
 
         sq = new SpanTermQuery(new Term("base", "s:b"));
@@ -61,23 +61,23 @@
         assertEquals("totalResults", kr.getTotalResults(), 3);
         assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "a[b]cabcab ...", kr.getMatch(0)
+        assertEquals("SnippetBrackets (0)", "a[[b]]cabcab ...", kr.getMatch(0)
                 .getSnippetBrackets());
 
 
         assertEquals(
                 "SnippetHTML (0)",
-                "<span class=\"context-left\">a</span><mark>"
-                        + "b</mark><span class=\"context-right\">cabcab<span class=\"more\"></span></span>",
+                "<span class=\"context-left\">a</span><span class=\"match\"><mark>"
+                        + "b</mark></span><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[b]cabac", kr.getMatch(1)
+        assertEquals("SnippetBrackets (1)", "abca[[b]]cabac", kr.getMatch(1)
                 .getSnippetBrackets());
         assertEquals("StartPos (2)", 7, kr.getMatch(2).startPos);
         assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
-        assertEquals("SnippetBrackets (2)", "... bcabca[b]ac", kr.getMatch(2)
+        assertEquals("SnippetBrackets (2)", "... bcabca[[b]]ac", kr.getMatch(2)
                 .getSnippetBrackets());
 
         sq = new SpanClassQuery(new SpanTermQuery(new Term("base", "s:b")));
@@ -86,23 +86,23 @@
         assertEquals("totalResults", kr.getTotalResults(), 3);
         assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
-        assertEquals("snippetBrackets (0)", "a[{1:b}]cabcab ...", kr
+        assertEquals("snippetBrackets (0)", "a[[{1:b}]]cabcab ...", kr
                 .getMatch(0).getSnippetBrackets());
         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 "
+                "<span class=\"context-left\">a</span><span class=\"match\"><mark>"
+                        + "<mark class=\"class-1 level-0\">b</mark></mark></span><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[{1:b}]cabac", kr.getMatch(1)
+        assertEquals("snippetBrackets (1)", "abca[[{1:b}]]cabac", kr.getMatch(1)
                 .getSnippetBrackets());
 
         assertEquals("StartPos (2)", 7, kr.getMatch(2).startPos);
         assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
-        assertEquals("snippetBrackets (2)", "... bcabca[{1:b}]ac",
+        assertEquals("snippetBrackets (2)", "... bcabca[[{1:b}]]ac",
                 kr.getMatch(2).getSnippetBrackets());
 
 
@@ -115,21 +115,21 @@
         assertEquals("totalResults", kr.getTotalResults(), 3);
         assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "[a{1:b}]cabcab ...", kr
+        assertEquals("SnippetBrackets (0)", "[[a{1:b}]]cabcab ...", kr
                 .getMatch(0).getSnippetBrackets());
 
         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>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark>a<mark class=\"class-1 level-0\">b</mark></mark></span><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);
-        assertEquals("SnippetBrackets (1)", "abc[a{1:b}]cabac", kr.getMatch(1)
+        assertEquals("SnippetBrackets (1)", "abc[[a{1:b}]]cabac", kr.getMatch(1)
                 .getSnippetBrackets());
         assertEquals("StartPos (2)", 6, kr.getMatch(2).startPos);
         assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
-        assertEquals("SnippetBrackets (2)", "abcabc[a{1:b}]ac", kr.getMatch(2)
+        assertEquals("SnippetBrackets (2)", "abcabc[[a{1:b}]]ac", kr.getMatch(2)
                 .getSnippetBrackets());
 
 
@@ -142,16 +142,16 @@
 
         assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "[{2:a}{3:b}]cabcab ...", kr
+        assertEquals("SnippetBrackets (0)", "[[{2:a}{3:b}]]cabcab ...", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("StartPos (1)", 3, kr.getMatch(1).startPos);
         assertEquals("EndPos (1)", 5, kr.getMatch(1).endPos);
-        assertEquals("SnippetBrackets (1)", "abc[{2:a}{3:b}]cabac", kr
+        assertEquals("SnippetBrackets (1)", "abc[[{2:a}{3:b}]]cabac", kr
                 .getMatch(1).getSnippetBrackets());
 
         assertEquals("StartPos (2)", 6, kr.getMatch(2).startPos);
         assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
-        assertEquals("SnippetBrackets (2)", "abcabc[{2:a}{3:b}]ac", kr
+        assertEquals("SnippetBrackets (2)", "abcabc[[{2:a}{3:b}]]ac", kr
                 .getMatch(2).getSnippetBrackets());
 
         // abcabcabac
@@ -163,31 +163,31 @@
         kr = ki.search(sq, (short) 10);
 
         assertEquals("totalResults", kr.getTotalResults(), 1);
-        assertEquals("SnippetBrackets (0)", "abcabc[a{2:b{1:a}}]c", kr
+        assertEquals("SnippetBrackets (0)", "abcabc[[a{2:b{1:a}}]]c", kr
                 .getMatch(0).getSnippetBrackets());
         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>",
+                "<span class=\"context-left\">abcabc</span><span class=\"match\"><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark></span><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
+        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><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>",
+                "<span class=\"context-left\"><span class=\"more\"></span>bc</span><span class=\"match\"><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark></span><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
+        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><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>",
+                "<span class=\"context-left\"><span class=\"more\"></span>bc</span><span class=\"match\"><mark>a<mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark></span><span class=\"context-right\">c</span>",
                 kr.getMatch(0).getSnippetHTML());
 
 
@@ -245,8 +245,7 @@
 
         SpanQuery sq;
         Result kr;
-
-        /*
+/*
         sq = new SpanNextQuery(
                new SpanTermQuery(new Term("base", "s:c")),
                new SpanElementQuery("base", "x")
@@ -254,10 +253,9 @@
         
         kr = ki.search(sq, (short) 10);
         assertEquals("ab[cabca]bac", kr.getMatch(0).getSnippetBrackets());
-        System.err.println();
-        */
-
+*/
         /*
+     System.err.println();
         sq = new SpanNextQuery(
                new SpanElementQuery("base", "x"),
                new SpanTermQuery(new Term("base", "s:b"))
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
index f63f299..21f8ba7 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
@@ -231,7 +231,7 @@
 
         kr = ki.search(sqwi.toQuery(), (short) 10);
         assertEquals(kr.getTotalResults(), 1);
-        assertEquals("[ecebdc]", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("[[ecebdc]]", kr.getMatch(0).getSnippetBrackets());
 
         sqwi = jsonQuery(getClass().getResource(
                 "/queries/distances/in-same-t.jsonld").getFile());
@@ -242,7 +242,7 @@
 
         kr = ki.search(sqwi.toQuery(), (short) 10);
         assertEquals(1, kr.getTotalResults()); // Is 1 correct or should it not be ordered?
-        assertEquals("[ec]ebdc", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("[[ec]]ebdc", kr.getMatch(0).getSnippetBrackets());
     };
 
     public static String getString (String path) {
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestElementIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestElementIndex.java
index 48850e5..3c83f4f 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementIndex.java
@@ -239,9 +239,9 @@
         Result kr = ki.search(sq, 0, (short) 15, false, (short) 3, false,
                 (short) 3);
 
-        assertEquals("... ccc[222222]fff ...", kr.getMatch(0)
+        assertEquals("... ccc[[222222]]fff ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... fff[333333]iii ...", kr.getMatch(1)
+        assertEquals("... fff[[333333]]iii ...", kr.getMatch(1)
                 .getSnippetBrackets());
     };
 
@@ -276,10 +276,10 @@
         Result kr = ki.search(sq, 0, (short) 15, false, (short) 3, false,
                 (short) 3);
 
-        assertEquals("[111111]ccc ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("... ccc[222222]fff ...", kr.getMatch(1)
+        assertEquals("[[111111]]ccc ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... ccc[[222222]]fff ...", kr.getMatch(1)
                 .getSnippetBrackets());
-        assertEquals("... fff[333333]iii ...", kr.getMatch(2)
+        assertEquals("... fff[[333333]]iii ...", kr.getMatch(2)
                 .getSnippetBrackets());
     };
 
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 71532e0..0112f40 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
@@ -136,7 +136,7 @@
         assertEquals(km.getPubPlace(), "Bochum");
         assertEquals(km.getPubDate().toDisplay(), "2013-06-17");
 
-        assertEquals(km.getSnippetBrackets(), "a[{3:b}]c");
+        assertEquals(km.getSnippetBrackets(), "a[[{3:b}]]c");
     };
 
 
@@ -177,7 +177,7 @@
         meta.getContext().right.setToken(true).setLength(6);
 
         assertEquals(
-                "... okal. [Der Buchstabe A hat in {1:deutschen Texten} eine durchschnittliche Häufigkeit von 6,51 %.] Er ist damit der sechsthäufigste Buchstabe ...",
+                "... okal. [[Der Buchstabe A hat in {1:deutschen Texten} eine durchschnittliche Häufigkeit von 6,51 %.]] Er ist damit der sechsthäufigste Buchstabe ...",
                 ks.apply(ki).getMatch(0).getSnippetBrackets());
     };
 
@@ -206,7 +206,7 @@
                 false, (short) 5);
 
         assertEquals(1, kr.getTotalResults());
-        assertEquals("... bezeichnen, sofern [{1:der} schwedische Buchstabe „Å“ nicht] verfügbar ist im SI-Einheitensystem ist ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... bezeichnen, sofern [[{1:der} schwedische Buchstabe „Å“ nicht]] verfügbar ist im SI-Einheitensystem ist ...", kr.getMatch(0).getSnippetBrackets());
     };
 
 
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 8b1985f..ba13544 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -127,7 +127,7 @@
 
         Match km = kr.getMatch(0);
 
-        assertEquals("SnippetBrackets (0)", "... bcabca[{2:b{1:a}}]c",
+        assertEquals("SnippetBrackets (0)", "... bcabca[[{2:b{1:a}}]]c",
                 km.getSnippetBrackets());
         assertEquals("ID (0)", "match-c1!d1-p7-9(2)7-8(1)8-8", km.getID());
     };
@@ -144,7 +144,7 @@
         assertEquals("StartPos (0)", 7, km.getStartPos());
         assertEquals("EndPos (0)", 9, km.getEndPos());
 
-        assertEquals("SnippetBrackets (0)", "... [{2:b{a}}] ...",
+        assertEquals("SnippetBrackets (0)", "... [[{2:b{a}}]] ...",
                 km.getSnippetBrackets());
 
         assertEquals("ID (0)", "match-c1!d1-p7-9(0)8-8(2)7-8", km.getID());
@@ -153,27 +153,27 @@
                 "m", false, false);
 
         assertEquals("SnippetBrackets (1)",
-                "... [{f/m:acht:b}{f/m:neun:a}] ...", km.getSnippetBrackets());
+                "... [[{f/m:acht:b}{f/m:neun:a}]] ...", km.getSnippetBrackets());
 
 
         km = ki.getMatchInfo("match-c1!d1-p7-9(0)8-8(2)7-8", "tokens", "f",
                 null, false, false);
         assertEquals("SnippetBrackets (1b)",
-                "... [{f/m:acht:{f/y:eight:b}}{f/m:neun:{f/y:nine:a}}] ...",
+                "... [[{f/m:acht:{f/y:eight:b}}{f/m:neun:{f/y:nine:a}}]] ...",
                 km.getSnippetBrackets());
 
         km = ki.getMatchInfo("match-c1!d1-p7-9(0)8-8(2)7-8", "tokens", "f",
                 "m", false, true);
 
         assertEquals("SnippetBrackets (2)",
-                "... [{2:{f/m:acht:b}{{f/m:neun:a}}}] ...",
+                "... [[{2:{f/m:acht:b}{{f/m:neun:a}}}]] ...",
                 km.getSnippetBrackets());
 
         km = ki.getMatchInfo("match-c1!d1-p7-9(4)8-8(2)7-8", "tokens", "f",
                 "m", false, true);
 
         assertEquals("SnippetBrackets (3)",
-                "... [{2:{f/m:acht:b}{4:{f/m:neun:a}}}] ...",
+                "... [[{2:{f/m:acht:b}{4:{f/m:neun:a}}}]] ...",
                 km.getSnippetBrackets());
 
         km = ki.getMatchInfo("match-c1!d1-p7-9(4)8-8(2)7-8", "tokens", "f",
@@ -181,18 +181,19 @@
 
         assertEquals(
                 "SnippetBrackets (4)",
-                "... [{2:{f/m:acht:{f/y:eight:b}}{4:{f/m:neun:{f/y:nine:a}}}}] ...",
+                "... [[{2:{f/m:acht:{f/y:eight:b}}{4:{f/m:neun:{f/y:nine:a}}}}]] ...",
                 km.getSnippetBrackets());
 
         assertEquals("SnippetHTML (4)", "<span class=\"context-left\">"
-                + "<span class=\"more\">" + "</span>" + "</span>" + "<mark>"
+                + "<span class=\"more\">" + "</span>" + "</span>" +
+		     "<span class=\"match\">" + "<mark>"
                 + "<mark class=\"class-2 level-0\">"
                 + "<span title=\"f/m:acht\">" + "<span title=\"f/y:eight\">"
                 + "b" + "</span>" + "</span>"
                 + "<mark class=\"class-4 level-1\">"
                 + "<span title=\"f/m:neun\">" + "<span title=\"f/y:nine\">"
                 + "a" + "</span>" + "</span>" + "</mark>" + "</mark>"
-                + "</mark>" + "<span class=\"context-right\">"
+		     + "</mark>" + "</span>" + "<span class=\"context-right\">"
                 + "<span class=\"more\">" + "</span>" + "</span>",
                 km.getSnippetHTML());
 
@@ -219,7 +220,7 @@
 
 
         assertEquals("SnippetHTML (1)", "<span class=\"context-left\">"
-                + "<span class=\"more\">" + "</span>" + "</span>" + "<mark>"
+                + "<span class=\"more\">" + "</span>" + "</span>" + "<span class=\"match\">" + "<mark>"
                 + "<mark class=\"class-2 level-0\">"
                 + "<span title=\"f/m:acht\">" + "<span title=\"f/y:eight\">"
                 + "<span title=\"it/is:8\">" + "<span title=\"x/o:achtens\">"
@@ -228,7 +229,7 @@
                 + "<span title=\"f/m:neun\">" + "<span title=\"f/y:nine\">"
                 + "<span title=\"it/is:9\">" + "<span title=\"x/o:neuntens\">"
                 + "a" + "</span>" + "</span>" + "</span>" + "</span>"
-                + "</mark>" + "</mark>" + "</mark>"
+                + "</mark>" + "</mark>"  + "</mark>" + "</span>"
                 + "<span class=\"context-right\">" + "<span class=\"more\">"
                 + "</span>" + "</span>", km.getSnippetHTML());
     };
@@ -245,14 +246,14 @@
 
 
         assertEquals("SnippetHTML (1)", "<span class=\"context-left\">"
-                + "<span class=\"more\">" + "</span>" + "</span>" + "<mark>"
+                + "<span class=\"more\">" + "</span>" + "</span>" + "<span class=\"match\">" + "<mark>"
                 + "<span title=\"f/m:acht\">" + "<span title=\"f/y:eight\">"
                 + "<span title=\"it/is:8\">" + "<span title=\"x/o:achtens\">"
                 + "b" + "</span>" + "</span>" + "</span>" + "</span>"
                 + "<span title=\"f/m:neun\">" + "<span title=\"f/y:nine\">"
                 + "<span title=\"it/is:9\">" + "<span title=\"x/o:neuntens\">"
                 + "a" + "</span>" + "</span>" + "</span>" + "</span>"
-                + "</mark>" + "<span class=\"context-right\">"
+                + "</mark>" + "</span>" + "<span class=\"context-right\">"
                 + "<span class=\"more\">" + "</span>" + "</span>",
                 km.getSnippetHTML());
     };
@@ -286,7 +287,7 @@
 
         assertEquals(
                 "SnippetBrackets (1)",
-                "... [{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}] ...",
+                "... [[{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}]] ...",
                 km.getSnippetBrackets());
     };
 
@@ -303,7 +304,7 @@
 
         assertEquals(
                 "SnippetBrackets (1)",
-                "... [{x/tag:{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}{f/m:zehn:{f/y:ten:{it/is:10:{x/o:zehntens:c}}}}}]",
+                "... [[{x/tag:{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}{f/m:zehn:{f/y:ten:{it/is:10:{x/o:zehntens:c}}}}}]]",
                 km.getSnippetBrackets());
     };
 
@@ -320,11 +321,12 @@
 
         assertEquals(
                 "SnippetBrackets (1)",
-                "... [{x/tag:{2:{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{4:{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}}}{f/m:zehn:{f/y:ten:{it/is:10:{x/o:zehntens:c}}}}}]",
+                "... [[{x/tag:{2:{f/m:acht:{f/y:eight:{it/is:8:{x/o:achtens:b}}}}{4:{f/m:neun:{f/y:nine:{it/is:9:{x/o:neuntens:a}}}}}}{f/m:zehn:{f/y:ten:{it/is:10:{x/o:zehntens:c}}}}}]]",
                 km.getSnippetBrackets());
 
         assertEquals("SnippetHTML (1)", "<span class=\"context-left\">"
-                + "<span class=\"more\">" + "</span>" + "</span>" + "<mark>"
+                + "<span class=\"more\">" + "</span>" + "</span>" +
+		     "<span class=\"match\">" +"<mark>"
                 + "<span title=\"x/tag\">" + "<mark class=\"class-2 level-0\">"
                 + "<span title=\"f/m:acht\">" + "<span title=\"f/y:eight\">"
                 + "<span title=\"it/is:8\">" + "<span title=\"x/o:achtens\">"
@@ -337,6 +339,7 @@
                 + "<span title=\"f/y:ten\">" + "<span title=\"it/is:10\">"
                 + "<span title=\"x/o:zehntens\">" + "c" + "</span>" + "</span>"
                 + "</span>" + "</span>" + "</span>" + "</mark>"
+		     + "</span>"
                 + "<span class=\"context-right\">" + "</span>",
                 km.getSnippetHTML());
     };
@@ -353,26 +356,36 @@
 
         assertEquals(
                 "SnippetBrackets (1)",
-                "[{x/rel:a>3:{x/o:erstens:a}}{x/o:zweitens:b}{x/o:drittens:c}{#3:{x/o:viertens:a}}{x/o:fünftens:b}] ...",
+                "[[{x/rel:a>3:{x/o:erstens:a}}{x/o:zweitens:b}{x/o:drittens:c}{#3:{x/o:viertens:a}}{x/o:fünftens:b}]] ...",
                 km.getSnippetBrackets());
 
-        assertEquals("SnippetBrackets (1)", "<span class=\"context-left\">"
-                + "</span>" + "<mark>" + "<span xlink:title=\"x/rel:a\" "
-                + "xlink:type=\"simple\" " + "xlink:href=\"#word-c1!d1-p3\">"
-                + "<span title=\"x/o:erstens\">" + "a" + "</span>" + "</span>"
-                + "<span title=\"x/o:zweitens\">" + "b" + "</span>"
-                + "<span title=\"x/o:drittens\">" + "c" + "</span>"
-                + "<span xml:id=\"word-c1!d1-p3\">"
-                + "<span title=\"x/o:viertens\">" + "a" + "</span>" + "</span>"
-                + "<span title=\"x/o:fünftens\">" + "b" + "</span>" + "</mark>"
-                + "<span class=\"context-right\">" + "<span class=\"more\">"
-                + "</span>" + "</span>", km.getSnippetHTML());
+        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\">"
+		     + "<span title=\"x/o:erstens\">" + "a" + "</span>" + "</span>"
+		     + "<span title=\"x/o:zweitens\">" + "b" + "</span>"
+		     + "<span title=\"x/o:drittens\">" + "c" + "</span>"
+		     + "<span xml:id=\"word-c1!d1-p3\">"
+		     + "<span title=\"x/o:viertens\">" + "a" + "</span>"
+		     + "</span>"
+		     + "<span title=\"x/o:fünftens\">" + "b" + "</span>"
+		     + "</mark>"
+		     + "</span>"
+		     + "<span class=\"context-right\">" + "<span class=\"more\">"
+		     + "</span>" +
+		     "</span>", km.getSnippetHTML());
 
         km = ki.getMatchInfo("match-c1!d1-p0-5(7)2-3(4)8-8(2)7-8", "tokens",
                 "x", null, true, true);
 
         assertEquals("SnippetBrackets (1)", "<span class=\"context-left\">"
-                + "</span>" + "<mark>" + "<span xlink:title=\"x/rel:a\" "
+                + "</span>" +
+		     "<span class=\"match\">" +
+		     "<mark>" + "<span xlink:title=\"x/rel:a\" "
                 + "xlink:type=\"simple\" " + "xlink:href=\"#word-c1!d1-p3\">"
                 + "<span title=\"x/o:erstens\">" + "a" + "</span>" + "</span>"
                 + "<span title=\"x/o:zweitens\">" + "b" + "</span>"
@@ -381,7 +394,9 @@
                 + "<span xml:id=\"word-c1!d1-p3\">"
                 + "<span title=\"x/o:viertens\">" + "a" + "</span>" + "</span>"
                 + "</mark>" + "<span title=\"x/o:fünftens\">" + "b" + "</span>"
-                + "</mark>" + "<span class=\"context-right\">"
+                + "</mark>" +
+"</span>" +
+		     "<span class=\"context-right\">"
                 + "<span class=\"more\">" + "</span>" + "</span>",
                 km.getSnippetHTML());
     };
@@ -402,7 +417,7 @@
                 false);
 
         assertEquals(
-                "... [{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}] ...",
+                "... [[{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}]] ...",
                 km.getSnippetBrackets());
 
 
@@ -417,7 +432,7 @@
 
         assertEquals(
                 "<span class=\"context-left\"></span>"+
-                "<mark>"+
+		"<span class=\"match\">" +
                 "<span title=\"f/m:drei\">"+
                 "<span title=\"f/y:three\">"+
                 "<span title=\"it/is:3\">"+
@@ -441,7 +456,7 @@
                 "</span>"+
                 "</span>"+
                 "</span>"+
-                "</mark>"+
+		"</span>" +
                 "<span class=\"context-right\"></span>",
                 km.getSnippetHTML());
 
@@ -479,6 +494,7 @@
                 "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\">"
@@ -505,7 +521,8 @@
                         + "<span title=\"f/y:four\">"
                         + "<span title=\"it/is:4\">"
                         + "<span title=\"x/o:viertens\">a</span>" + "</span>"
-                        + "</span>" + "</span>" + "</span>" + "</mark>"
+                        + "</span>" + "</span>"  + "</span>" + "</mark>"
+		+ "</span>"
                         + "<span class=\"context-right\">"
                         + "<span class=\"more\">" + "</span>" + "</span>",
                 km.getSnippetHTML());
@@ -524,20 +541,20 @@
         assertEquals(
                 "f:m info",
                 km.getSnippetBrackets(),
-                "... [{f/m:vier:a}{f/m:fuenf:b}{f/m:sechs:c}{f/m:sieben:a}{f/m:acht:b}{f/m:neun:a}] ...");
+                "... [[{f/m:vier:a}{f/m:fuenf:b}{f/m:sechs:c}{f/m:sieben:a}{f/m:acht:b}{f/m:neun:a}]] ...");
 
         km = ki.getMatchInfo("match-c1!d4-p3-9", "tokens", "f", null, false,
                 false);
         assertEquals(
                 "f info",
                 km.getSnippetBrackets(),
-                "... [{f/m:vier:{f/y:four:a}}{f/m:fuenf:{f/y:five:b}}{f/m:sechs:{f/y:six:c}}{f/m:sieben:{f/y:seven:a}}{f/m:acht:{f/y:eight:b}}{f/m:neun:{f/y:nine:a}}] ...");
+                "... [[{f/m:vier:{f/y:four:a}}{f/m:fuenf:{f/y:five:b}}{f/m:sechs:{f/y:six:c}}{f/m:sieben:{f/y:seven:a}}{f/m:acht:{f/y:eight:b}}{f/m:neun:{f/y:nine:a}}]] ...");
 
 
         km = ki.getMatchInfo("match-c1!d4-p3-4", "tokens", null, null, false,
                 false);
         assertEquals("all info", km.getSnippetBrackets(),
-                "... [{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}] ...");
+                "... [[{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}]] ...");
 
         ArrayList<String> foundryList = new ArrayList<>(2);
         foundryList.add("f");
@@ -546,7 +563,7 @@
         km = ki.getMatchInfo("match-c1!d4-p3-4", "tokens", true, foundryList,
                 (ArrayList<String>) null, false, false, false);
         assertEquals("f|x info", km.getSnippetBrackets(),
-                "... [{f/m:vier:{f/y:four:{x/o:viertens:a}}}] ...");
+                "... [[{f/m:vier:{f/y:four:{x/o:viertens:a}}}]] ...");
 
         foundryList.clear();
         foundryList.add("y");
@@ -555,7 +572,7 @@
         km = ki.getMatchInfo("match-c1!d4-p3-4", "tokens", true, foundryList,
                 (ArrayList<String>) null, false, false, false);
         assertEquals("y|x info", km.getSnippetBrackets(),
-                "... [{x/o:viertens:a}] ...");
+                "... [[{x/o:viertens:a}]] ...");
 
 
         foundryList.clear();
@@ -568,7 +585,7 @@
         km = ki.getMatchInfo("match-c1!d4-p3-4", "tokens", true, foundryList,
                 layerList, false, false, false);
         assertEquals("f|it/is", km.getSnippetBrackets(),
-                "... [{it/is:4:a}] ...");
+                "... [[{it/is:4:a}]] ...");
     };
 
 
@@ -614,7 +631,7 @@
         assertEquals("c1", res.at("/corpusID").asText());
         assertEquals("d4", res.at("/docID").asText());
         assertEquals(
-                "<span class=\"context-left\"><span class=\"more\"></span></span><mark><span title=\"f/m:vier\"><span title=\"f/y:four\"><span title=\"it/is:4\"><span title=\"x/o:viertens\">a</span></span></span></span><span title=\"f/m:fuenf\"><span title=\"f/y:five\"><span title=\"it/is:5\"><span title=\"x/o:fünftens\">b</span></span></span></span><span title=\"f/m:sechs\"><span title=\"f/y:six\"><span title=\"it/is:6\"><span title=\"x/o:sechstens\">c</span></span></span></span><span title=\"f/m:sieben\"><span title=\"f/y:seven\"><span title=\"it/is:7\"><span title=\"x/o:siebtens\">a</span></span></span></span><span title=\"f/m:acht\"><span title=\"f/y:eight\"><span title=\"it/is:8\"><span title=\"x/o:achtens\">b</span></span></span></span><span title=\"f/m:neun\"><span title=\"f/y:nine\"><span title=\"it/is:9\"><span title=\"x/o:neuntens\">a</span></span></span></span></mark><span class=\"context-right\"><span class=\"more\"></span></span>",
+                "<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\"><mark><span title=\"f/m:vier\"><span title=\"f/y:four\"><span title=\"it/is:4\"><span title=\"x/o:viertens\">a</span></span></span></span><span title=\"f/m:fuenf\"><span title=\"f/y:five\"><span title=\"it/is:5\"><span title=\"x/o:fünftens\">b</span></span></span></span><span title=\"f/m:sechs\"><span title=\"f/y:six\"><span title=\"it/is:6\"><span title=\"x/o:sechstens\">c</span></span></span></span><span title=\"f/m:sieben\"><span title=\"f/y:seven\"><span title=\"it/is:7\"><span title=\"x/o:siebtens\">a</span></span></span></span><span title=\"f/m:acht\"><span title=\"f/y:eight\"><span title=\"it/is:8\"><span title=\"x/o:achtens\">b</span></span></span></span><span title=\"f/m:neun\"><span title=\"f/y:nine\"><span title=\"it/is:9\"><span title=\"x/o:neuntens\">a</span></span></span></span></mark></span><span class=\"context-right\"><span class=\"more\"></span></span>",
                 res.at("/snippet").asText());
         assertEquals("match-c1!d4-p3-9", res.at("/matchID").asText());
         assertTrue(res.at("/pubDate").isMissingNode());
@@ -638,7 +655,7 @@
                 + "<span class=\"more\">"
                 + "</span>"
                 + "</span>"
-                + "<mark>"
+                + "<span class=\"match\"><mark>"
                 +
                 //                     "<span title=\"@:x/s:key:value\">"+
                 "<span title=\"f/m:acht\">"
@@ -654,6 +671,7 @@
                 + "<span title=\"f/y:ten\">" + "<span title=\"it/is:10\">"
                 + "<span title=\"x/o:zehntens\">c</span>" + "</span>"
                 + "</span>" + "</span>" + "</mark>"
+		     + "</span>"
                 + "<span class=\"context-right\">" + "</span>",
                 res.at("/snippet").asText());
     };
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 5aacbb5..a8b5491 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
@@ -63,11 +63,11 @@
         assertEquals("totalResults", kr.getTotalResults(), 2);
         assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 3, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "a[{3:{1:b}{2:c}}]abcaba ...", kr
+        assertEquals("SnippetBrackets (0)", "a[[{3:{1:b}{2:c}}]]abcaba ...", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("StartPos (1)", 4, kr.getMatch(1).startPos);
         assertEquals("EndPos (1)", 6, kr.getMatch(1).endPos);
-        assertEquals("SnippetBrackets (1)", "abca[{3:{1:b}{2:c}}]abac", kr
+        assertEquals("SnippetBrackets (1)", "abca[[{3:{1:b}{2:c}}]]abac", kr
                 .getMatch(1).getSnippetBrackets());
 
         assertEquals("Document count", 1, ki.numberOf("base", "documents"));
@@ -86,7 +86,8 @@
                 + "[(1-2)s:b|i:b|_1$<i>1<i>2]" + "[(2-3)s:c|i:c|_2$<i>2<i>3]"
                 + "[(3-4)s:a|i:a|_3$<i>3<i>4]" + "[(4-5)s:b|i:b|_4$<i>4<i>5]"
                 + "[(5-6)s:c|i:c|_5$<i>5<i>6]" + "[(6-7)s:a|i:a|_6$<i>6<i>7]"
-                + "[(7-8)s:b|i:b|_7$<i>7<i>8]" + "[(8-9)s:a|i:a|_8$<i>8<i>9]"
+                + "[(7-8)s:b|i:b|_7$<i>7<i>8]" +
+		 "[(8-9)s:a|i:a|_8$<i>8<i>9]"
                 + "[(9-10)s:c|i:c|_9$<i>9<i>10]");
         ki.addDoc(fd);
 
@@ -102,14 +103,17 @@
         assertEquals("totalResults", kr.getTotalResults(), 1);
         assertEquals("StartPos (0)", 7, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 9, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "... bcabca[b{1:a}]c",
+
+        assertEquals("SnippetBrackets (0)", "... bcabca[[b{1:a}]]c",
                 kr.getMatch(0).getSnippetBrackets());
 
-        assertEquals(
+	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>",
+                "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\"><mark>b<mark class=\"class-1 level-0\">a</mark></mark></span><span class=\"context-right\">c</span>",
                 kr.getMatch(0).getSnippetHTML());
-        sq = new SpanFocusQuery(new SpanNextQuery(new SpanTermQuery(new Term(
+
+
+	sq = new SpanFocusQuery(new SpanNextQuery(new SpanTermQuery(new Term(
                 "base", "s:b")), new SpanClassQuery(new SpanTermQuery(new Term(
                 "base", "s:a")))));
         kr = ki.search(sq, (short) 10);
@@ -117,7 +121,7 @@
         assertEquals("totalResults", kr.getTotalResults(), 1);
         assertEquals("StartPos (0)", 8, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 9, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "... cabcab[{1:a}]c", kr
+        assertEquals("SnippetBrackets (0)", "... cabcab[[{1:a}]]c", kr
                 .getMatch(0).getSnippetBrackets());
         sq = new SpanFocusQuery(new SpanNextQuery(new SpanClassQuery(
                 new SpanTermQuery(new Term("base", "s:a")), (byte) 2),
@@ -129,26 +133,26 @@
         assertEquals("totalResults", kr.getTotalResults(), 3);
         assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 2, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "a[{3:b}]cabcab ...", kr
+        assertEquals("SnippetBrackets (0)", "a[[{3:b}]]cabcab ...", kr
                 .getMatch(0).getSnippetBrackets());
 
 
         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>",
+                "<span class=\"context-left\">a</span><span class=\"match\"><mark><mark class=\"class-3 level-0\">b</mark></mark></span><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)
+        assertEquals("SnippetBrackets (1)", "abca[[{3:b}]]cabac", kr.getMatch(1)
                 .getSnippetBrackets());
 
         assertEquals(
-                "<span class=\"context-left\">abca</span><mark><mark class=\"class-3 level-0\">b</mark></mark><span class=\"context-right\">cabac</span>",
+                "<span class=\"context-left\">abca</span><span class=\"match\"><mark><mark class=\"class-3 level-0\">b</mark></mark></span><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);
-        assertEquals("SnippetBrackets (2)", "... bcabca[{3:b}]ac",
+        assertEquals("SnippetBrackets (2)", "... bcabca[[{3:b}]]ac",
                 kr.getMatch(2).getSnippetBrackets());
 
 
@@ -164,18 +168,18 @@
         kr = ki.search(sq, (short) 10);
 
         assertEquals("totalResults", kr.getTotalResults(), 1);
-        assertEquals("SnippetBrackets (0)", "... bcabca[{2:b{1:a}}]c", kr
+        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><mark><mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark><span class=\"context-right\">c</span>",
+                "<span class=\"context-left\"><span class=\"more\"></span>bcabca</span><span class=\"match\"><mark><mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark></span><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)", "... ca[{2:b{1:a}}]c",
+        assertEquals("SnippetBrackets (0)", "... ca[[{2:b{1:a}}]]c",
                 kr.getMatch(0).getSnippetBrackets());
 
 
@@ -183,12 +187,12 @@
         // Offset Characters
         kr = ki.search(sq, 0, (short) 10, false, (short) 1, false, (short) 0);
         assertEquals("totalResults", kr.getTotalResults(), 1);
-        assertEquals("SnippetBrackets (0)", "... a[{2:b{1:a}}] ...", kr
+        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><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>",
+                "<span class=\"context-left\"><span class=\"more\"></span>a</span><span class=\"match\"><mark><mark class=\"class-2 level-0\">b<mark class=\"class-1 level-1\">a</mark></mark></mark></span><span class=\"context-right\"><span class=\"more\"></span></span>",
                 kr.getMatch(0).getSnippetHTML());
 
 
@@ -213,11 +217,11 @@
         assertEquals("totalResults", kr.getTotalResults(), 2);
         assertEquals("StartPos (0)", 1, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 3, kr.getMatch(0).endPos);
-        assertEquals("SnippetBrackets (0)", "a[{1:bc}]abcaba ...",
+        assertEquals("SnippetBrackets (0)", "a[[{1:bc}]]abcaba ...",
                 kr.getMatch(0).getSnippetBrackets());
         assertEquals("StartPos (1)", 4, kr.getMatch(1).startPos);
         assertEquals("EndPos (1)", 6, kr.getMatch(1).endPos);
-        assertEquals("SnippetBrackets (1)", "abca[{1:bc}]abac", kr.getMatch(1)
+        assertEquals("SnippetBrackets (1)", "abca[[{1:bc}]]abac", kr.getMatch(1)
                 .getSnippetBrackets());
 
         assertEquals(1, ki.numberOf("base", "documents"));
@@ -251,47 +255,47 @@
         assertEquals("totalResults", kr.getTotalResults(), 7);
         assertEquals(
                 "SnippetBrackets (0)",
-                "<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\">bcabca<span class=\"more\"></span></span>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark>a</mark></span><span class=\"context-right\">bcabca<span class=\"more\"></span></span>",
                 kr.getMatch(0).getSnippetHTML());
-        assertEquals("SnippetBrackets (0)", "[a]bcabca ...", kr.getMatch(0)
+        assertEquals("SnippetBrackets (0)", "[[a]]bcabca ...", kr.getMatch(0)
                 .getSnippetBrackets());
 
-        assertEquals("SnippetBrackets (1)", "ab[c]abcaba ...", kr.getMatch(1)
+        assertEquals("SnippetBrackets (1)", "ab[[c]]abcaba ...", kr.getMatch(1)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetBrackets (1)",
-                "<span class=\"context-left\">ab</span><mark>c</mark><span class=\"context-right\">abcaba<span class=\"more\"></span></span>",
+                "<span class=\"context-left\">ab</span><span class=\"match\"><mark>c</mark></span><span class=\"context-right\">abcaba<span class=\"more\"></span></span>",
                 kr.getMatch(1).getSnippetHTML());
 
-        assertEquals("SnippetBrackets (6)", "... abcaba[c]", kr.getMatch(6)
+        assertEquals("SnippetBrackets (6)", "... abcaba[[c]]", kr.getMatch(6)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetBrackets (6)",
-                "<span class=\"context-left\"><span class=\"more\"></span>abcaba</span><mark>c</mark><span class=\"context-right\"></span>",
+                "<span class=\"context-left\"><span class=\"more\"></span>abcaba</span><span class=\"match\"><mark>c</mark></span><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)
+        assertEquals("SnippetBrackets (0)", "[[a]] ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetHTML (0)",
-                "<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\"><span class=\"more\"></span></span>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark>a</mark></span><span class=\"context-right\"><span class=\"more\"></span></span>",
                 kr.getMatch(0).getSnippetHTML());
 
-        assertEquals("SnippetBrackets (1)", "... [c] ...", kr.getMatch(1)
+        assertEquals("SnippetBrackets (1)", "... [[c]] ...", kr.getMatch(1)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetHTML (1)",
-                "<span class=\"context-left\"><span class=\"more\"></span></span><mark>c</mark><span class=\"context-right\"><span class=\"more\"></span></span>",
+                "<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\"><mark>c</mark></span><span class=\"context-right\"><span class=\"more\"></span></span>",
                 kr.getMatch(1).getSnippetHTML());
 
-        assertEquals("SnippetBrackets (6)", "... [c]", kr.getMatch(6)
+        assertEquals("SnippetBrackets (6)", "... [[c]]", kr.getMatch(6)
                 .getSnippetBrackets());
         assertEquals(
                 "SnippetBrackets (6)",
-                "<span class=\"context-left\"><span class=\"more\"></span></span><mark>c</mark><span class=\"context-right\"></span>",
+                "<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\"><mark>c</mark></span><span class=\"context-right\"></span>",
                 kr.getMatch(6).getSnippetHTML());
     };
 
@@ -323,7 +327,7 @@
         kr = ki.search(sq, 0, (short) 20, true, (short) 2, true, (short) 5);
 
         assertEquals("totalResults", kr.getTotalResults(), 1);
-        assertEquals("SnippetBrackets (0)", "... ca[{1:ba{2:c}}]",
+        assertEquals("SnippetBrackets (0)", "... ca[[{1:ba{2:c}}]]",
                 kr.getMatch(0).getSnippetBrackets());
     };
 
@@ -358,7 +362,7 @@
         Match km = kr.getMatch(0);
         assertEquals("StartPos (0)", 1, km.startPos);
         assertEquals("EndPos (0)", 2, km.endPos);
-        assertEquals("SnippetBrackets (0)", "a[{3:b}]cabcab ...",
+        assertEquals("SnippetBrackets (0)", "a[[{3:b}]]cabcab ...",
                 km.getSnippetBrackets());
 
         sq = new SpanFocusQuery(new SpanFocusQuery(new SpanNextQuery(
@@ -372,7 +376,7 @@
         km = kr.getMatch(0);
         assertEquals("StartPos (0)", 0, km.startPos);
         assertEquals("EndPos (0)", 1, km.endPos);
-        assertEquals("SnippetBrackets (0)", "[{2:a}]bcabca ...",
+        assertEquals("SnippetBrackets (0)", "[[{2:a}]]bcabca ...",
                 km.getSnippetBrackets());
 
         // TODO: Check ID
@@ -417,7 +421,7 @@
         assertEquals(kr.getSerialQuery(),
                 "focus(3: spanContain({2: <base:s />}, {3: base:s:b}))");
 
-        assertEquals(kr.getMatch(0).getSnippetBrackets(), "a[{3:b}]cabcab ...");
+        assertEquals(kr.getMatch(0).getSnippetBrackets(), "a[[{3:b}]]cabcab ...");
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
index 0465585..561d6bb 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestNextIndex.java
@@ -120,7 +120,7 @@
                 new SpanElementQuery("base", "x"));
 
         kr = ki.search(sq, (short) 10);
-        assertEquals("ab[cabca]bac", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("ab[[cabca]]bac", kr.getMatch(1).getSnippetBrackets());
 
     };
 
@@ -148,7 +148,7 @@
                 new SpanTermQuery(new Term("base", "s:b")));
 
         kr = ki.search(sq, (short) 10);
-        assertEquals("abc[abcab]ac", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("abc[[abcab]]ac", kr.getMatch(0).getSnippetBrackets());
     };
 
 
@@ -189,22 +189,22 @@
 
         kr = ki.search(sq, (short) 10);
         assertEquals("TotalResults", kr.getTotalResults(), 2);
-        assertEquals("abc[abcab]ac", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("xbz[xbzxb]xz", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("abc[[abcab]]ac", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("xbz[[xbzxb]]xz", kr.getMatch(1).getSnippetBrackets());
 
         sq = new SpanNextQuery(new SpanTermQuery(new Term("base", "s:c")),
                 new SpanElementQuery("base", "x"));
 
         kr = ki.search(sq, (short) 10);
         assertEquals(kr.getTotalResults(), 1);
-        assertEquals("ab[cabca]bac", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("ab[[cabca]]bac", kr.getMatch(0).getSnippetBrackets());
 
         sq = new SpanNextQuery(new SpanTermQuery(new Term("base", "s:z")),
                 new SpanElementQuery("base", "x"));
 
         kr = ki.search(sq, (short) 10);
         assertEquals(1, kr.getTotalResults());
-        assertEquals("xb[zxbzx]bxz", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("xb[[zxbzx]]bxz", kr.getMatch(0).getSnippetBrackets());
     };
 
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
index 62f239a..1cc71a5 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
@@ -47,42 +47,42 @@
        
         Result kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("affe [afffe] baum ...", kr.getMatch(1)
+        assertEquals("[[affe]] afffe ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("affe [[afffe]] baum ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:baum.*"));
         kr = ki.search(ks);
 
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... afffe [baum] baumgarten ...", kr.getMatch(0)
+        assertEquals("... afffe [[baum]] baumgarten ...", kr.getMatch(0)
                      .getSnippetBrackets());
-        assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(1)
+        assertEquals("... baum [[baumgarten]] steingarten ...", kr.getMatch(1)
                      .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:.....?garten"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(0)
+        assertEquals("... baum [[baumgarten]] steingarten ...", kr.getMatch(0)
                      .getSnippetBrackets());
-        assertEquals("... baumgarten [steingarten] franz ...", kr.getMatch(1)
+        assertEquals("... baumgarten [[steingarten]] franz ...", kr.getMatch(1)
                      .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:ha.s"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... franz [hans] haus ...", kr.getMatch(0)
+        assertEquals("... franz [[hans]] haus ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... hans [haus] efeu ...", kr.getMatch(1)
+        assertEquals("... hans [[haus]] efeu ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:.*ff.*"));
         kr = ki.search(ks);
         assertEquals((long) 3, kr.getTotalResults());
-        assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("affe [afffe] baum ...", kr.getMatch(1)
+        assertEquals("[[affe]] afffe ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("affe [[afffe]] baum ...", kr.getMatch(1)
                 .getSnippetBrackets());
-        assertEquals("... efeu [effe]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("... efeu [[effe]]", kr.getMatch(2).getSnippetBrackets());
     };
 
     @Test
@@ -116,8 +116,8 @@
 
         Result kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("affe [afffe] baum ...", kr.getMatch(1)
+        assertEquals("[[affe]] afffe ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("affe [[afffe]] baum ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").wc("s:baum.*"));
@@ -128,32 +128,32 @@
         ks = _newKrill(new QueryBuilder("base").wc("s:baum*"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... afffe [baum] baumgarten ...", kr.getMatch(0)
+        assertEquals("... afffe [[baum]] baumgarten ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(1)
+        assertEquals("... baum [[baumgarten]] steingarten ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").wc("s:*garten"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(0)
+        assertEquals("... baum [[baumgarten]] steingarten ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... baumgarten [steingarten] franz ...", kr.getMatch(1)
+        assertEquals("... baumgarten [[steingarten]] franz ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").wc("s:ha?s"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... franz [hans] haus ...", kr.getMatch(0)
+        assertEquals("... franz [[hans]] haus ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... hans [haus] efeu ...", kr.getMatch(1)
+        assertEquals("... hans [[haus]] efeu ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").wc("s:?ff?"));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("... efeu [effe]", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("[[affe]] afffe ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("... efeu [[effe]]", kr.getMatch(1).getSnippetBrackets());
     };
 
 
@@ -187,56 +187,56 @@
         Krill ks = _newKrill(sqw);
         Result kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("AfFe [aFfFE] Baum ...", kr.getMatch(1)
+        assertEquals("[[AfFe]] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("AfFe [[aFfFE]] Baum ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:Af.*e"));
         kr = ki.search(ks);
         assertEquals((long) 1, kr.getTotalResults());
-        assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("[[AfFe]] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:baum.*",
                                                    true));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... aFfFE [Baum] Baumgarten ...", kr.getMatch(0)
+        assertEquals("... aFfFE [[Baum]] Baumgarten ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(1)
+        assertEquals("... Baum [[Baumgarten]] SteinGarten ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re(
                                                    "s:.*garten", true));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(0)
+        assertEquals("... Baum [[Baumgarten]] SteinGarten ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... Baumgarten [SteinGarten] franZ ...", kr.getMatch(1)
+        assertEquals("... Baumgarten [[SteinGarten]] franZ ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:.*garten", false));
         kr = ki.search(ks);
         assertEquals((long) 1, kr.getTotalResults());
-        assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(0)
+        assertEquals("... Baum [[Baumgarten]] SteinGarten ...", kr.getMatch(0)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:ha.s",
                                                    true));
         kr = ki.search(ks);
         assertEquals((long) 2, kr.getTotalResults());
-        assertEquals("... franZ [HaNs] Haus ...", kr.getMatch(0)
+        assertEquals("... franZ [[HaNs]] Haus ...", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("... HaNs [Haus] Efeu ...", kr.getMatch(1)
+        assertEquals("... HaNs [[Haus]] Efeu ...", kr.getMatch(1)
                 .getSnippetBrackets());
 
         ks = _newKrill(new QueryBuilder("base").re("s:.*f*e",
                                                    true));
         kr = ki.search(ks);
         assertEquals((long) 3, kr.getTotalResults());
-        assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("AfFe [aFfFE] Baum ...", kr.getMatch(1)
+        assertEquals("[[AfFe]] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("AfFe [[aFfFE]] Baum ...", kr.getMatch(1)
                 .getSnippetBrackets());
-        assertEquals("... Efeu [effe]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("... Efeu [[effe]]", kr.getMatch(2).getSnippetBrackets());
     };
 
 
@@ -276,7 +276,7 @@
 
         Result kr = ki.search(ks);
         assertEquals((long) 1, kr.getTotalResults());
-        assertEquals("[affe afffe] baum ...", kr.getMatch(0)
+        assertEquals("[[affe afffe]] baum ...", kr.getMatch(0)
                 .getSnippetBrackets());
     };
 
@@ -316,7 +316,7 @@
 
         Result kr = ki.search(ks);
         assertEquals((long) 1, kr.getTotalResults());
-        assertEquals("[affe afffe] baum ...", kr.getMatch(0)
+        assertEquals("[[affe afffe]] baum ...", kr.getMatch(0)
                 .getSnippetBrackets());
     };
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestSpanExpansionIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestSpanExpansionIndex.java
index 2a81f68..08f56a8 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestSpanExpansionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestSpanExpansionIndex.java
@@ -387,8 +387,8 @@
         // );
         // };
 
-        assertEquals("[cecc]ecdeec", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("cec[cecd]eec", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("[[cecc]]ecdeec", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("cec[[cecd]]eec", kr.getMatch(1).getSnippetBrackets());
         assertEquals((long) 2, kr.getTotalResults());
     }
 
@@ -415,19 +415,19 @@
                 "focus(254: spanContain(<base:base/s:t />, {254: spanExpansion(base:s:c, []{0, 4}, right)}))");
 
         kr = ki.search(sq, (short) 10);
-        assertEquals("[c]ab", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("[ca]b", kr.getMatch(1).getSnippetBrackets());
-        assertEquals("[cab]", kr.getMatch(2).getSnippetBrackets());
-        assertEquals("[c]e", kr.getMatch(3).getSnippetBrackets());
+        assertEquals("[[c]]ab", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("[[ca]]b", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("[[cab]]", kr.getMatch(2).getSnippetBrackets());
+        assertEquals("[[c]]e", kr.getMatch(3).getSnippetBrackets());
 
-        assertEquals("[ce]", kr.getMatch(4).getSnippetBrackets());
+        assertEquals("[[ce]]", kr.getMatch(4).getSnippetBrackets());
         assertEquals(5, kr.getTotalResults());
 
         sq = kq.builder().tag("base/s:t").toQuery();
         assertEquals(sq.toString(), "<base:base/s:t />");
         kr = ki.search(sq, (short) 5);
-        assertEquals("[cab]", kr.getMatch(0).getSnippetBrackets());
-        assertEquals("[ce]", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("[[cab]]", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("[[ce]]", kr.getMatch(1).getSnippetBrackets());
         assertEquals(2, kr.getTotalResults());
     }
 
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
index c415ca1..206628b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestSubSpanIndex.java
@@ -155,10 +155,10 @@
         assertEquals(2, kr.getTotalResults());
         assertEquals(1, kr.getMatch(0).getStartPos());
         assertEquals(2, kr.getMatch(0).getEndPos());
-        assertEquals("a [b ]c ", kr.getMatch(0).getSnippetBrackets());
+        assertEquals("a [[b ]]c ", kr.getMatch(0).getSnippetBrackets());
 
         assertEquals(2, kr.getMatch(1).getStartPos());
         assertEquals(3, kr.getMatch(1).getEndPos());
-        assertEquals("a b [c ]", kr.getMatch(1).getSnippetBrackets());
+        assertEquals("a b [[c ]]", kr.getMatch(1).getSnippetBrackets());
     };
 };
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 b0bd6cc..cff70ca 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
@@ -435,28 +435,28 @@
 
         assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
         assertEquals("EndPos (0)", 4, kr.getMatch(0).endPos);
-        assertEquals("Snippet (0)", "[h  h  i  j  ]h  i  j  h  i  j   ...", kr
+        assertEquals("Snippet (0)", "[[h  h  i  j  ]]h  i  j  h  i  j   ...", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("StartPos (1)", 0, kr.getMatch(1).startPos);
         assertEquals("EndPos (1)", 4, kr.getMatch(1).endPos);
-        assertEquals("Snippet (1)", "[h  h  i  j  ]h  i  j  h  i  j   ...", kr
+        assertEquals("Snippet (1)", "[[h  h  i  j  ]]h  i  j  h  i  j   ...", kr
                 .getMatch(1).getSnippetBrackets());
 
         assertEquals("StartPos (2)", 0, kr.getMatch(2).startPos);
         assertEquals("EndPos (2)", 8, kr.getMatch(2).endPos);
-        assertEquals("Snippet (2)", "[h  h  i  j  h  i  j  h  ]i  j        ",
+        assertEquals("Snippet (2)", "[[h  h  i  j  h  i  j  h  ]]i  j        ",
                 kr.getMatch(2).getSnippetBrackets());
         assertEquals("StartPos (3)", 0, kr.getMatch(3).startPos);
         assertEquals("EndPos (3)", 8, kr.getMatch(3).endPos);
-        assertEquals("Snippet (3)", "[h  h  i  j  h  i  j  h  ]i  j        ",
+        assertEquals("Snippet (3)", "[[h  h  i  j  h  i  j  h  ]]i  j        ",
                 kr.getMatch(3).getSnippetBrackets());
         assertEquals("StartPos (4)", 0, kr.getMatch(4).startPos);
         assertEquals("EndPos (4)", 8, kr.getMatch(4).endPos);
-        assertEquals("Snippet (4)", "[h  h  i  j  h  i  j  h  ]i  j        ",
+        assertEquals("Snippet (4)", "[[h  h  i  j  h  i  j  h  ]]i  j        ",
                 kr.getMatch(4).getSnippetBrackets());
         assertEquals("StartPos (5)", 0, kr.getMatch(5).startPos);
         assertEquals("EndPos (5)", 8, kr.getMatch(5).endPos);
-        assertEquals("Snippet (5)", "[h  h  i  j  h  i  j  h  ]i  j        ",
+        assertEquals("Snippet (5)", "[[h  h  i  j  h  i  j  h  ]]i  j        ",
                 kr.getMatch(5).getSnippetBrackets());
 
 
@@ -832,24 +832,24 @@
         kr = ki.search(sq, 0, (short) 15, true, (short) 1, true, (short) 1);
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
-        assertEquals("... schrie: [\"{3:Das war ich}!\"] und ...",
+        assertEquals("... schrie: [[\"{3:Das war ich}!\"]] und ...",
                 kr.getMatch(0).getSnippetBrackets());
         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>",
+                "<span class=\"context-left\"><span class=\"more\"></span>schrie: </span><span class=\"match\"><mark>&quot;<mark class=\"class-3 level-0\">Das war ich</mark>!&quot;</mark></span><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)
+        assertEquals("... [[\"{3:Das war ich}!\"]] ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
         kr = ki.search(sq, 0, (short) 15, true, (short) 6, true, (short) 6);
-        assertEquals("Er schrie: [\"{3:Das war ich}!\"] und ging.", kr
+        assertEquals("Er schrie: [[\"{3:Das war ich}!\"]] und ging.", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
         kr = ki.search(sq, 0, (short) 15, true, (short) 2, true, (short) 2);
-        assertEquals("Er schrie: [\"{3:Das war ich}!\"] und ging ...", kr
+        assertEquals("Er schrie: [[\"{3:Das war ich}!\"]] und ging ...", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
@@ -858,7 +858,7 @@
                 new Term("base", "s:Das")), (byte) 2)), (byte) 1);
 
         kr = ki.search(sq, (short) 15);
-        assertEquals("Er schrie: [\"{1:{2:Das} war ich}!\"] und ging.", kr
+        assertEquals("Er schrie: [[\"{1:{2:Das} war ich}!\"]] und ging.", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
@@ -867,7 +867,7 @@
                 new Term("base", "s:war")), (byte) 2)), (byte) 1);
 
         kr = ki.search(sq, (short) 15);
-        assertEquals("Er schrie: [\"{1:Das {2:war} ich}!\"] und ging.", kr
+        assertEquals("Er schrie: [[\"{1:Das {2:war} ich}!\"]] und ging.", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
@@ -876,7 +876,7 @@
                 new Term("base", "s:ich")), (byte) 2)), (byte) 1);
 
         kr = ki.search(sq, (short) 15);
-        assertEquals("Er schrie: [\"{1:Das war {2:ich}}!\"] und ging.", kr
+        assertEquals("Er schrie: [[\"{1:Das war {2:ich}}!\"]] und ging.", kr
                 .getMatch(0).getSnippetBrackets());
         assertEquals("totalResults", kr.getTotalResults(), 1);
 
@@ -924,9 +924,9 @@
 
         assertEquals("totalResults", kr.getTotalResults(), 2);
 
-        assertEquals("x  y  [x  ]b  c  x  ", kr.getMatch(0)
+        assertEquals("x  y  [[x  ]]b  c  x  ", kr.getMatch(0)
                 .getSnippetBrackets());
-        assertEquals("x  y  [x  b  c  ]x  ", kr.getMatch(1)
+        assertEquals("x  y  [[x  b  c  ]]x  ", kr.getMatch(1)
                 .getSnippetBrackets());
 
         assertEquals("StartPos (0)", 2, kr.getMatch(0).startPos);
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 e9dee2d..4c465b3 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -104,7 +104,7 @@
         Result kr = ks.apply(ki);
         assertEquals(kr.getTotalResults(), 6);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
-                "... dem [Buchstaben] A ...");
+                "... dem [[Buchstaben]] A ...");
 
         JsonNode res = ks.toJsonNode();
         assertEquals(3, res.at("/meta/count").asInt());
@@ -137,7 +137,7 @@
         assertEquals(kr.getTotalResults(), 66);
         assertEquals(5, kr.getItemsPerPage());
         assertEquals(5, kr.getStartIndex());
-        assertEquals("... a: A ist [der klangreichste] der V ...",
+        assertEquals("... a: A ist [[der klangreichste]] der V ...",
                 kr.getMatch(0).getSnippetBrackets());
     };
 
@@ -318,7 +318,7 @@
         Result kr = ks.apply(ki);
         assertEquals(kr.getTotalResults(), 10);
         assertEquals("A bzw. a ist der erste Buchstabe des"
-                + " lateinischen [Alphabets] und ein Vokal."
+                + " lateinischen [[Alphabets]] und ein Vokal."
                 + " Der Buchstabe A hat in deutschen Texten"
                 + " eine durchschnittliche Häufigkeit  ...", kr.getMatch(0)
                 .getSnippetBrackets());
@@ -341,7 +341,7 @@
                 + " das Nukleosid Adenosin steht A die Base"
                 + " Adenin steht A für die Aminosäure Alanin"
                 + " in der Informatik steht a für den dezimalen"
-                + " [Wert] 97 sowohl im ASCII- als auch im"
+                + " [[Wert]] 97 sowohl im ASCII- als auch im"
                 + " Unicode-Zeichensatz steht A für den dezimalen"
                 + " Wert 65 sowohl im ASCII- als auch im"
                 + " Unicode-Zeichensatz als Kfz-Kennzeichen"
@@ -681,7 +681,7 @@
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
                 "... Initiative\" eine neue politische Gruppierung ins "
-                        + "[{1:Leben}] gerufen hatten. Pressemeldungen zufolge haben sich ...");
+                        + "[[{1:Leben}]] gerufen hatten. Pressemeldungen zufolge haben sich ...");
 
         // Try with high class - don't highlight
         ks = new Krill(kq.focus(129,
@@ -693,7 +693,7 @@
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
                 "... Initiative\" eine neue politische Gruppierung ins "
-                        + "[Leben] gerufen hatten. Pressemeldungen zufolge haben sich ...");
+                        + "[[Leben]] gerufen hatten. Pressemeldungen zufolge haben sich ...");
 
         ks = new Krill(json);
         kr = ks.apply(ki);
@@ -703,9 +703,9 @@
                         + "{129: tokens:s:Leben}, [(base/s:s[0:1], notOrdered, notExcluded)]))");
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
-                "... ihren Austritt erklärt und unter dem [Namen \"Einheitsbewegung "
+                "... ihren Austritt erklärt und unter dem [[Namen \"Einheitsbewegung "
                         + "der sozialistischen Initiative\" eine neue politische Gruppierung "
-                        + "ins Leben] gerufen hatten. Pressemeldungen zufolge haben sich ...");
+                        + "ins Leben]] gerufen hatten. Pressemeldungen zufolge haben sich ...");
         assertEquals(kr.getTotalResults(), 1);
         assertEquals(0, kr.getStartIndex());
     };
@@ -734,7 +734,7 @@
         assertEquals(
                 kr.getMatch(0).getSnippetBrackets(),
                 "... sozialistischen Initiative\" eine neue politische"
-                        + " Gruppierung [{4:{1:{2:ins} {3:Leben}} gerufen}] hatten. "
+                        + " Gruppierung [[{4:{1:{2:ins} {3:Leben}} gerufen}]] hatten. "
                         + "Pressemeldungen zufolge haben sich in ...");
         assertEquals(kr.getTotalResults(), 2);
         assertEquals(0, kr.getStartIndex());
@@ -830,19 +830,19 @@
         assertEquals(0, kr.getStartIndex());
 
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
-                "[Saragat-Partei] zerfällt Rom (ADN) die von dem ...");
+                "[[Saragat-Partei]] zerfällt Rom (ADN) die von dem ...");
         assertEquals(kr.getMatch(1).getSnippetBrackets(),
-                "[Saragat-Partei] zerfällt Rom (ADN) die von dem ...");
+                "[[Saragat-Partei]] zerfällt Rom (ADN) die von dem ...");
         assertEquals(kr.getMatch(2).getSnippetBrackets(),
-                "Saragat-Partei zerfällt [Rom] (ADN) "
+                "Saragat-Partei zerfällt [[Rom]] (ADN) "
                         + "die von dem Rechtssozialisten Saragat ...");
         assertEquals(kr.getMatch(3).getSnippetBrackets(),
-                "Saragat-Partei zerfällt Rom ([ADN]) "
+                "Saragat-Partei zerfällt Rom ([[ADN]]) "
                         + "die von dem Rechtssozialisten Saragat geführte ...");
         assertEquals(
                 kr.getMatch(23).getSnippetBrackets(),
                 "... dem Namen \"Einheitsbewegung der sozialistischen "
-                        + "Initiative\" [eine neue politische Gruppierung] "
+                        + "Initiative\" [[eine neue politische Gruppierung]] "
                         + "ins Leben gerufen hatten. Pressemeldungen zufolge ...");
     };
 
@@ -970,7 +970,7 @@
         Result kr = ks.apply(ki);
 
         assertEquals(kr.getMatch(1).getSnippetBrackets(),
-                "... dezimalen [Wert] 65 sowohl ...");
+                "... dezimalen [[Wert]] 65 sowohl ...");
         assertEquals(kr.getTotalResults(), 3);
         assertEquals(0, kr.getStartIndex());
         assertEquals(25, kr.getItemsPerPage());
@@ -985,15 +985,15 @@
         assertEquals(kr.getContext().toJsonNode().toString(), "\"base/s:s\"");
 
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
-                "steht a für den dezimalen [Wert] 97 sowohl im ASCII-"
+                "steht a für den dezimalen [[Wert]] 97 sowohl im ASCII-"
                         + " als auch im Unicode-Zeichensatz");
         assertEquals(kr.getMatch(1).getSnippetBrackets(),
-                "steht A für den dezimalen [Wert] 65 sowohl im ASCII-"
+                "steht A für den dezimalen [[Wert]] 65 sowohl im ASCII-"
                         + " als auch im Unicode-Zeichensatz");
         assertEquals(kr.getMatch(2).getSnippetBrackets(),
                 "In einem Zahlensystem mit einer Basis größer "
                         + "als 10 steht A oder a häufig für den dezimalen"
-                        + " [Wert] 10, siehe auch Hexadezimalsystem.");
+                        + " [[Wert]] 10, siehe auch Hexadezimalsystem.");
     };
 
 
@@ -1038,7 +1038,7 @@
 
         Result kr = new Krill(json).apply(ki);
         assertEquals("... Buchstabe des Alphabetes. In Dänemark ist "
-                + "[der alte Digraph Aa durch Å] ersetzt worden, "
+                + "[[der alte Digraph Aa durch Å]] ersetzt worden, "
                 + "in Eigennamen und Ortsnamen ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
@@ -1061,7 +1061,7 @@
         // focus(254: spanContain(<tokens:base/s:t />, {254: spanNext(spanNext(spanNext(spanNext(tokens:s:der, tokens:s:alte), tokens:s:Digraph), tokens:s:Aa), spanExpansion(tokens:s:durch, []{1, 1}, right))}))
 
         assertEquals("... Buchstabe des Alphabetes. In Dänemark ist "
-                + "[der alte Digraph Aa durch Å] ersetzt worden, "
+                + "[[der alte Digraph Aa durch Å]] ersetzt worden, "
                 + "in Eigennamen und Ortsnamen ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
@@ -1084,7 +1084,7 @@
         kr = new Krill(json).apply(ki);
 
         assertEquals("... Buchstabe des Alphabetes. In Dänemark ist "
-                + "[der alte Digraph Aa durch Å] ersetzt worden, "
+                + "[[der alte Digraph Aa durch Å]] ersetzt worden, "
                 + "in Eigennamen und Ortsnamen ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
@@ -1096,7 +1096,7 @@
 
         kr = new Krill(json).apply(ki);
         assertEquals("... Buchstabe des Alphabetes. In Dänemark ist "
-                + "[der alte Digraph Aa durch Å] ersetzt worden, "
+                + "[[der alte Digraph Aa durch Å]] ersetzt worden, "
                 + "in Eigennamen und Ortsnamen ...", kr.getMatch(0)
                 .getSnippetBrackets());
         assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
@@ -1124,7 +1124,7 @@
         Result kr = k.apply(ki);
         assertEquals(kr.getTotalResults(), 1);
         assertEquals(kr.getMatch(0).getSnippetBrackets(),
-                "[Selbst ist der Jeck]");
+                "[[Selbst ist der Jeck]]");
 
         assertEquals(kr.getMatch(0).getTextSigle(), "PRO-DUD_BSP-2013-01.32");
     };
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestResult.java b/src/test/java/de/ids_mannheim/korap/search/TestResult.java
index 53a42f1..a106fae 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestResult.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestResult.java
@@ -78,7 +78,7 @@
         assertEquals("match-doc-1-p0-1(1)0-0", res.at("/matches/0/matchID")
                 .asText());
         assertEquals(
-                "<span class=\"context-left\"></span><mark><mark class=\"class-1 level-0\">a</mark></mark><span class=\"context-right\">bab</span>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark><mark class=\"class-1 level-0\">a</mark></mark></span><span class=\"context-right\">bab</span>",
                 res.at("/matches/0/snippet").asText());
 
         assertEquals("base", res.at("/matches/6/field").asText());
@@ -92,7 +92,7 @@
         assertEquals("match-doc-2-p2-3(1)2-2", res.at("/matches/6/matchID")
                 .asText());
         assertEquals(
-                "<span class=\"context-left\">ab</span><mark><mark class=\"class-1 level-0\">a</mark></mark><span class=\"context-right\"></span>",
+                "<span class=\"context-left\">ab</span><span class=\"match\"><mark><mark class=\"class-1 level-0\">a</mark></mark></span><span class=\"context-right\"></span>",
                 res.at("/matches/6/snippet").asText());
     };
 
@@ -197,7 +197,7 @@
         assertEquals("doc-1", res.at("/matches/0/docID").asText());
         assertEquals("match-doc-1-p0-1", res.at("/matches/0/matchID").asText());
         assertEquals(
-                "<span class=\"context-left\"></span><mark>a</mark><span class=\"context-right\">bab</span>",
+                "<span class=\"context-left\"></span><span class=\"match\"><mark>a</mark></span><span class=\"context-right\">bab</span>",
                 res.at("/matches/0/snippet").asText());
 
         // No primaryData serialization
