diff --git a/lib/KorAP/Field/MultiTerm.pm b/lib/KorAP/Field/MultiTerm.pm
index 8210c56..0f93787 100644
--- a/lib/KorAP/Field/MultiTerm.pm
+++ b/lib/KorAP/Field/MultiTerm.pm
@@ -1,11 +1,122 @@
 package KorAP::Field::MultiTerm;
-use Mojo::Base -base;
+use strict;
+use warnings;
 use MIME::Base64;
 
-has [qw/p_start p_end o_start o_end term payload/];
-has store_offsets => 1;
+sub new {
+  my $self = bless [], shift;
+  my $i = 0;
+  for (; $i < scalar @_; $i+=2) {
+    if ($_[$i] eq 'term') {
+      $self->term($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'p_start') {
+      $self->p_start($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'p_end') {
+      $self->p_end($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'payload') {
+      $self->payload($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'store_offsets') {
+      $self->store_offsets($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'o_start') {
+      $self->o_start($_[$i+1]);
+    }
+    elsif ($_[$i] eq 'o_end') {
+      $self->o_end($_[$i+1]);
+    };
+  };
+  $self;
+};
 
+# 0
+sub payload {
+  if (defined $_[1]) {
+    return $_[0]->[0] = $_[1];
+  };
+  $_[0]->[0];
+};
+
+# 1
+sub p_start {
+  if (defined $_[1]) {
+    return $_[0]->[1] = $_[1];
+  };
+  $_[0]->[1];
+};
+
+# 2
+sub p_end {
+  if (defined $_[1]) {
+    return $_[0]->[2] = $_[1];
+  };
+  $_[0]->[2];
+};
+
+# 3
+sub o_start {
+  if (defined $_[1]) {
+    return $_[0]->[3] = $_[1];
+  };
+  $_[0]->[3];
+};
+
+# 4
+sub o_end {
+  if (defined $_[1]) {
+    return $_[0]->[4] = $_[1];
+  };
+  $_[0]->[4];
+};
+
+# 5
+sub term {
+  if (defined $_[1]) {
+    return $_[0]->[5] = $_[1];
+  };
+  $_[0]->[5];
+};
+
+# 6
+sub store_offsets {
+  if (defined $_[1]) {
+    return $_[0]->[6] = $_[1];
+  };
+  $_[0]->[6];
+};
+
+
+# to string based on array
 sub to_string {
+  my $string = $_[0]->[5];
+  if (defined $_[0]->[3]) {
+    $string .= '#' .$_[0]->[3] .'-' . $_[0]->[4];
+  };
+
+  my $pl = $_[0]->[1] ? $_[0]->[1] - 1 : $_[0]->[0];
+  if ($_[0]->[2] || $_[0]->[0]) {
+    $string .= '$';
+    if ($_[0]->[2]) {
+      $string .= '<i>' . $_[0]->[2];
+    };
+    if ($_[0]->[0]) {
+      if (index($_[0]->[0], '<') == 0) {
+	$string .= $_[0]->[0];
+      }
+      else {
+	$string .= '<?>' . $_[0]->[0];
+      };
+    };
+  };
+
+  $string;
+};
+
+
+sub to_string_2 {
   my $self = shift;
   my $string = $self->term;
   if (defined $self->o_start) {
@@ -31,6 +142,9 @@
   return $string;
 };
 
+
+
+
 sub to_solr {
   my $self = shift;
   my $increment = shift;
diff --git a/lib/KorAP/Field/MultiTermToken.pm b/lib/KorAP/Field/MultiTermToken.pm
index 0d8742b..fb83c1a 100644
--- a/lib/KorAP/Field/MultiTermToken.pm
+++ b/lib/KorAP/Field/MultiTermToken.pm
@@ -1,56 +1,196 @@
 package KorAP::Field::MultiTermToken;
 use KorAP::Field::MultiTerm;
-use Mojo::Base -base;
 use List::MoreUtils 'uniq';
+use strict;
+use warnings;
 
-has [qw/o_start o_end/];
+# This tries to be highly optimized - it's not supposed to be readable
+
+sub new {
+  bless [], shift;
+};
 
 sub add {
   my $self = shift;
   my $mt;
   unless (ref $_[0] eq 'MultiTerm') {
     if (@_ == 1) {
-      $mt = KorAP::Field::MultiTerm->new(term => shift());
+      $mt = KorAP::Field::MultiTerm->new(term => $_[0]);
     }
     else {
       $mt = KorAP::Field::MultiTerm->new(@_);
     };
   }
   else {
-    $mt = shift;
+    $mt = $_[0];
   };
-  $self->{mt} //= [];
-  push(@{$self->{mt}}, $mt);
-  return $mt;
+  $self->[0] //= [];
+  push(@{$self->[0]}, $mt);
+  $mt;
 };
 
-# Return a new term id
+# 0 -> mt
+
+# 1
+sub o_start {
+  if (defined $_[1]) {
+    return $_[0]->[1] = $_[1];
+  };
+  $_[0]->[1];
+};
+
+# 2
+sub o_end {
+  if (defined $_[1]) {
+    return $_[0]->[2] = $_[1];
+  };
+  $_[0]->[2];
+};
+
+# 3: Return a new term id
 sub id_counter {
-  $_[0]->{id_counter} //= 1;
-  return $_[0]->{id_counter}++;
+  $_[0]->[3] //= 1;
+  return $_[0]->[3]++;
 };
 
-
 sub surface {
-  substr($_[0]->{mt}->[0]->term,2);
+  substr($_[0]->[0]->[0]->term,2);
 };
 
 sub lc_surface {
-  substr($_[0]->{mt}->[1]->term,2);
+  substr($_[0]->[0]->[1]->term,2);
 };
 
+sub to_array {
+  my $self = shift;
+  [uniq(map($_->to_string, sort _sort @{$self->[0]}))];
+};
+
+
 sub to_string {
   my $self = shift;
   my $string = '[(' . $self->o_start . '-'. $self->o_end . ')';
-  $string .= join ('|', map($_->to_string, @{$self->{mt}}));
+  $string .= join ('|', @{$self->to_array});
   $string .= ']';
   return $string;
 };
 
+# Get relation based positions
+sub _rel_right_pos {
+  # token to token - right token
+  if ($_[0] =~ m/^<i>(\d+)<s>/o) {
+    return ($1, $1);
+  }
+  # token/span to span - right token
+  elsif ($_[0] =~ m/^<i>(\d+)<i>(\d+)<s>/o) {
+    return ($1, $2);
+  }
+  # span to token - right token
+  elsif ($_[0] =~ m/^<b>\d+<i>(\d+)<s>/o) {
+    return ($1, $1);
+  };
+  warn 'Unknown relation format!';
+  return (0,0);
+};
 
-sub to_array {
-  my $self = shift;
-  [uniq(map($_->to_string, @{$self->{mt}}))];
+# Sort spans, attributes and relations
+sub _sort {
+
+  # Both are no spans
+  if (index($a->[5], '<>:') != 0 && index($b->[5], '<>:') != 0) {
+
+    # Both are attributes
+    # Order attributes by reference id
+    if (index($a->[5], '@:') == 0 && index($b->[5], '@:') == 0) {
+      my ($a_id) = ($a->[0] =~ m/^<s>(\d+)/);
+      my ($b_id) = ($b->[0] =~ m/^<s>(\d+)/);
+      if ($a_id > $b_id) {
+	return 1;
+      }
+      elsif ($a_id < $b_id) {
+	return -1;
+      }
+      else {
+	return 1;
+      };
+    }
+
+    # Both are relations
+    elsif (
+      (index($a->[5],'<:') == 0 || index($a->[5],'>:') == 0)  &&
+      (index($b->[5], '<:') == 0 || index($b->[5],'>:') == 0)) {
+      my $a_end = $a->[2] // 0;
+      my $b_end = $b->[2] // 0;
+
+      # left is p_end
+      if ($a_end < $b_end) {
+	return -1;
+      }
+      elsif ($a_end > $b_end) {
+	return 1;
+      }
+      else {
+	# Check for right positions
+	(my $a_start, $a_end) = _rel_right_pos($a->[0]);
+	(my $b_start, $b_end) = _rel_right_pos($b->[0]);
+	if ($a_start < $b_start) {
+	  return -1;
+	}
+	elsif ($a_start > $b_start) {
+	  return 1;
+	}
+	elsif ($a_end < $b_end) {
+	  return -1;
+	}
+	elsif ($a_end > $b_end) {
+	  return 1;
+	}
+	else {
+	  return 1;
+	};
+      };
+    };
+
+    # This has to be sorted alphabetically!
+    return $a->[5] cmp $b->[5];
+  }
+
+  # Not identical
+  elsif (index($a->[5], '<>:') != 0) {
+    return $a->[5] cmp $b->[5];
+  }
+  # Not identical
+  elsif (index($b->[5], '<>:') != 0) {
+    return $a->[5] cmp $b->[5];
+  }
+
+  # Sort both spans
+  else {
+    if ($a->[2] < $b->[2]) {
+      return -1;
+    }
+    elsif ($a->[2] > $b->[2]) {
+      return 1;
+    }
+
+    # Check depth
+    else {
+      my ($a_depth) = ($a->[0] =~ m/^<b>(\d+)/);
+      my ($b_depth) = ($b->[0] =~ m/^<b>(\d+)/);
+
+      $a_depth //= 0;
+      $b_depth //= 0;
+      if ($a_depth < $b_depth) {
+	return -1;
+      }
+      elsif ($a_depth > $b_depth) {
+	return 1;
+      }
+      else {
+	return 1;
+      };
+    };
+  };
 };
 
 
diff --git a/lib/KorAP/Field/MultiTermTokenStream.pm b/lib/KorAP/Field/MultiTermTokenStream.pm
index f9e97a2..47524ab 100644
--- a/lib/KorAP/Field/MultiTermTokenStream.pm
+++ b/lib/KorAP/Field/MultiTermTokenStream.pm
@@ -34,6 +34,7 @@
   $_[0]->{mtt};
 };
 
+
 sub to_array {
   my $self = shift;
   [ map { $_->to_array } @{$self->{mtt}} ];
diff --git a/lib/KorAP/Index/Base/Paragraphs.pm b/lib/KorAP/Index/Base/Paragraphs.pm
index 105bd59..e5386f4 100644
--- a/lib/KorAP/Index/Base/Paragraphs.pm
+++ b/lib/KorAP/Index/Base/Paragraphs.pm
@@ -14,7 +14,8 @@
 	term => '<>:base/s:p',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>1'
       );
       $i++;
     }
diff --git a/lib/KorAP/Index/Base/Sentences.pm b/lib/KorAP/Index/Base/Sentences.pm
index f1ca6f9..6d485ad 100644
--- a/lib/KorAP/Index/Base/Sentences.pm
+++ b/lib/KorAP/Index/Base/Sentences.pm
@@ -18,7 +18,8 @@
 	term => '<>:base/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2'
       );
       $last_p = $span->p_end;
       $last_o = $span->o_end;
@@ -31,7 +32,8 @@
     term => '<>:base/s:t',
     o_start => $first->[1],
     p_end => $last_p,
-    o_end => $last_o
+    o_end => $last_o,
+    payload => '<b>0'
   );
 
   $$self->stream->add_meta('base/sentences', '<i>' . $i);
diff --git a/lib/KorAP/Index/Connexor/Phrase.pm b/lib/KorAP/Index/Connexor/Phrase.pm
index ed36de3..00a1b0d 100644
--- a/lib/KorAP/Index/Connexor/Phrase.pm
+++ b/lib/KorAP/Index/Connexor/Phrase.pm
@@ -22,7 +22,8 @@
 	  term => '<>:cnx/c:' . $type,
 	  o_start => $span->o_start,
 	  o_end => $span->o_end,
-	  p_end => $span->p_end
+	  p_end => $span->p_end,
+	  payload => '<b>0' # Pseudo-depth
 	);
       };
     }
diff --git a/lib/KorAP/Index/Connexor/Sentences.pm b/lib/KorAP/Index/Connexor/Sentences.pm
index ac6f89f..db95729 100644
--- a/lib/KorAP/Index/Connexor/Sentences.pm
+++ b/lib/KorAP/Index/Connexor/Sentences.pm
@@ -15,7 +15,8 @@
 	term => '<>:cnx/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2'
       );
       $i++;
     }
diff --git a/lib/KorAP/Index/CoreNLP/Constituency.pm b/lib/KorAP/Index/CoreNLP/Constituency.pm
index 4793bfd..ee37abc 100644
--- a/lib/KorAP/Index/CoreNLP/Constituency.pm
+++ b/lib/KorAP/Index/CoreNLP/Constituency.pm
@@ -1,7 +1,6 @@
 package KorAP::Index::CoreNLP::Constituency;
 use KorAP::Index::Base;
 use Set::Scalar;
-use v5.16;
 
 sub parse {
   my $self = shift;
@@ -25,8 +24,14 @@
       $rel = [$rel] unless ref $rel eq 'ARRAY';
 
       foreach (@$rel) {
-	if ($_->{-label} eq 'dominates' && $_->{-target}) {
-	  $corenlp_const_noroot->insert($_->{-target});
+	if ($_->{-label} eq 'dominates') {
+	  if ($_->{-target}) {
+	    $corenlp_const_noroot->insert($_->{-target});
+	  }
+	  elsif (my $uri = $_->{-uri}) {
+	    $uri =~ s/^morpho\.xml#//;
+	    $corenlp_const_noroot->insert($uri);
+	  };
 	};
       };
     }
@@ -34,7 +39,8 @@
 
   my $stream = $$self->stream;
 
-  my $add_const = sub {
+  my $add_const;
+  $add_const = sub {
     my $span = shift;
     my $level = shift;
     my $mtt = $stream->pos($span->p_start);
@@ -53,11 +59,11 @@
       p_end => $span->p_end
     );
 
-    $term{payload} = '<b>' . $level if $level;
+    $term{payload} = '<b>' . ($level // 0);
 
     $mtt->add(%term);
 
-    my $this = __SUB__;
+    my $this = $add_const;
 
     my $rel = $content->{rel} or return;
     $rel = [$rel] unless ref $rel eq 'ARRAY';
@@ -79,7 +85,7 @@
 };
 
 sub layer_info {
-    ['corenlp/c=const']
+    ['corenlp/c=spans']
 }
 
 1;
diff --git a/lib/KorAP/Index/CoreNLP/Sentences.pm b/lib/KorAP/Index/CoreNLP/Sentences.pm
index 0f40213..cacc2b0 100644
--- a/lib/KorAP/Index/CoreNLP/Sentences.pm
+++ b/lib/KorAP/Index/CoreNLP/Sentences.pm
@@ -15,7 +15,8 @@
 	term => '<>:corenlp/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2'
       );
       $i++;
     }
diff --git a/lib/KorAP/Index/Mate/Morpho.pm b/lib/KorAP/Index/Mate/Morpho.pm
index 035bc37..1a06f63 100644
--- a/lib/KorAP/Index/Mate/Morpho.pm
+++ b/lib/KorAP/Index/Mate/Morpho.pm
@@ -13,69 +13,6 @@
 
       my $content = $token->hash->{fs}->{f};
 
-      my ($found, $pos, $msd, $id);
-
-      my $capital = 0;
-
-      foreach my $f (@{$content->{fs}->{f}}) {
-	#pos
-	if (($f->{-name} eq 'pos') && ($found = $f->{'#text'})) {
-	  $pos = $found;
-	}
-
-	# lemma
-	elsif (($f->{-name} eq 'lemma')
-		 && ($found = $f->{'#text'})
-		   && $found ne '--') {
-	  $mtt->add(term => 'mate/l:' . $found);
-	}
-
-	# MSD
-	elsif (($f->{-name} eq 'msd') &&
-		 ($found = $f->{'#text'}) &&
-		   ($found ne '_')) {
-	  $msd = $found;
-	  $id = $mtt->id_counter;
-	};
-      };
-
-      $mtt->add(term => 'mate/m:' . $pos . ($id ? ('$<s>' . $id) : ''));
-
-      # MSD
-      if ($msd) {
-	foreach (split '\|', $msd) {
-	  my ($x, $y) = split "=", $_;
-	  # case, tense, number, mood, person, degree, gender
-	  $mtt->add(term => '@:' . $x . ($y ? '=' . $y : '') . '$<s>' . $id);
-	};
-      };
-    }) or return;
-
-  return 1;
-};
-
-sub layer_info {
-    ['mate/l=tokens', 'mate/m=tokens']
-};
-
-1;
-
-
-__END__
-
-
-sub parse {
-  my $self = shift;
-
-  $$self->add_tokendata(
-    foundry => 'mate',
-    layer => 'morpho',
-    cb => sub {
-      my ($stream, $token) = @_;
-      my $mtt = $stream->pos($token->pos);
-
-      my $content = $token->hash->{fs}->{f};
-
       my $found;
 
       my $capital = 0;
diff --git a/lib/KorAP/Index/Mate/Morpho2.pm b/lib/KorAP/Index/Mate/Morpho2.pm
new file mode 100644
index 0000000..e032f2f
--- /dev/null
+++ b/lib/KorAP/Index/Mate/Morpho2.pm
@@ -0,0 +1,63 @@
+package KorAP::Index::Mate::Morpho;
+use KorAP::Index::Base;
+
+# This attaches morphological information as attributes to the pos
+
+sub parse {
+  my $self = shift;
+
+  $$self->add_tokendata(
+    foundry => 'mate',
+    layer => 'morpho',
+    cb => sub {
+      my ($stream, $token) = @_;
+      my $mtt = $stream->pos($token->pos);
+
+      my $content = $token->hash->{fs}->{f};
+
+      my ($found, $pos, $msd, $id);
+
+      my $capital = 0;
+
+      foreach my $f (@{$content->{fs}->{f}}) {
+	#pos
+	if (($f->{-name} eq 'pos') && ($found = $f->{'#text'})) {
+	  $pos = $found;
+	}
+
+	# lemma
+	elsif (($f->{-name} eq 'lemma')
+		 && ($found = $f->{'#text'})
+		   && $found ne '--') {
+	  $mtt->add(term => 'mate/l:' . $found);
+	}
+
+	# MSD
+	elsif (($f->{-name} eq 'msd') &&
+		 ($found = $f->{'#text'}) &&
+		   ($found ne '_')) {
+	  $msd = $found;
+	  $id = $mtt->id_counter;
+	};
+      };
+
+      $mtt->add(term => 'mate/m:' . $pos . ($id ? ('$<s>' . $id) : ''));
+
+      # MSD
+      if ($msd) {
+	foreach (split '\|', $msd) {
+	  my ($x, $y) = split "=", $_;
+	  # case, tense, number, mood, person, degree, gender
+	  $mtt->add(term => '@:' . $x . ($y ? '=' . $y : '') . '$<s>' . $id);
+	};
+      };
+    }) or return;
+
+  return 1;
+};
+
+sub layer_info {
+    ['mate/l=tokens', 'mate/m=tokens']
+};
+
+1;
diff --git a/lib/KorAP/Index/OpenNLP/Sentences.pm b/lib/KorAP/Index/OpenNLP/Sentences.pm
index 8710763..f4e84e9 100644
--- a/lib/KorAP/Index/OpenNLP/Sentences.pm
+++ b/lib/KorAP/Index/OpenNLP/Sentences.pm
@@ -15,7 +15,8 @@
 	term => '<>:opennlp/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2' # t/p/s
       );
       $i++;
     }
diff --git a/lib/KorAP/Index/TreeTagger/Morpho.pm b/lib/KorAP/Index/TreeTagger/Morpho.pm
index 81766c7..989728b 100644
--- a/lib/KorAP/Index/TreeTagger/Morpho.pm
+++ b/lib/KorAP/Index/TreeTagger/Morpho.pm
@@ -22,11 +22,11 @@
 	$content = $fs->{fs}->{f};
 
 	my @val;
-	my $certainty = '';
+	my $certainty = 0;
 	foreach (@$content) {
 	  if ($_->{-name} eq 'certainty') {
 	    $certainty = floor(($_->{'#text'} * 255));
-	    $certainty = '$<b>' . $certainty if $certainty;
+	    $certainty = $certainty if $certainty;
 	  }
 	  else {
 	    push @val, $_
@@ -39,16 +39,20 @@
 		($found = $_->{'#text'}) &&
 		  ($found ne 'UNKNOWN') &&
 		    ($found ne '?')) {
-	    $mtt->add(
-	      term => 'tt/l:' . $found . $certainty
+	    my %term = (
+	      term => 'tt/l:' . $found
 	    );
+	    $term{payload} = '<b>' . $certainty if $certainty;
+	    $mtt->add(%term);
 	  };
 
 	  # pos
 	  if (($_->{-name} eq 'ctag') && ($found = $_->{'#text'})) {
-	    $mtt->add(
-	      term => 'tt/p:' . $found . $certainty
+	    my %term = (
+	      term => 'tt/p:' . $found
 	    );
+	    $term{payload} = '<b>' . $certainty if $certainty;
+	    $mtt->add(%term);
 	  };
 	};
       };
diff --git a/lib/KorAP/Index/TreeTagger/Sentences.pm b/lib/KorAP/Index/TreeTagger/Sentences.pm
index 06669ea..37b49e0 100644
--- a/lib/KorAP/Index/TreeTagger/Sentences.pm
+++ b/lib/KorAP/Index/TreeTagger/Sentences.pm
@@ -15,7 +15,8 @@
 	term => '<>:tt/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2' # Depth is 2 by default t/p/s
       );
       $i++;
     }
diff --git a/lib/KorAP/Index/XIP/Constituency.pm b/lib/KorAP/Index/XIP/Constituency.pm
index 62a4a29..d181afd 100644
--- a/lib/KorAP/Index/XIP/Constituency.pm
+++ b/lib/KorAP/Index/XIP/Constituency.pm
@@ -34,6 +34,7 @@
       my $rel = $span->hash->{rel} or return;
       $rel = [$rel] unless ref $rel eq 'ARRAY';
 
+      # Iterate over all relations
       foreach (@$rel) {
 	if ($_->{-label} eq 'dominates') {
 
@@ -43,6 +44,7 @@
 	    $target = $1;
 	  };
 
+	  # The target may not be addressable
 	  next unless $target;
 
 	  # It's definately not a root
@@ -57,7 +59,7 @@
 
   # Recursive tree traversal method
   my $add_const;
-  $add_const= sub {
+  $add_const = sub {
     my ($span, $level) = @_;
 
     weaken $xip_const_root;
@@ -68,6 +70,7 @@
 
     my $content = $span->hash;
     my $f = $content->{fs}->{f};
+
     unless ($f->{-name} eq 'const') {
       warn $f->{-id} . ' is no constant';
       return;
@@ -89,7 +92,7 @@
     );
 
     # Only add level payload if node != root
-    $term{payload} = '<b>' . $level if $level;
+    $term{payload} ='<b>' . ($level // 0);
 
     $mtt->add(%term);
 
@@ -141,7 +144,7 @@
 
 # Layer info
 sub layer_info {
-    ['xip/c=const']
-}
+  ['xip/c=spans']
+};
 
 1;
diff --git a/lib/KorAP/Index/XIP/Morpho.pm b/lib/KorAP/Index/XIP/Morpho.pm
index 1eae6c6..474bef0 100644
--- a/lib/KorAP/Index/XIP/Morpho.pm
+++ b/lib/KorAP/Index/XIP/Morpho.pm
@@ -60,7 +60,7 @@
 };
 
 sub layer_info {
-    ['xip/l=lemma', 'xip/p=pos']
+    ['xip/l=tokens', 'xip/p=tokens']
 };
 
 
diff --git a/lib/KorAP/Index/XIP/Sentences.pm b/lib/KorAP/Index/XIP/Sentences.pm
index f045152..35ab6f1 100644
--- a/lib/KorAP/Index/XIP/Sentences.pm
+++ b/lib/KorAP/Index/XIP/Sentences.pm
@@ -18,7 +18,8 @@
 	term => '<>:xip/s:s',
 	o_start => $span->o_start,
 	o_end => $span->o_end,
-	p_end => $span->p_end
+	p_end => $span->p_end,
+	payload => '<b>2'
       );
       $i++;
     }
@@ -29,4 +30,9 @@
   return 1;
 };
 
+sub layer_info {
+    ['xip/s=spans'];
+};
+
+
 1;
diff --git a/t/artificial.t b/t/artificial.t
index 5b5210f..10d4429 100644
--- a/t/artificial.t
+++ b/t/artificial.t
@@ -59,8 +59,9 @@
 is($tokens->name, 'tokens', 'Name');
 is($tokens->layer, 'Tokens', 'Layer');
 
-is($tokens->stream->pos(0)->to_string, '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18]', 'Token is correct');
-is($tokens->stream->pos(1)->to_string, '[(4-11)s:letzten|i:letzten|_1#4-11]', 'Token is correct');
+is($tokens->stream->pos(0)->to_string, '[(0-3)-:tokens$<i>18|_0#0-3|i:zum|s:Zum]', 'Token is correct');
+
+is($tokens->stream->pos(1)->to_string, '[(4-11)_1#4-11|i:letzten|s:letzten]', 'Token is correct');
 
 my $i = 2;
 foreach ([12,23, 'kulturellen'],
@@ -82,8 +83,8 @@
        ) {
   is($tokens->stream->pos($i++)->to_string,
      '[('.$_->[0].'-'.$_->[1].')'.
-       's:'.$_->[2].'|i:'.lc($_->[2]).'|'.
-       '_'.($i-1).'#'.$_->[0].'-'.$_->[1].']',
+       '_'.($i-1).'#'.$_->[0].'-'.$_->[1] . '|' .
+	 'i:'.lc($_->[2]).'|s:'.$_->[2].']',
      'Token is correct');
 };
 
@@ -92,6 +93,7 @@
 # Add OpenNLP/morpho
 ok($tokens->add('OpenNLP', 'Morpho'), 'Add OpenNLP/Morpho');
 
+
 $i = 0;
 foreach (qw/APPRART ADJA ADJA NN VVFIN ART NN ART NN NE PTKVZ KOUS ART NN NN NN VVPP VAFIN/) {
   like($tokens->stream->pos($i++)->to_string,
@@ -103,8 +105,7 @@
 # Add OpenNLP/sentences
 ok($tokens->add('OpenNLP', 'Sentences'), 'Add OpenNLP/Sentences');
 
-is($tokens->stream->pos(0)->to_string, '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|opennlp/p:APPRART|<>:opennlp/s:s#0-129$<i>17|-:opennlp/sentences$<i>1]', 'Correct sentence');
-
+is($tokens->stream->pos(0)->to_string, '[(0-3)-:opennlp/sentences$<i>1|-:tokens$<i>18|_0#0-3|i:zum|s:Zum|opennlp/p:APPRART|<>:opennlp/s:s#0-129$<i>17]', 'Correct sentence');
 
 # New instantiation
 ok($tokens = KorAP::Tokenizer->new(
@@ -124,7 +125,7 @@
 ok($tokens->add('Base', 'Paragraphs'), 'Add Base/Paragraphs');
 
 is($tokens->stream->pos(0)->to_string,
-   '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|<>:base/s:s#0-129$<i>17|<>:base/s:t#0-129$<i>17|-:base/sentences$<i>1|-:base/paragraphs$<i>0]',
+   '[(0-3)-:base/paragraphs$<i>0|-:base/sentences$<i>1|-:tokens$<i>18|_0#0-3|i:zum|s:Zum|<>:base/s:t#0-129$<i>17<b>0|<>:base/s:s#0-129$<i>17<b>0]',
    'Correct base annotation');
 
 
@@ -135,11 +136,11 @@
 ok($tokens->add('CoreNLP', 'NamedEntities', 'ne_dewac_175m_600'), 'Add CoreNLP/NamedEntities');
 ok($tokens->add('CoreNLP', 'NamedEntities', 'ne_hgc_175m_600'), 'Add CoreNLP/NamedEntities');
 
+# [(64-73)s:Hofbergli|i:hofbergli|_9#64-73|corenlp/ne_dewac_175m_600:I-LOC|corenlp/ne_hgc_175m_600:I-LOC]
 is($tokens->stream->pos(9)->to_string,
-   '[(64-73)s:Hofbergli|i:hofbergli|_9#64-73|corenlp/ne_dewac_175m_600:I-LOC|corenlp/ne_hgc_175m_600:I-LOC]',
+   '[(64-73)_9#64-73|corenlp/ne:I-LOC|i:hofbergli|s:Hofbergli]',
    'Correct NamedEntities annotation');
 
-
 # New instantiation
 ok($tokens = new_tokenizer->parse, 'Parse');
 
@@ -147,7 +148,7 @@
 ok($tokens->add('CoreNLP', 'Morpho'), 'Add CoreNLP/Morpho');
 
 is($tokens->stream->pos(0)->to_string,
-   '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|corenlp/p:APPRART]',
+   '[(0-3)-:tokens$<i>18|_0#0-3|i:zum|s:Zum|corenlp/p:APPRART]',
    'Correct corenlp annotation');
 
 $i = 0;
@@ -161,10 +162,9 @@
 ok($tokens->add('CoreNLP', 'Sentences'), 'Add CoreNLP/Sentences');
 
 is($tokens->stream->pos(0)->to_string,
-   '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|corenlp/p:APPRART|<>:corenlp/s:s#0-129$<i>17|-:corenlp/sentences$<i>1]',
+   '[(0-3)-:corenlp/sentences$<i>1|-:tokens$<i>18|_0#0-3|i:zum|s:Zum|corenlp/p:APPRART|<>:corenlp/s:s#0-129$<i>17]',
    'Correct corenlp annotation');
 
-
 # New instantiation
 ok($tokens = new_tokenizer->parse, 'New Tokenizer');
 
@@ -172,7 +172,7 @@
 ok($tokens->add('Connexor', 'Sentences'), 'Add Connexor/Sentences');
 
 is($tokens->stream->pos(0)->to_string,
-   '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|<>:cnx/s:s#0-129$<i>17|-:cnx/sentences$<i>1]',
+   '[(0-3)-:cnx/sentences$<i>1|-:tokens$<i>18|_0#0-3|i:zum|s:Zum|<>:cnx/s:s#0-129$<i>17<b>0]',
    'Correct cnx annotation');
 
 # New instantiation
@@ -192,6 +192,7 @@
        'Annotation (Connexor/p) is correct: ' . $_);
 };
 
+
 $i = 0;
 foreach (qw/! ! ! ! IND:PRES ! ! ! ! Prop ! ! ! ! ! ! PCP:PERF IND:PRES/) {
   if ($_ eq '!') {
@@ -212,10 +213,10 @@
 # Add Connexor/Phrase
 ok($tokens->add('Connexor', 'Phrase'), 'Add Connexor/Phrase');
 my $stream = $tokens->stream;
-like($stream->pos(1)->to_string, qr!\|<>:cnx/c:np#4-30\$<i>4!, 'Annotation (Connexor/c) is correct');
-like($stream->pos(6)->to_string, qr!\|<>:cnx/c:np#40-47\$<i>7!, 'Annotation (Connexor/c) is correct');
-like($stream->pos(8)->to_string, qr!\|<>:cnx/c:np#52-73\$<i>10!, 'Annotation (Connexor/c) is correct');
-like($stream->pos(13)->to_string, qr!\|<>:cnx/c:np#89-111\$<i>16!, 'Annotation (Connexor/c) is correct');
+like($stream->pos(1)->to_string, qr!\|<>:cnx/c:np#4-30\$<i>4<b>0!, 'Annotation (Connexor/c) is correct');
+like($stream->pos(6)->to_string, qr!\|<>:cnx/c:np#40-47\$<i>7<b>0!, 'Annotation (Connexor/c) is correct');
+like($stream->pos(8)->to_string, qr!\|<>:cnx/c:np#52-73\$<i>10<b>0!, 'Annotation (Connexor/c) is correct');
+like($stream->pos(13)->to_string, qr!\|<>:cnx/c:np#89-111\$<i>16<b>0!, 'Annotation (Connexor/c) is correct');
 
 # New instantiation
 ok($tokens = new_tokenizer->parse, 'New Tokenizer');
@@ -242,7 +243,7 @@
 # Add XIP/Sentences
 ok($tokens->add('XIP', 'Sentences'), 'Add XIP/Sentences');
 
-is($tokens->stream->pos(0)->to_string, '[(0-3)s:Zum|i:zum|_0#0-3|-:tokens$<i>18|<>:xip/s:s#0-129$<i>17|-:xip/sentences$<i>1]', 'First sentence');
+is($tokens->stream->pos(0)->to_string, '[(0-3)-:tokens$<i>18|_0#0-3|i:zum|s:Zum|-:xip/sentences$<i>1|<>:xip/s:s#0-129$<i>17<b>0]', 'First sentence');
 
 # Add XIP/Morpho
 ok($tokens->add('XIP', 'Morpho'), 'Add XIP/Morpho');
diff --git a/t/real_goethe.t b/t/real_goethe.t
index e2d6984..15fa677 100644
--- a/t/real_goethe.t
+++ b/t/real_goethe.t
@@ -7,6 +7,10 @@
 use Data::Dumper;
 use JSON::XS;
 
+use Benchmark qw/:hireswallclock/;
+
+my $t = Benchmark->new;
+
 use utf8;
 use lib 'lib', '../lib';
 
@@ -67,7 +71,7 @@
 
 is($output->{foundries}, '', 'Foundries');
 is($output->{layerInfos}, '', 'layerInfos');
-is($output->{data}->[0]->[0], 's:Autobiographische', 'data');
+is($output->{data}->[0]->[3], 's:Autobiographische', 'data');
 
 is($output->{textSigle}, 'GOE_AGA.03828', 'Correct text sigle');
 is($output->{docSigle}, 'GOE_AGA', 'Correct document sigle');
@@ -101,8 +105,8 @@
 my $first_token = join('||', @{$output->{data}->[0]});
 like($first_token, qr/s:Autobiographische/, 'data');
 like($first_token, qr/_0#0-17/, 'data');
-like($first_token, qr!<>:base/s:s#0-30\$<i>2!, 'data');
-like($first_token, qr!<>:base\/s:t#0-35199\$<i>5226!, 'data');
+like($first_token, qr!<>:base/s:s#0-30\$<i>2<b>2!, 'data');
+like($first_token, qr!<>:base\/s:t#0-35199\$<i>5226<b>0!, 'data');
 
 ## OpenNLP
 $tokens->add('OpenNLP', 'Sentences');
@@ -132,8 +136,7 @@
    'Foundries');
 is($output->{layerInfos}, 'base/s=spans opennlp/p=tokens opennlp/s=spans tt/s=spans', 'layerInfos');
 $first_token = join('||', @{$output->{data}->[0]});
-like($first_token, qr!<>:tt/s:s#0-179\$<i>21!, 'data');
-
+like($first_token, qr!<>:tt/s:s#0-179\$<i>21<b>2!, 'data');
 
 $tokens->add('TreeTagger', 'Morpho');
 $output = decode_json( $tokens->to_json );
@@ -147,7 +150,6 @@
 like($first_token, qr!tt/l:Autobiographische\$<b>89!, 'data');
 like($first_token, qr!tt/p:NN\$<b>89!, 'data');
 
-
 ## CoreNLP
 $tokens->add('CoreNLP', 'NamedEntities');
 $output = decode_json( $tokens->to_json );
@@ -171,7 +173,6 @@
 $first_token = join('||', @{$output->{data}->[0]});
 like($first_token, qr!<>:corenlp/s:s#0-254\$<i>32!, 'data');
 
-
 $tokens->add('CoreNLP', 'Morpho');
 $output = decode_json( $tokens->to_json );
 like($output->{foundries}, qr!corenlp/morpho!, 'Foundries');
@@ -179,7 +180,33 @@
 $first_token = join('||', @{$output->{data}->[0]});
 like($first_token, qr!corenlp/p:ADJA!, 'data');
 
-fail('Check for Constiuency!');
+$tokens->add('CoreNLP', 'Constituency');
+$output = decode_json( $tokens->to_json );
+like($output->{foundries}, qr!corenlp/constituency!, 'Foundries');
+like($output->{layerInfos}, qr!corenlp/c=spans!, 'layerInfos');
+$first_token = join('||', @{$output->{data}->[0]});
+
+#           '<>:corenlp/c:ADJA#0-17$<i>1<b>0',
+#           '<>:corenlp/c:NP#0-17$<i>1<b>0',
+#           '<>:corenlp/c:CNP#0-17$<i>1<b>1',
+#           '<>:corenlp/c:NP#0-17$<i>1<b>2',
+#           '<>:corenlp/c:AP#0-17$<i>1<b>3',
+#           '<>:corenlp/c:PP#0-58$<i>5<b>2',
+#           '<>:corenlp/c:S#0-58$<i>5<b>3',
+#           '<>:corenlp/c:ROOT#0-254$<i>32<b>0',
+#           '<>:corenlp/c:S#0-254$<i>32<b>1',
+
+#like($first_token, qr!<>:corenlp/c:ADJA#0-17$<i>1<b>0!, 'data');
+#like($first_token, qr!<>:corenlp/c:NP#0-17$<i>1<b>0!, 'data');
+
+
+
+diag Dumper $output->{data}->[0];
+
+
+done_testing;
+__END__
+
 
 ## Glemm
 $tokens->add('Glemm', 'Morpho');
@@ -193,15 +220,13 @@
 like($first_token, qr!glemm/l:\+\+Biograph!, 'data');
 like($first_token, qr!glemm/l:\+\+-isch!, 'data');
 
-
 ## Connexor
 $tokens->add('Connexor', 'Sentences');
 $output = decode_json( $tokens->to_json );
 like($output->{foundries}, qr!connexor/sentences!, 'Foundries');
 like($output->{layerInfos}, qr!cnx/s=spans!, 'layerInfos');
 $first_token = join('||', @{$output->{data}->[0]});
-like($first_token, qr!<>:cnx/s:s#0-179\$<i>21!, 'data');
-
+like($first_token, qr!<>:cnx/s:s#0-179\$<i>21<b>2!, 'data');
 
 $tokens->add('Connexor', 'Morpho');
 $output = decode_json( $tokens->to_json );
@@ -220,7 +245,6 @@
 $first_token = join('||', @{$output->{data}->[0]});
 like($first_token, qr!<>:cnx/c:np#0-30\$<i>2!, 'data');
 
-
 $tokens->add('Connexor', 'Syntax');
 $output = decode_json( $tokens->to_json );
 like($output->{foundries}, qr!connexor/syntax!, 'Foundries');
@@ -236,13 +260,55 @@
 like($output->{layerInfos}, qr!mate/l=tokens!, 'layerInfos');
 like($output->{layerInfos}, qr!mate/m=tokens!, 'layerInfos');
 $first_token = join('||', @{$output->{data}->[0]});
-like($first_token, qr!---!, 'data');
+like($first_token, qr!mate/l:autobiographisch!, 'data');
+like($first_token, qr!mate/p:NN!, 'data');
+like($first_token, qr!mate/m:case:nom!, 'data');
+like($first_token, qr!mate/m:number:pl!, 'data');
+like($first_token, qr!mate/m:gender:\*!, 'data');
+
+
+fail("No test for mate dependency");
+
+## XIP
+$tokens->add('XIP', 'Sentences');
+$output = decode_json( $tokens->to_json );
+like($output->{foundries}, qr!xip/sentences!, 'Foundries');
+like($output->{layerInfos}, qr!xip/s=spans!, 'layerInfos');
+$first_token = join('||', @{$output->{data}->[0]});
+like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
+
+$tokens->add('XIP', 'Morpho');
+$output = decode_json( $tokens->to_json );
+like($output->{foundries}, qr!xip/morpho!, 'Foundries');
+like($output->{layerInfos}, qr!xip/l=tokens!, 'layerInfos');
+like($output->{layerInfos}, qr!xip/p=tokens!, 'layerInfos');
+$first_token = join('||', @{$output->{data}->[0]});
+like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
+
+
+# print timestr(timediff(Benchmark->new, $t));
+# 57.6802 wallclock secs (57.15 usr +  0.12 sys = 57.27 CPU)# $VAR1 = [
+# 55.026 wallclock secs (54.44 usr +  0.10 sys = 54.54 CPU)# $VAR1 = [
+# 55.3887 wallclock secs (54.62 usr +  0.17 sys = 54.79 CPU)# $VAR1 = [
+# 54.9578 wallclock secs (54.51 usr +  0.13 sys = 54.64 CPU)# $VAR1 = [
+# 53.7051 wallclock secs (53.42 usr +  0.11 sys = 53.53 CPU)# $VAR1 = [
+# 47.6566 wallclock secs (46.88 usr +  0.15 sys = 47.03 CPU)# $VAR1 = [
+# 47.2379 wallclock secs (46.60 usr +  0.11 sys = 46.71 CPU)# $VAR1 = [
+# 29.563 wallclock secs (29.37 usr +  0.10 sys = 29.47 CPU)# $VAR1 = [
+# 30.9321 wallclock secs (30.69 usr +  0.14 sys = 30.83 CPU)# $VAR1 = [
+
+$tokens->add('XIP', 'Constituency');
+$output = decode_json( $tokens->to_json );
+like($output->{foundries}, qr!xip/constituency!, 'Foundries');
+like($output->{layerInfos}, qr!xip/c=spans!, 'layerInfos');
+$first_token = join('||', @{$output->{data}->[0]});
+like($first_token, qr!<>:xip/c:NP#0-17\$<i>1<b>1!, 'data');
+like($first_token, qr!<>:xip/c:AP#0-17\$<i>1<b>2!, 'data');
+like($first_token, qr!<>:xip/c:ADJ#0-17\$<i>1<b>3!, 'data');
+like($first_token, qr!<>:xip/c:TOP#0-179\$<i>21<b>0!, 'data');
 
 diag Dumper $output->{data}->[0];
 
 
-diag "Use token-ids in tokens!";
-diag "Sort tokens based on positions!";
-
 done_testing;
 __END__
diff --git a/t/real_goethe_xip_constituency.t b/t/real_goethe_xip_constituency.t
new file mode 100644
index 0000000..2281d1a
--- /dev/null
+++ b/t/real_goethe_xip_constituency.t
@@ -0,0 +1,48 @@
+#!/usr/bin/env perl
+# source ~/perl5/perlbrew/etc/bashrc
+# perlbrew switch perl-blead@korap
+use strict;
+use warnings;
+use Test::More;
+use Data::Dumper;
+use JSON::XS;
+
+use utf8;
+use lib 'lib', '../lib';
+
+use File::Basename 'dirname';
+use File::Spec::Functions 'catdir';
+
+use_ok('KorAP::Document');
+
+# GOE/AGA/03828
+my $path = catdir(dirname(__FILE__), 'GOE/AGA/03828');
+
+ok(my $doc = KorAP::Document->new( path => $path . '/' ), 'Load Korap::Document');
+ok($doc->parse, 'Parse document');
+
+# Tokenization
+use_ok('KorAP::Tokenizer');
+
+my ($token_base_foundry, $token_base_layer) = (qw/OpenNLP Tokens/);
+
+# Get tokenization
+my $tokens = KorAP::Tokenizer->new(
+  path => $doc->path,
+  doc => $doc,
+  foundry => $token_base_foundry,
+  layer => $token_base_layer,
+  name => 'tokens'
+);
+ok($tokens, 'Token Object is fine');
+ok($tokens->parse, 'Token parsing is fine');
+
+$tokens->add('XIP', 'Constituency');
+my $output = decode_json( $tokens->to_json );
+is($output->{foundries}, 'xip xip/constituency', 'Foundries');
+is($output->{layerInfos}, 'xip/c=rels', 'layerInfos');
+is($output->{layerInfos}, '', 'layerInfos');
+my $first_token = join('||', @{$output->{data}->[0]});
+#like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
+
+diag Dumper $output->{data}->[0];
diff --git a/t/sort_tokens.t b/t/sort_tokens.t
new file mode 100644
index 0000000..d698cac
--- /dev/null
+++ b/t/sort_tokens.t
@@ -0,0 +1,100 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use Mojo::ByteStream 'b';
+use utf8;
+use lib 'lib', '../lib';
+
+use_ok('KorAP::Field::MultiTermTokenStream');
+
+ok(my $mtt = KorAP::Field::MultiTermToken->new, 'New token');
+ok($mtt->o_start(0), 'Set start character offset');
+ok($mtt->o_end(5), 'Set end character offset');
+ok($mtt->add(term => '@:k=N',
+	     payload =>'<s>9'), 'Add token');
+ok($mtt->add(term => 'a=N',
+	     payload =>'<b>144'), 'Add token');
+ok($mtt->add(term => '<>:b=N',
+	     o_start => 0,
+	     o_end => 5,
+	     p_end => 5), 'Add token');
+ok($mtt->add(term => 'c=N', payload => '<b>144'), 'Add token');
+ok($mtt->add(term => '<>:d=N',
+	     o_start => 0,
+	     o_end => 5,
+	     p_end => 6,
+	     payload => '<b>7'), 'Add token');
+ok($mtt->add(term => '@:j=N',
+	     payload =>'<s>8'), 'Add token');
+ok($mtt->add(term => '<>:e=ADJ',
+	     o_start => 0,
+	     o_end => 5,
+	     p_end => 6,
+	     payload => '<b>6'), 'Add token');
+ok($mtt->add(term => '<>:f=N',
+	     o_start => 0,
+	     o_end => 5,
+	     p_end => 6,
+	     payload => '<b>5<b>122'), 'Add token');
+ok($mtt->add(term => 'g=N',
+	     payload =>'<b>144'), 'Add token');
+ok($mtt->add(term => '@:h=N',
+	     payload =>'<s>5'), 'Add token');
+ok($mtt->add(term => '@:i=N',
+	     payload =>'<s>3'), 'Add token');
+
+is($mtt->to_string,'[(0-5)<>:b=N#0-5$<i>5|<>:f=N#0-5$<i>6<b>5<b>122|<>:e=ADJ#0-5$<i>6<b>6|<>:d=N#0-5$<i>6<b>7|@:i=N$<s>3|@:h=N$<s>5|@:j=N$<s>8|@:k=N$<s>9|a=N$<b>144|c=N$<b>144|g=N$<b>144]', 'Check string');
+
+ok($mtt = KorAP::Field::MultiTermToken->new, 'New token');
+ok($mtt->o_start(0), 'Set start character offset');
+ok($mtt->o_end(5), 'Set end character offset');
+
+# 2-7 to 2-4
+ok($mtt->add(term => '<:child-of', p_end => 7, payload => '<i>2<i>4<s>5<s>4<s>3'), 'New rel');
+
+# 2-4 to 3
+ok($mtt->add(term => '<:child-of', p_end => 4, payload => '<b>0<i>3<s>3<s>3<s>1'), 'New rel');
+
+# 2 to 2-4
+# <i>startright<i>endright<s>relation-id<s>left-id<s>right-id
+ok($mtt->add(term => '>:child-of', payload => '<i>2<i>4<s>2<s>1<s>3'), 'New rel');
+
+# 2-4 to 2-7
+ok($mtt->add(term => '>:child-of', p_end => 4, payload => '<i>2<i>7<s>1<s>3<s>4'), 'New rel');
+
+# 2-4 t0 4
+ok($mtt->add(term => '<:child-of', p_end => 4, payload => '<b>0<i>4<s>4<s>3<s>1'), 'New rel');
+
+# 2-7 to 1-7
+ok($mtt->add(term => '>:child-of', p_end => 7, payload => '<i>1<i>7<s>2<s>4<s>2'), 'New rel');
+
+# 2-7 to 4-7
+ok($mtt->add(term => '<:child-of', p_end => 7, payload => '<i>4<i>7<s>6<s>4<s>2'), 'New rel');
+
+# 2 to 3
+ok($mtt->add(term => '>:child-of', payload => '<i>3<s>2<s>4<s>2'), 'New rel');
+
+is($mtt->to_string, '[(0-5)>:child-of$<i>2<i>4<s>2<s>1<s>3|>:child-of$<i>3<s>2<s>4<s>2|>:child-of$<i>4<i>2<i>7<s>1<s>3<s>4|<:child-of$<i>4<b>0<i>3<s>3<s>3<s>1|<:child-of$<i>4<b>0<i>4<s>4<s>3<s>1|>:child-of$<i>7<i>1<i>7<s>2<s>4<s>2|<:child-of$<i>7<i>2<i>4<s>5<s>4<s>3|<:child-of$<i>7<i>4<i>7<s>6<s>4<s>2]', 'Check sorted relations');
+# 2 -> 2-4
+# >:child-of$<i>2<i>4<s>2<s>1<s>3
+# 2 -> 3
+# >:child-of$<i>3<s>2<s>4<s>2
+# 2-4 -> 2-7
+# >:child-of$<i>4<i>2<i>7<s>1<s>3<s>4
+# 2-4 -> 3
+# <:child-of$<i>4<b>0<i>3<s>3<s>3<s>1
+# 2-4 -> 4
+# <:child-of$<i>4<b>0<i>4<s>4<s>3<s>1
+# 2-7 -> 1-7
+# >:child-of$<i>7<i>1<i>7<s>2<s>4<s>2
+# 2-7 -> 2-4
+# <:child-of$<i>7<i>2<i>4<s>5<s>4<s>3
+# 2-7 -> 4-7
+# <:child-of$<i>7<i>4<i>7<s>6<s>4<s>2
+
+done_testing;
+
+
+__END__
+
diff --git a/t/xip/constituency.xml b/t/xip/constituency.xml
new file mode 100644
index 0000000..d36678f
--- /dev/null
+++ b/t/xip/constituency.xml
@@ -0,0 +1,534 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-model href="span.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+
+<layer xmlns="http://ids-mannheim.de/ns/KorAP" docid="GOE_AGA.03828" version="KorAP-0.4">
+   <spanList>
+      <span id="s1_n1" from="0" to="254">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ROOT</f>
+         </fs>
+         <rel label="dominates" target="s1_n2"/>
+      </span>
+      <span id="s1_n2" from="0" to="254">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n3"/>
+         <rel label="dominates" uri="morpho.xml#s1_n35"/>
+         <rel label="dominates" target="s1_n37"/>
+         <rel label="dominates" uri="morpho.xml#s1_n43"/>
+         <rel label="dominates" target="s1_n45"/>
+         <rel label="dominates" uri="morpho.xml#s1_n130"/>
+      </span>
+      <span id="s1_n3" from="0" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PP</f>
+         </fs>
+         <rel label="dominates" target="s1_n4"/>
+      </span>
+      <span id="s1_n4" from="0" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n5"/>
+         <rel label="dominates" target="s1_n23"/>
+      </span>
+      <span id="s1_n5" from="0" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PP</f>
+         </fs>
+         <rel label="dominates" target="s1_n6"/>
+      </span>
+      <span id="s1_n6" from="0" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n7"/>
+         <rel label="dominates" target="s1_n13"/>
+      </span>
+      <span id="s1_n7" from="0" to="17">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" target="s1_n8"/>
+      </span>
+      <span id="s1_n8" from="0" to="17">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP</f>
+         </fs>
+         <rel label="dominates" target="s1_n9"/>
+      </span>
+      <span id="s1_n9" from="0" to="17">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" target="s1_n10"/>
+      </span>
+      <span id="s1_n10" from="0" to="17">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n11"/>
+      </span>
+      <span id="s1_n11" from="0" to="17">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJA</f>
+         </fs>
+      </span>
+      <span id="s1_n13" from="18" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" target="s1_n14"/>
+      </span>
+      <span id="s1_n14" from="18" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP</f>
+         </fs>
+         <rel label="dominates" target="s1_n15"/>
+      </span>
+      <span id="s1_n15" from="18" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" target="s1_n16"/>
+         <rel label="dominates" uri="morpho.xml#s1_n21"/>
+      </span>
+      <span id="s1_n16" from="18" to="48">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n17"/>
+         <rel label="dominates" uri="morpho.xml#s1_n19"/>
+      </span>
+      <span id="s1_n17" from="18" to="30">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJA</f>
+         </fs>
+      </span>
+      <span id="s1_n19" from="31" to="48">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n21" from="49" to="50">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">TRUNC</f>
+         </fs>
+      </span>
+      <span id="s1_n23" from="50" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-SB</f>
+         </fs>
+         <rel label="dominates" target="s1_n24"/>
+      </span>
+      <span id="s1_n24" from="50" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CS</f>
+         </fs>
+         <rel label="dominates" target="s1_n25"/>
+      </span>
+      <span id="s1_n25" from="50" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n26"/>
+         <rel label="dominates" target="s1_n32"/>
+      </span>
+      <span id="s1_n26" from="50" to="52">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP-SB</f>
+         </fs>
+         <rel label="dominates" target="s1_n27"/>
+      </span>
+      <span id="s1_n27" from="50" to="52">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n28"/>
+         <rel label="dominates" uri="morpho.xml#s1_n30"/>
+      </span>
+      <span id="s1_n28" from="50" to="51">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CARD</f>
+         </fs>
+      </span>
+      <span id="s1_n30" from="51" to="52">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">TRUNC</f>
+         </fs>
+      </span>
+      <span id="s1_n32" from="53" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-OA</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n33"/>
+      </span>
+      <span id="s1_n33" from="53" to="58">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADV</f>
+         </fs>
+      </span>
+      <span id="s1_n35" from="59" to="60">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">XY</f>
+         </fs>
+      </span>
+      <span id="s1_n37" from="61" to="66">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-SB</f>
+         </fs>
+         <rel label="dominates" target="s1_n38"/>
+      </span>
+      <span id="s1_n38" from="61" to="66">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CS</f>
+         </fs>
+         <rel label="dominates" target="s1_n39"/>
+      </span>
+      <span id="s1_n39" from="61" to="66">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n40"/>
+      </span>
+      <span id="s1_n40" from="61" to="66">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">VP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n41"/>
+      </span>
+      <span id="s1_n41" from="61" to="66">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJD</f>
+         </fs>
+      </span>
+      <span id="s1_n43" from="66" to="67">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">$,</f>
+         </fs>
+      </span>
+      <span id="s1_n45" from="68" to="253">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n46"/>
+         <rel label="dominates" target="s1_n48"/>
+         <rel label="dominates" uri="morpho.xml#s1_n122"/>
+         <rel label="dominates" uri="morpho.xml#s1_n124"/>
+         <rel label="dominates" uri="morpho.xml#s1_n126"/>
+         <rel label="dominates" uri="morpho.xml#s1_n128"/>
+      </span>
+      <span id="s1_n46" from="68" to="72">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">APPR</f>
+         </fs>
+      </span>
+      <span id="s1_n48" from="73" to="218">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AP</f>
+         </fs>
+         <rel label="dominates" target="s1_n49"/>
+         <rel label="dominates" uri="morpho.xml#s1_n120"/>
+      </span>
+      <span id="s1_n49" from="73" to="213">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AVP</f>
+         </fs>
+         <rel label="dominates" target="s1_n50"/>
+      </span>
+      <span id="s1_n50" from="73" to="213">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n51"/>
+         <rel label="dominates" uri="morpho.xml#s1_n69"/>
+         <rel label="dominates" target="s1_n71"/>
+         <rel label="dominates" target="s1_n117"/>
+      </span>
+      <span id="s1_n51" from="73" to="127">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-SB</f>
+         </fs>
+         <rel label="dominates" target="s1_n52"/>
+      </span>
+      <span id="s1_n52" from="73" to="127">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n53"/>
+         <rel label="dominates" uri="morpho.xml#s1_n55"/>
+         <rel label="dominates" target="s1_n57"/>
+      </span>
+      <span id="s1_n53" from="73" to="78">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">TRUNC</f>
+         </fs>
+      </span>
+      <span id="s1_n55" from="79" to="82">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">KON</f>
+         </fs>
+      </span>
+      <span id="s1_n57" from="83" to="127">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" target="s1_n58"/>
+         <rel label="dominates" uri="morpho.xml#s1_n65"/>
+         <rel label="dominates" uri="morpho.xml#s1_n67"/>
+      </span>
+      <span id="s1_n58" from="83" to="102">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">MPN</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n59"/>
+         <rel label="dominates" uri="morpho.xml#s1_n61"/>
+         <rel label="dominates" uri="morpho.xml#s1_n63"/>
+      </span>
+      <span id="s1_n59" from="83" to="85">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">FM</f>
+         </fs>
+      </span>
+      <span id="s1_n61" from="86" to="88">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">FM</f>
+         </fs>
+      </span>
+      <span id="s1_n63" from="89" to="102">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">FM</f>
+         </fs>
+      </span>
+      <span id="s1_n65" from="103" to="113">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJA</f>
+         </fs>
+      </span>
+      <span id="s1_n67" from="114" to="127">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n69" from="128" to="133">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">VVFIN</f>
+         </fs>
+      </span>
+      <span id="s1_n71" from="134" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AVP</f>
+         </fs>
+         <rel label="dominates" target="s1_n72"/>
+      </span>
+      <span id="s1_n72" from="134" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">S</f>
+         </fs>
+         <rel label="dominates" target="s1_n73"/>
+         <rel label="dominates" uri="morpho.xml#s1_n93"/>
+         <rel label="dominates" target="s1_n95"/>
+      </span>
+      <span id="s1_n73" from="134" to="179">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-SB</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n74"/>
+         <rel label="dominates" target="s1_n76"/>
+      </span>
+      <span id="s1_n74" from="134" to="137">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ART</f>
+         </fs>
+      </span>
+      <span id="s1_n76" from="138" to="179">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n77"/>
+         <rel label="dominates" uri="morpho.xml#s1_n79"/>
+         <rel label="dominates" target="s1_n81"/>
+         <rel label="dominates" uri="morpho.xml#s1_n91"/>
+      </span>
+      <span id="s1_n77" from="138" to="149">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n79" from="150" to="153">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">KON</f>
+         </fs>
+      </span>
+      <span id="s1_n81" from="154" to="178">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n82"/>
+         <rel label="dominates" uri="morpho.xml#s1_n84"/>
+         <rel label="dominates" target="s1_n86"/>
+      </span>
+      <span id="s1_n82" from="154" to="157">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ART</f>
+         </fs>
+      </span>
+      <span id="s1_n84" from="158" to="162">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n86" from="163" to="178">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n87"/>
+         <rel label="dominates" uri="morpho.xml#s1_n89"/>
+      </span>
+      <span id="s1_n87" from="163" to="169">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PPOSAT</f>
+         </fs>
+      </span>
+      <span id="s1_n89" from="170" to="178">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n91" from="178" to="179">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">$.</f>
+         </fs>
+      </span>
+      <span id="s1_n93" from="180" to="183">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">VAFIN</f>
+         </fs>
+      </span>
+      <span id="s1_n95" from="184" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n96"/>
+         <rel label="dominates" target="s1_n98"/>
+      </span>
+      <span id="s1_n96" from="184" to="187">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PIS</f>
+         </fs>
+      </span>
+      <span id="s1_n98" from="188" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n99"/>
+         <rel label="dominates" target="s1_n101"/>
+      </span>
+      <span id="s1_n99" from="188" to="191">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ART</f>
+         </fs>
+      </span>
+      <span id="s1_n101" from="192" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">CNP</f>
+         </fs>
+         <rel label="dominates" target="s1_n102"/>
+         <rel label="dominates" uri="morpho.xml#s1_n107"/>
+         <rel label="dominates" target="s1_n109"/>
+         <rel label="dominates" target="s1_n112"/>
+      </span>
+      <span id="s1_n102" from="192" to="198">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n103"/>
+         <rel label="dominates" uri="morpho.xml#s1_n105"/>
+      </span>
+      <span id="s1_n103" from="192" to="196">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">APPR</f>
+         </fs>
+      </span>
+      <span id="s1_n105" from="197" to="198">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">XY</f>
+         </fs>
+      </span>
+      <span id="s1_n107" from="198" to="199">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">$,</f>
+         </fs>
+      </span>
+      <span id="s1_n109" from="200" to="202">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">AVP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n110"/>
+      </span>
+      <span id="s1_n110" from="200" to="202">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADV</f>
+         </fs>
+      </span>
+      <span id="s1_n112" from="203" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n113"/>
+         <rel label="dominates" uri="morpho.xml#s1_n115"/>
+      </span>
+      <span id="s1_n113" from="203" to="204">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">XY</f>
+         </fs>
+      </span>
+      <span id="s1_n115" from="205" to="208">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">XY</f>
+         </fs>
+      </span>
+      <span id="s1_n117" from="209" to="213">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NP-DA</f>
+         </fs>
+         <rel label="dominates" uri="morpho.xml#s1_n118"/>
+      </span>
+      <span id="s1_n118" from="209" to="213">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PRF</f>
+         </fs>
+      </span>
+      <span id="s1_n120" from="214" to="218">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">PIDAT</f>
+         </fs>
+      </span>
+      <span id="s1_n122" from="220" to="226">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJA</f>
+         </fs>
+      </span>
+      <span id="s1_n124" from="227" to="240">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">ADJA</f>
+         </fs>
+      </span>
+      <span id="s1_n126" from="241" to="249">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">NN</f>
+         </fs>
+      </span>
+      <span id="s1_n128" from="250" to="253">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">XY</f>
+         </fs>
+      </span>
+      <span id="s1_n130" from="253" to="254">
+         <fs xmlns="http://www.tei-c.org/ns/1.0" type="node">
+            <f name="const">$.</f>
+         </fs>
+      </span>
+   </spanList>
+</layer>
