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 d3f45f4..9a752e5 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -87,6 +87,9 @@
 	// end marker of highlights that are pagebreaks
 	private static final int PB_MARKER = -99999;
 
+	// Textual elements that are in context
+	private static final int CONTEXT = -99998;
+
     // This advices the java compiler to ignore all loggings
     public static final boolean DEBUG = true;
 
@@ -1550,18 +1553,19 @@
                 int[] e = openList.removeFirst().clone();
 
 				// Mark as opener
-                e[3] = 1;
+				e[3] = 1;
 
 				if (DEBUG) {
 
 					//      -1: match
 					//    < -1: relation target
+					//  -99998: context
 					// >= 2048: relation source
 					// >=  256: annotation
 					
 					log.trace(
-						"Add open with number {} to stack at {}-{}",
-						e[2], e[0], e[1]
+						"Add open with number {} to stack at {}-{} as {}",
+						e[2], e[0], e[1], e[3]
 						);
 				};
 
@@ -1663,10 +1667,13 @@
         // Add match span, in case no inner match is defined
         if (this.innerMatchEndPos == -1) {
 			if (DEBUG)
-				log.debug("Added array to span with {} (1)", intArray);
+				log.debug("Added array to match span with {} (1)", intArray);
             this.span.add(intArray);
 		};
 
+		// Add context highlight
+		this.span.add(new int[]{intArray[0], intArray[1], CONTEXT, 0});
+
         // highlights
         // -- I'm not sure about this.
         if (this.highlight != null) {
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
index 93c1f67..610df0b 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
@@ -77,11 +77,13 @@
 			log.trace("Add opening {} to stack", number);
     };
 
-	// Add empty highlight to the stack
+
+    // Add empty highlight to the stack
     public void addEmpty (int pagenumber) {
         this.combine.add(new HighlightCombinatorElement((byte) 3, pagenumber));
     };
 
+
     // Add closing highlight combinator to the stack
     public void addClose (int number) {
         HighlightCombinatorElement lastComb;
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 d2701a6..272a9f1 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
@@ -15,6 +15,10 @@
 */
 public class HighlightCombinatorElement {
 
+	// Number -1:     Match
+	// Number -99998: Context
+	private final static int CONTEXT = -99998;
+	
     // Type 0: Textual data
     // Type 1: Opening
     // Type 2: Closing
@@ -58,7 +62,7 @@
 
 
     // Return html fragment for this combinator element
-public String toHTML (Match match, FixedBitSet level, byte[] levelCache, HashSet joins) {
+	public String toHTML (Match match, FixedBitSet level, byte[] levelCache, HashSet joins) {
 
         // Opening
         if (this.type == 1) {
@@ -69,6 +73,11 @@
                 sb.append("<mark>");
             }
 
+			// This is context
+			else if (this.number == CONTEXT) {
+				// DO nothing
+			}
+
 			// This is a relation target
             else if (this.number < -1) {
 
@@ -142,6 +151,9 @@
 
         // This is a Closing tag
         else if (this.type == 2) {
+			if (this.number == CONTEXT)
+				return "";
+			
             if (this.number < -1 || this.number >= 256)
                 return "</span>";
 
@@ -173,6 +185,11 @@
                 sb.append("[");
             }
 
+			// This is context
+			else if (this.number == CONTEXT) {
+				// DO nothing
+			}
+
             // Identifier
             else if (this.number < -1) {
                 sb.append("{#");
@@ -203,6 +220,11 @@
             return sb.toString();
         }
         else if (this.type == 2) {
+
+			// This is context
+			if (this.number == CONTEXT)
+				return "";
+			
             if (this.number == -1)
                 return "]";
             return "}";
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index bca8731..20f61ae 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -14,7 +14,7 @@
             level="trace">
       <AppenderRef ref="Console"/>
     </Logger>
-    <Logger name="de.ids_mannheim.korap.KrillIndex"
+    <Logger name="de.ids_mannheim.korap.response.Match"
             additivity="false"
             level="trace">
       <AppenderRef ref="Console"/>
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 7f659ed..f4bbc45 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -20,6 +20,7 @@
 import de.ids_mannheim.korap.query.QueryBuilder;
 import de.ids_mannheim.korap.index.FieldDocument;
 import de.ids_mannheim.korap.response.Match;
+import de.ids_mannheim.korap.response.SearchContext;
 import de.ids_mannheim.korap.response.Result;
 import de.ids_mannheim.korap.response.match.MatchIdentifier;
 import de.ids_mannheim.korap.response.match.PosIdentifier;
@@ -409,21 +410,126 @@
         ki.addDoc(getClass().getResourceAsStream("/wiki/WPD17-H81-63495.json.gz"), true);
         ki.commit();
 
-        Match km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
-								   "xyz", "s", true, true, true);
-		String snippet = km.getSnippetHTML();
+        Match km;
+		String snippet;
+		km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
+							 "xyz", "s", false, false, false);
+		km.setContext(new SearchContext(true, (short) 2, true, (short) 2));
+
+		snippet = km.getSnippetHTML();
 		assertEquals(
 			"<span class=\"context-left\">"+
+			"<span class=\"more\"></span>"+
+			"angesehen wurde. "+
 			"</span>"+
 			"<span class=\"match\">"+
 			"<mark>Der alte Baum</mark>"+
 			"</span>"+
 			"<span class=\"context-right\">"+
-			" war eine Sommerlinde (Tilia platyphyllos) , der neue ist eine Winterlinde (Tilia cordata)."+
+			" war eine"+
+			"<span class=\"more\"></span>"+
 			"</span>",
 			snippet
 			);
-		/*
+
+		km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
+								   "xyz", "s", true, true, true);
+		//km.setContext(new SearchContext(true, (short) 2, true, (short) 2));
+		snippet = km.getSnippetHTML();
+		assertEquals(
+			"<span class=\"context-left\">"+
+			"</span>"+
+			"<span class=\"match\">"+
+			"<mark>Der alte Baum</mark>"+
+			" war eine Sommerlinde (Tilia platyphyllos) , der neue ist eine Winterlinde (Tilia cordata)."+
+			"</span>"+
+			"<span class=\"context-right\">"+
+			"</span>",
+			snippet
+			);
+
+		km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
+							 null, null, false, true, true);
+		snippet = km.getSnippetHTML();
+		assertEquals(
+			"<span class=\"context-left\"></span>"+
+			"<span class=\"match\">"+
+			"<mark>"+
+			"<span title=\"tt/l:die\">"+
+			"<span title=\"tt/p:ART\">Der</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:alt\">"+
+			"<span title=\"tt/p:ADJA\">alte</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:Baum\">"+
+			"<span title=\"tt/p:NN\">Baum</span>"+
+			"</span>"+
+			"</mark>"+
+			" "+
+			"<span title=\"tt/l:sein\">"+
+			"<span title=\"tt/p:VAFIN\">war</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:eine\">"+
+			"<span title=\"tt/p:ART\">eine</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:Sommerlinde\">"+
+			"<span title=\"tt/l:Sommerlinde\">"+
+			"<span title=\"tt/p:NE\">"+
+			"<span title=\"tt/p:NN\">Sommerlinde</span>"+
+			"</span>"+
+			"</span>"+
+			"</span>"+
+			" ("+
+			"<span title=\"tt/p:NE\">Tilia</span>"+
+			" "+
+			"<span title=\"tt/p:ADJA\">"+
+			"<span title=\"tt/p:ADJD\">"+
+			"<span title=\"tt/p:NE\">"+
+			"<span title=\"tt/p:NN\">"+
+			"<span title=\"tt/p:VVFIN\">platyphyllos</span>"+
+			"</span>"+
+			"</span>"+
+			"</span>"+
+			"</span>"+
+			") , "+
+			"<span title=\"tt/l:die\">"+
+			"<span title=\"tt/p:ART\">der</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:neu\">"+
+			"<span title=\"tt/p:ADJA\">neue</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:sein\">"+
+			"<span title=\"tt/p:VAFIN\">ist</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:eine\">"+
+			"<span title=\"tt/p:ART\">eine</span>"+
+			"</span>"+
+			" "+
+			"<span title=\"tt/l:Winterlinde\">"+
+			"<span title=\"tt/l:Winterlinde\">"+
+			"<span title=\"tt/p:NE\">"+
+			"<span title=\"tt/p:NN\">Winterlinde</span>"+
+			"</span>"+
+			"</span>"+
+			"</span>"+
+			" ("+
+			"<span title=\"tt/p:NE\">Tilia</span>"+
+			" "+
+			"<span title=\"tt/p:NE\">cordata</span>"+
+			")."+
+			"</span>"+
+			"<span class=\"context-right\">"+
+			"</span>",
+			snippet
+			);
+/*
 
 		Match km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
 								   "dereko", "s", true, true, true);
