diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SegmentSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/SegmentSpans.java
index 8375b28..c7d4541 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SegmentSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SegmentSpans.java
@@ -96,11 +96,17 @@
 
             if (isRelation) {
                 RelationSpans s1 = (RelationSpans) firstSpans;
-                SimpleSpans s2 = (SimpleSpans) secondSpans;
+                if (secondSpans instanceof SimpleSpans) {
+                    SimpleSpans s2 = (SimpleSpans) secondSpans;
 
-                if (s2.hasSpanId) {
-                    if (s1.getLeftId() == s2.getSpanId()) {
-                        // setSpanId(s2.getSpanId());
+                    if (s2.hasSpanId) {
+                        if (s1.getLeftId() == s2.getSpanId()) {
+                            // setSpanId(s2.getSpanId());
+                            setMatch();
+                            return 0;
+                        }
+                    }
+                    else {
                         setMatch();
                         return 0;
                     }
@@ -109,7 +115,6 @@
                     setMatch();
                     return 0;
                 }
-
             }
             else if (firstSpans instanceof FocusSpans
                     && secondSpans instanceof SimpleSpans) {
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
index 701d06f..2423ae6 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestSpanRelationQueryJSON.java
@@ -105,8 +105,20 @@
                 "focus(#[1,2]spanSegment(spanRelation(tokens:>:mate/d:HEAD), <tokens:c:s />))",
                 sq.toString());
     }
+    
+    @Test
+    public void testMatchRelationSourceToken () throws QueryException {
+        //
+        String filepath = getClass()
+                .getResource("/queries/relation/match-source-token.json").getFile();
+        SpanQueryWrapper sqwi = getJSONQuery(filepath);
+        SpanQuery sq = sqwi.toQuery();
+        assertEquals(
+                "focus(#[1,2]spanSegment(spanRelation(tokens:>:malt/d:KONJ), tokens:tt/l:um))",
+                sq.toString());
+    }
 
-
+    
     @Test
     public void testMatchRelationTarget () throws QueryException {
         //
@@ -274,5 +286,22 @@
 
     }
 
+    @Test
+    public void testTypedRelationWithWrapTokenNodes () throws QueryException {
+        // query = "corenlp/c=\"VP\" & corenlp/c=\"NP\" & #1 ->malt/d[func=\"PP\"] #2";
+        String filepath = getClass()
+                .getResource(
+                        "/queries/relation/typed-relation-with-wrap-token-nodes.json")
+                .getFile();
+        SpanQueryWrapper sqwi = getJSONQuery(filepath);
+        SpanQuery sq = sqwi.toQuery();
+        assertEquals(
+                "focus(#[1,2]spanSegment(tokens:tt/p:VVINF, "
+                + "focus(#2: spanSegment("
+                + "spanRelation(tokens:>:malt/d:KONJ), tokens:tt/p:KOUI))))",
+                sq.toString());
+
+    }
+    
     // EM: handle empty koral:span
 }
diff --git a/src/test/resources/queries/relation/match-source-token.json b/src/test/resources/queries/relation/match-source-token.json
new file mode 100644
index 0000000..6ec868f
--- /dev/null
+++ b/src/test/resources/queries/relation/match-source-token.json
@@ -0,0 +1,27 @@
+{"query": {
+    "@type": "koral:group",
+    "operands": [
+        {
+            "@type": "koral:token",
+            "wrap": {
+            	"@type": "koral:term",
+                "foundry": "tt",
+                "key": "um",
+                "layer": "l",
+                "match": "match:eq"
+            }
+        },
+        {"@type": "koral:span"}
+    ],
+    "operation": "operation:relation",
+    "relType": {
+        "@type": "koral:relation",
+        "wrap": {
+            "@type": "koral:term",
+            "foundry": "malt",
+            "key": "KONJ",
+            "layer": "d",
+            "match": "match:eq"
+        }
+    }
+}}
diff --git a/src/test/resources/queries/relation/typed-relation-with-wrap-token-nodes.json b/src/test/resources/queries/relation/typed-relation-with-wrap-token-nodes.json
new file mode 100644
index 0000000..2640229
--- /dev/null
+++ b/src/test/resources/queries/relation/typed-relation-with-wrap-token-nodes.json
@@ -0,0 +1,39 @@
+{
+    "@context": "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+    "query": {
+        "operation": "operation:relation",
+        "operands": [
+            {
+                "wrap": {
+                    "@type": "koral:term",
+                    "layer": "p",
+                    "foundry": "tt",
+                    "match": "match:eq",
+                    "key": "KOUI"
+                },
+                "@type": "koral:token"
+            },
+            {
+                "wrap": {
+                    "@type": "koral:term",
+                    "layer": "p",
+                    "foundry": "tt",
+                    "match": "match:eq",
+                    "key": "VVINF"
+                },
+                "@type": "koral:token"
+            }
+        ],
+        "@type": "koral:group",
+        "relType": {
+            "wrap": {
+                "@type": "koral:term",
+                "layer": "d",
+                "foundry": "malt",
+                "match": "match:eq",
+                "key": "KONJ"
+            },
+            "@type": "koral:relation"
+        }
+    }
+}
\ No newline at end of file
