diff --git a/Changes b/Changes
index e643469..caaa268 100644
--- a/Changes
+++ b/Changes
@@ -14,6 +14,8 @@
 	- [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,
+	  in case the match was extended to the sentence scope (diewald)
 
 0.55.5 2016-05-02
 	- [performance] Changed to a dynamic window for sorting in FocusSpans (margaretha)
diff --git a/src/main/java/de/ids_mannheim/korap/KrillIndex.java b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
index 97576cf..48ce9d0 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillIndex.java
@@ -918,6 +918,8 @@
         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) {
@@ -944,7 +946,6 @@
         if (DEBUG)
             log.trace("The bool query is {}", bool.toString());
 
-
         Filter filter = (Filter) new QueryWrapperFilter(bool);
 
         CompiledAutomaton fst = null;
@@ -1098,6 +1099,11 @@
                     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 a3aeee7..acba433 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -192,6 +192,7 @@
         public Highlight (int start, int end, String annotation) {
             this.start = start;
             this.end = end;
+
             // TODO: This can overflow!
             if (annotationNumberCounter < 2048) {
                 this.number = annotationNumberCounter++;
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 03bafcc..8b1985f 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -94,12 +94,6 @@
         id = new MatchIdentifier("match-corpus-1/doc-1/text-1/p2105-2106");
         assertEquals("match-corpus-1/doc-1/text-1-p2105-2106", id.toString());
         assertEquals("corpus-1/doc-1/text-1", id.getTextSigle());
-        /*
-        assertEquals(2105, id.getStartPos());
-        assertEquals(2106, id.getEndPos());
-        assertEquals(null, id.getCorpusID());
-        assertEquals(null, id.getDocID());
-        */
     };
 
 
@@ -415,9 +409,45 @@
         km = ki.getMatchInfo("match-c1!d1-p3-4", "tokens", null, null, false,
                 false, true); // extendToSentence
 
+        // This will
+        // [{f/m:drei:{f/y:three:{it/is:3:{x/o:drittens:c}}}}{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}{f/m:fuenf:{f/y:five:{it/is:5:{x/o:fünftens:b}}}}]
         assertEquals(
-                "[{f/m:drei:{f/y:three:{it/is:3:{x/o:drittens:c}}}}{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}{f/m:fuenf:{f/y:five:{it/is:5:{x/o:fünftens:b}}}}]",
+                "[{f/m:drei:{f/y:three:{it/is:3:{x/o:drittens:c}}}}[{f/m:vier:{f/y:four:{it/is:4:{x/o:viertens:a}}}}]{f/m:fuenf:{f/y:five:{it/is:5:{x/o:fünftens:b}}}}]",
                 km.getSnippetBrackets());
+
+        assertEquals(
+                "<span class=\"context-left\"></span>"+
+                "<mark>"+
+                "<span title=\"f/m:drei\">"+
+                "<span title=\"f/y:three\">"+
+                "<span title=\"it/is:3\">"+
+                "<span title=\"x/o:drittens\">c</span>"+
+                "</span>"+
+                "</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>"+
+                "</mark>"+
+                "<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>"+
+                "</mark>"+
+                "<span class=\"context-right\"></span>",
+                km.getSnippetHTML());
+
+
+
+
         /*
         km = ki.getMatchInfo("match-c1!d3-p3-4", "tokens", null, null, false,
                 false, true); // extendToSentence
