diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
index 94f3590..9287a4d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
@@ -87,19 +87,21 @@
 	private boolean advance() throws IOException {
 		
 		while (hasMoreSpans && computeElementPosition()){			
-		 	    logger.info("element: " + withAttributeSpans.start() + ","+ withAttributeSpans.end() +
-					" ref:"+withAttributeSpans.getSpanId());
+		 	    //logger.info("element: " + withAttributeSpans.start() + ","+ withAttributeSpans.end() +
+				//	" ref:"+withAttributeSpans.getSpanId());
 			
 			if (checkElementRef() && checkNotElementRef()){			
 				this.matchDocNumber = withAttributeSpans.doc();
 				this.matchStartPosition = withAttributeSpans.start();
 				this.matchEndPosition = withAttributeSpans.end();
 				this.matchPayload = withAttributeSpans.getPayload();
-				hasMoreSpans = attributeList.get(0).next();
 				
-			    logger.info("MATCH "+matchDocNumber);
+				if (attributeList.size() > 0)
+					hasMoreSpans = attributeList.get(0).next();
 				
-				hasMoreSpans = withAttributeSpans.next();		
+			    //logger.info("MATCH "+matchDocNumber);
+				
+				hasMoreSpans &= withAttributeSpans.next();		
 				return true;
 			}
 		}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
index cccbd23..74483b3 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRelationIndex.java
@@ -259,10 +259,10 @@
 		// child-of relations
 		SpanRelationQuery srq = new SpanRelationQuery(
 				new SpanTermQuery(new Term("base",">:child-of")),true);
-		/*kr = ki.search(srq,(short) 20);
+		kr = ki.search(srq,(short) 20);
 		
 		assertEquals(13, kr.getTotalResults());
-		*/
+		
 		// child-of with attr func=sbj
 		SpanWithAttributeQuery wq = 
 			new SpanWithAttributeQuery(srq, 
@@ -277,6 +277,23 @@
 		assertEquals(0,kr.getMatch(0).getStartPos()); // token
 		assertEquals(1,kr.getMatch(0).getEndPos());
 		
+		// child-of without attr func=sbj
+		wq = 
+			new SpanWithAttributeQuery(srq, 
+				new SpanAttributeQuery( 
+					new SpanTermQuery(new Term("base", "r@:func=sbj")),
+					true, true), 
+				true
+		);
+		kr = ki.search(wq,(short) 20);
+		assertEquals(12, kr.getTotalResults());
+		
+		/*for (KorapMatch km : kr.getMatches()){		
+			System.out.println(km.getStartPos() +","+km.getEndPos()
+			//	+" "+km.getSnippetBrackets()
+			);
+		}*/		
+		
 		// child-of with attr func-obj
 		wq = new SpanWithAttributeQuery(srq, 
 				new SpanAttributeQuery( 
@@ -314,10 +331,7 @@
 		assertEquals(6,kr.getMatch(1).getStartPos());
 		assertEquals(7,kr.getMatch(1).getEndPos());
 		
-		/*for (KorapMatch km : kr.getMatches()){		
-			System.out.println(km.getStartPos() +","+km.getEndPos()+" "
-    			+km.getSnippetBrackets());
-		}	*/	
+		
 	}
 	
 	/** Relation with variable
