fixed shrink bug
diff --git a/CHANGES b/CHANGES
index 9134718..8b95c61 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@
 	- [bugfix] #142 Fixed class spans for skipTo() skips (margaretha)
 	- [feature] Added attribute support to relations (margaretha)
 	- [bugfix] Make classes and shrink default to 1 instead of 0 (diewald)
+	- [bugfix] shrink now removes all non-classes payloads (diewald)
 
 0.46 2014-10-21
         - [feature] Support for relation queries (margaretha)
diff --git a/src/main/java/de/ids_mannheim/korap/KorapIndex.java b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
index 2f104a0..6d23202 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
@@ -1198,9 +1198,14 @@
 		    match.internalDocID = docID;
 		    match.populateDocument(doc, field, fieldsToLoadLocal);
 		    
-		    if (DEBUG)
-			log.trace("I've got a match in {} of {}",
-				  match.getDocID(), count);
+		    if (DEBUG) {
+			if (match.getDocID() != null)
+			    log.trace("I've got a match in {} of {}",
+				      match.getDocID(), count);
+			else
+			    log.trace("I've got a match in {} of {}",
+				      match.getUID(), count);
+		    };
 
 		    atomicMatches.add(match);
 		};
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
index d6a6318..eb3ed27 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/MatchModifyClassSpans.java
@@ -37,7 +37,7 @@
     private final Logger log = LoggerFactory.getLogger(MatchModifyClassSpans.class);
 
     // This advices the java compiler to ignore all loggings
-    public static final boolean DEBUG = true;
+    public static final boolean DEBUG = false;
 
     private int start = -1, end;
     private int tempStart = 0, tempEnd = 0;
@@ -111,30 +111,47 @@
 
 		    // Todo: Implement Divide
 		    // Found class payload of structure <i>start<i>end<b>class
-		    if (payload.length == 9 && bb.get() == this.number) {
-			bb.rewind();
-			tempStart = bb.getInt();
-			tempEnd   = bb.getInt();
+		    if (payload.length == 9) {
 
-			if (DEBUG)
-			    log.trace("Found matching class {}-{}", tempStart, tempEnd);
+			// and classes are matches!
+			if (bb.get() == this.number) {
+			    bb.rewind();
+			    tempStart = bb.getInt();
+			    tempEnd   = bb.getInt();
 
-			// Set start position 
-			if (start == -1)
-			    start = tempStart;
-			else if (tempStart < start)
-			    start = tempStart;
+			    if (DEBUG)
+				log.trace("Found matching class {}-{}", tempStart, tempEnd);
 
-			// Set end position
-			if (tempEnd > end)
-			    end = tempEnd;
+			    // Set start position 
+			    if (start == -1)
+				start = tempStart;
+			    else if (tempStart < start)
+				start = tempStart;
+			    
+			    // Set end position
+			    if (tempEnd > end)
+				end = tempEnd;
+			}
+
+			// Definately keep class information
+			else {
+			    wrappedPayload.add(payload);
+			};
 		    }
 
-		    // No class payload - but keep!
+		    // No class payload
 		    else {
-			if (DEBUG)
-			    log.trace("Remember old payload {}", payload);
-			wrappedPayload.add(payload);
+
+			// Keep as we won't shrink
+			if (start == -1) {
+			    if (DEBUG)
+				log.trace("Remember old payload {}", payload);
+			    wrappedPayload.add(payload);
+			}
+			else if (DEBUG) {
+			    if (DEBUG)
+				log.trace("Ignore old payload {}", payload);
+			};
 		    };
 		};
 	    };
@@ -151,6 +168,16 @@
 		    end
 		);
 
+	    // Only keep class information
+	    // This may change later on ...
+	    for (int i = wrappedPayload.size() - 1; i >= 0; i--) {
+		if (wrappedPayload.get(i).length != 9) {
+		    if (DEBUG)
+			log.trace("Forget old payload {}", wrappedPayload.get(i));
+		    wrappedPayload.remove(i);
+		};
+	    };
+
 	    return true;
 	};
 
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 2ed007e..98b2947 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -12,6 +12,7 @@
 #log4j.logger.de.ids_mannheim.korap.query.spans.NextSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.SimpleSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.ClassSpans = TRACE, stdout
+#log4j.logger.de.ids_mannheim.korap.query.spans.MatchModifyClassSpans = TRACE, stdout
 #log4j.logger.de.ids_mannheim.korap.query.spans.MatchSpans = TRACE, stdout
 
 # Wrapper
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
index 8180a23..b2606bc 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
@@ -621,24 +621,53 @@
 
 	KorapQuery kq = new KorapQuery("tokens");
 
-	// Check with 129
 	KorapSearch ks = new KorapSearch(
 	    kq.shrink(1,kq.contains(kq.tag("base/s:s"), kq._(1, kq.seg("s:Leben"))))
 	);
 
 	KorapResult kr = ks.run(ki);
-	System.err.println(kr.getMatch(0).getSnippetBrackets());
+	assertEquals(
+            kr.getQuery(),
+	    "shrink(1: spanContain(<tokens:base/s:s />, {1: tokens:s:Leben}))"
+        );
+	assertEquals(
+            kr.getMatch(0).getSnippetBrackets(),
+            "... Initiative\" eine neue politische Gruppierung ins " +
+	    "[Leben] gerufen hatten. Pressemeldungen zufolge haben sich ..."
+        );
 
-	/*
-
-	ks = new KorapSearch(json);
+	// Try with high class
+	ks = new KorapSearch(
+	    kq.shrink(129, kq.contains(kq.tag("base/s:s"), kq._(129, kq.seg("s:Leben"))))
+	);
 
 	kr = ks.run(ki);
-	System.err.println(kr.toJSON());
-	assertEquals(276, kr.getTotalResults());
+	assertEquals(
+            kr.getQuery(),
+	    "shrink(129: spanContain(<tokens:base/s:s />, {129: tokens:s:Leben}))"
+        );
+	assertEquals(
+            kr.getMatch(0).getSnippetBrackets(),
+            "... Initiative\" eine neue politische Gruppierung ins " +
+	    "[Leben] gerufen hatten. Pressemeldungen zufolge haben sich ..."
+        );
+
+	ks = new KorapSearch(json);
+	kr = ks.run(ki);
+	assertEquals(
+            kr.getQuery(),
+	    "shrink(129: spanElementDistance({129: tokens:s:Namen}, " +
+	    "{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 " +
+	    "der sozialistischen Initiative\" eine neue politische Gruppierung " +
+	    "ins Leben] gerufen hatten. Pressemeldungen zufolge haben sich ..."
+        );
+
+	assertEquals(1, kr.getTotalResults());
 	assertEquals(0, kr.getStartIndex());
-	assertEquals(10, kr.getItemsPerPage());
-	*/
     };
 
     @Test