diff --git a/src/main/java/de/ids_mannheim/korap/KorapIndex.java b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
index b7f4081..be9dd32 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapIndex.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapIndex.java
@@ -212,6 +212,7 @@
 
 	// Failed to open reader
 	catch (IOException e) {
+		//e.printStackTrace();
 	    log.warn( e.getLocalizedMessage() );
 	};
     };
@@ -1103,8 +1104,8 @@
 	try {
 
 	    // Rewrite query (for regex and wildcard queries)
-	    for (Query rewrittenQuery = query.rewrite(this.reader());
-                 rewrittenQuery != (Query) query;
+	    for ( Query rewrittenQuery = query.rewrite(this.reader());
+                 !rewrittenQuery.equals(query);
                  rewrittenQuery = query.rewrite(this.reader())) {
 		query = (SpanQuery) rewrittenQuery;
 	    };
diff --git a/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java b/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
index 5f0dd9d..a9eed77 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SimpleSpanQuery.java
@@ -164,6 +164,47 @@
 		return clone;
 	}
 	
+    /** Used in rewriting query
+     * */
+	@Override
+    public boolean equals (Object o) {
+		if (this == o) return true;
+		if (getClass() != o.getClass()) return false;
+		
+		final SimpleSpanQuery q = (SimpleSpanQuery) o;
+		if (collectPayloads != q.collectPayloads) return false;
+		if (!firstClause.equals(q.firstClause)) return false;
+		if (secondClause != null && 
+				!secondClause.equals(q.secondClause)){ 
+			return false;
+		}
+		else if (clauseList != null){
+			for (int i=0; i < clauseList.size(); i++){
+				SpanQuery query = (SpanQuery) clauseList.get(i);
+				if (!query.equals(q.getClauseList().get(i))) {
+					return false;
+				}
+			}
+		}
+	
+		return true;
+    };
+    
+    public int hashCode() {
+    	int hc = firstClause.hashCode();    	
+    	if (secondClause != null){
+    		hc += secondClause.hashCode();
+    	}    		
+    	else if (clauseList != null){
+    		for (int i=0; i < clauseList.size(); i++){
+				hc += clauseList.get(i).hashCode();
+			}
+    	}
+    	hc ^= (hc << 31) | (hc >>> 3);
+    	hc += Float.floatToRawIntBits(getBoost());
+    	return hc;
+    };
+	
 	public abstract SimpleSpanQuery clone();	
 	
 }
