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;
