diff --git a/lib/KorAP/XML/Field/MultiTermToken.pm b/lib/KorAP/XML/Field/MultiTermToken.pm
index 3087e9d..ad14402 100644
--- a/lib/KorAP/XML/Field/MultiTermToken.pm
+++ b/lib/KorAP/XML/Field/MultiTermToken.pm
@@ -98,16 +98,16 @@
     return ($1, $1);
   }
 
-  # token/span to span - right token
-  elsif ($_[0] =~ m/^<i>(\d+)<i>(\d+)<s>/o) {
+  # token/span to span - right token (including character offsets)
+  elsif ($_[0] =~ m/^<i>\d+<i>\d+<i>(\d+)<i>(\d+)<s>/o) {
     return ($1, $2);
   }
 
   # span to token - right token
-  elsif ($_[0] =~ m/^<b>\d+<i>(\d+)<s>/o) {
+  elsif ($_[0] =~ m/^<i>(\d+)<s>/o) {
     return ($1, $1);
   };
-  carp 'Unknown relation format!';
+  carp 'Unknown relation format! ' . $_[0];
   return (0,0);
 };
 
diff --git a/lib/KorAP/XML/Index/Mate/Dependency.pm b/lib/KorAP/XML/Index/Mate/Dependency.pm
index bb0ab27..0d19cdd 100644
--- a/lib/KorAP/XML/Index/Mate/Dependency.pm
+++ b/lib/KorAP/XML/Index/Mate/Dependency.pm
@@ -1,6 +1,7 @@
 package KorAP::XML::Index::Mate::Dependency;
 use KorAP::XML::Index::Base;
-
+use strict;
+use warnings;
 our $NODE_LABEL = '&&&';
 
 sub parse {
@@ -39,9 +40,10 @@
 	  # next if $_->{-label} eq '--';
 
 	  # Get target node - not very elegant
-	  my $target = $stream->get_node(
-	    $source, 'mate/d:' . $NODE_LABEL
-	  );
+	  # This is only necessary for nodes with attributes
+	  #	  my $target = $stream->get_node(
+	  #	    $source, 'mate/d:' . $NODE_LABEL
+	  #	  );
 
 	  # Target is at the same position!
 	  my $pos = $source->pos;
@@ -50,8 +52,8 @@
 	    pti => 32, # term-to-term relation
 	    payload =>
 	      '<i>' . $pos . # right part token position
-		'<s>' . $target->tui . # left part tui
-		  '<s>' . $target->tui # right part tui
+		'<s>0' . # $target->tui . # left part tui
+		  '<s>0'  # . $target->tui # right part tui
 		);
 
 	  # Add relations
@@ -73,9 +75,10 @@
 	  my $to   = $_->{span}->{-to};
 
 	  # Get source node
-	  my $source_term = $stream->get_node(
-	    $source, 'mate/d:' . $NODE_LABEL
-	  );
+	  # This is only necessary for nodes with attributes
+	  #	  my $source_term = $stream->get_node(
+	  #	    $source, 'mate/d:' . $NODE_LABEL
+	  #	  );
 
 	  # Target
 	  my $target = $tokens->token($from, $to);
@@ -84,17 +87,17 @@
 	  if ($target) {
 
 	    # Get target node
-	    my $target_term = $stream->get_node(
-	      $target, 'mate/d:' . $NODE_LABEL
-	    );
+	    #	    my $target_term = $stream->get_node(
+	    #	      $target, 'mate/d:' . $NODE_LABEL
+	    #	    );
 
 	    $mtt->add(
 	      term => '>:mate/d:' . $label,
 	      pti => 32, # term-to-term relation
 	      payload =>
 		'<i>' . $target->pos . # right part token position
-		  '<s>' . $source_term->tui . # left part tui
-		    '<s>' . $target_term->tui # right part tui
+		  '<s>0' . # $source_term->tui . # left part tui
+		    '<s>0' # . $target_term->tui # right part tui
 	    );
 
 	    my $target_mtt = $stream->pos($target->pos);
@@ -103,8 +106,8 @@
 	      pti => 32, # term-to-term relation
 	      payload =>
 		'<i>' . $source->pos . # left part token position
-		  '<s>' . $source_term->tui . # left part tui
-		    '<s>' . $target_term->tui # right part tui
+		  '<s>0' . # $source_term->tui . # left part tui
+		    '<s>0' # . $target_term->tui # right part tui
 	    );
 	  }
 
@@ -112,18 +115,20 @@
 	  elsif ($target = $tokens->span($from, $to)) {
 
 	    # Get target node
-	    my $target_span = $stream->get_node(
-	      $target, 'mate/d:' . $NODE_LABEL
-	    );
+	    #	    my $target_span = $stream->get_node(
+	    #	      $target, 'mate/d:' . $NODE_LABEL
+	    #	    );
 
 	    $mtt->add(
 	      term => '>:mate/d:' . $label,
 	      pti => 33, # term-to-element relation
 	      payload =>
-		'<i>' . $target->p_start . # right part start position
-		  '<i>' . $target->p_end . # right part end position
-		    '<s>' . $source_term->tui . # left part tui
-		      '<s>' . $target_span->tui # right part tui
+		'<i>' . $target->o_start . # end position
+		  '<i>' . $target->o_end . # end position
+		    '<i>' . $target->p_start . # right part start position
+		      '<i>' . $target->p_end . # right part end position
+			'<s>0' . # $source_term->tui . # left part tui
+			  '<s>0' # . $target_span->tui # right part tui
 	    );
 
 	    my $target_mtt = $stream->pos($target->p_start);
@@ -131,16 +136,15 @@
 	      term => '<:mate/d:' . $label,
 	      pti => 34, # element-to-term relation
 	      payload =>
-		'<i>' . $target_span->p_end . # end position
-		  '<i>' . $source->pos . # left part token position
-		    '<s>' . $source_term->tui . # left part tui
-		      '<s>' . $target_span->tui # right part tui
+		'<i>' . $source->pos . # left part token position
+		  '<s>0' . # $source_term->tui . # left part tui
+		    '<s>0' # . $target_span->tui # right part tui
 
 	    );
 	  }
 	  else {
-#	    use Data::Dumper;
-#	    warn '2###### ' . Dumper($content);
+	    #	    use Data::Dumper;
+	    #	    warn '2###### ' . Dumper($content);
 	  };
 	};
       };
@@ -149,10 +153,10 @@
   return 1;
 };
 
-
 sub layer_info {
   ['mate/d=rels']
 };
 
-
 1;
+
+__END__
diff --git a/t/index/mate_dependency.t b/t/index/mate_dependency.t
index 06a2ce5..e322bd2 100644
--- a/t/index/mate_dependency.t
+++ b/t/index/mate_dependency.t
@@ -14,20 +14,17 @@
 
 my $data = $tokens->to_data->{data}->{stream};
 
-# Unary relation
-is($data->[4]->[2], '<:mate/d:--$<b>32<i>4<s>1<s>1', '< rel 1 (unary)');
-is($data->[4]->[1], '>:mate/d:--$<b>32<i>4<s>1<s>1', '> rel 1 (unary)');
-is($data->[4]->[8], 'mate/d:&&&$<b>128<s>1', 'token for rel 1 (unary)');
+is($data->[4]->[1], '<:mate/d:--$<b>32<i>4<s>0<s>0', '< rel 1 (unary)');
+is($data->[4]->[2], '>:mate/d:--$<b>32<i>4<s>0<s>0', '> rel 1 (unary)');
+#is($data->[4]->[8], 'mate/d:&&&$<b>128<s>1', 'token for rel 1 (unary)');
 
-is($data->[1]->[0], '>:mate/d:NK$<b>32<i>3<s>1<s>1', '> rel 2 (term-to-term)');
-is($data->[1]->[3], 'mate/d:&&&$<b>128<s>1', '< rel 2 (term-to-term)');
-is($data->[3]->[1], '<:mate/d:NK$<b>32<i>1<s>1<s>1', '< rel 2 (term-to-term)');
-is($data->[3]->[5], 'mate/d:&&&$<b>128<s>1', '< rel 2 (term-to-term)');
+is($data->[1]->[0], '>:mate/d:NK$<b>32<i>3<s>0<s>0', '> rel 2 (term-to-term)');
+#is($data->[1]->[3], 'mate/d:&&&$<b>128<s>1', '< rel 2 (term-to-term)');
+
+is($data->[3]->[1], '<:mate/d:NK$<b>32<i>1<s>0<s>0', '< rel 2 (term-to-term)');
+#is($data->[3]->[5], 'mate/d:&&&$<b>128<s>1', '< rel 2 (term-to-term)');
 
 
 done_testing;
-
 __END__
 
-
-
diff --git a/t/real/wpd.t b/t/real/wpd.t
index c3ddc7b..3dcea9d 100644
--- a/t/real/wpd.t
+++ b/t/real/wpd.t
@@ -72,10 +72,10 @@
 
 my $stream = $tokens->to_data->{data}->{stream};
 
-is($stream->[77]->[0], '<:mate/d:--$<b>34<i>78<i>78<s>1<s>1', 'element to term');
-is($stream->[77]->[1], '<>:mate/d:&&&$<b>64<i>498<i>499<i>78<b>0<s>1', 'element to term');
-is($stream->[78]->[0], '>:mate/d:--$<b>33<i>77<i>78<s>1<s>1', 'term to element');
-is($stream->[78]->[3], 'mate/d:&&&$<b>128<s>1', 'Node');
+is($stream->[77]->[0], '<:mate/d:--$<b>34<i>498<i>499<i>78<i>78<s>0<s>0', 'element to term');
+#is($stream->[77]->[1], '<>:mate/d:&&&$<b>64<i>498<i>499<i>78<b>0<s>1', 'element to term');
+is($stream->[78]->[0], '>:mate/d:--$<b>33<i>77<i>78<s>0<s>0', 'term to element');
+# is($stream->[78]->[3], 'mate/d:&&&$<b>128<s>1', 'Node');
 
 
 done_testing;
diff --git a/t/transform.t b/t/transform.t
index 498572b..6b83124 100644
--- a/t/transform.t
+++ b/t/transform.t
@@ -167,8 +167,8 @@
   'tt/p:FM$<b>129<b>54|'.
   '<>:tt/s:s$<b>64<i>0<i>6083<i>923<b>0|'.
   '-:tt/sentences$<i>1|'.
-  '>:mate/d:PNC$<b>32<i>2<s>1<s>1|'.
-  'mate/d:&&&$<b>128<s>1|'.
+  '>:mate/d:PNC$<b>32<i>2<s>0<s>0|'.
+#  'mate/d:&&&$<b>128<s>1|'.
   'xip/p:SYMBOL|'.
   'xip/l:A|'.
   '<>:xip/c:TOP$<b>64<i>0<i>74<i>13<b>0|'.
