diff --git a/lib/KorAP/XML/Annotation/Base/Paragraphs.pm b/lib/KorAP/XML/Annotation/Base/Paragraphs.pm
index ced09c2..235e2ff 100644
--- a/lib/KorAP/XML/Annotation/Base/Paragraphs.pm
+++ b/lib/KorAP/XML/Annotation/Base/Paragraphs.pm
@@ -13,12 +13,12 @@
       my $mtt = $stream->pos($span->p_start);
 
       $mtt->add(
-	term => '<>:base/s:p',
-	o_start => $span->o_start,
-	o_end => $span->o_end,
-	p_end => $span->p_end,
-	payload => '<b>1',
-	pti => 64
+        term => '<>:base/s:p',
+        o_start => $span->o_start,
+        o_end => $span->o_end,
+        p_end => $span->p_end,
+        payload => '<b>1',
+        pti => 64
       );
       $i++;
     }
diff --git a/lib/KorAP/XML/Annotation/Base/Sentences.pm b/lib/KorAP/XML/Annotation/Base/Sentences.pm
index 28c9434..1d66c8a 100644
--- a/lib/KorAP/XML/Annotation/Base/Sentences.pm
+++ b/lib/KorAP/XML/Annotation/Base/Sentences.pm
@@ -16,12 +16,12 @@
 
       $first = [$span->p_start, $span->o_start] unless defined $first;
       $mtt->add(
-	term => '<>:base/s:s',
-	o_start => $span->o_start,
-	o_end => $span->o_end,
-	p_end => $span->p_end,
-	payload => '<b>2',
-	pti => 64
+        term => '<>:base/s:s',
+        o_start => $span->o_start,
+        o_end => $span->o_end,
+        p_end => $span->p_end,
+        payload => '<b>2',
+        pti => 64
       );
       $last_p = $span->p_end;
       $last_o = $span->o_end;
@@ -29,15 +29,15 @@
     }
   ) or return;
 
-#  my $mt = $$self->stream->pos($first->[0]);
-#  $mt->add(
-#    term => '<>:base/s:t',
-#    o_start => $first->[1],
-#    p_end => $last_p,
-#    o_end => $last_o,
-#    payload => '<b>0',
-#    pti => 64
-#  );
+  #  my $mt = $$self->stream->pos($first->[0]);
+  #  $mt->add(
+  #    term => '<>:base/s:t',
+  #    o_start => $first->[1],
+  #    p_end => $last_p,
+  #    o_end => $last_o,
+  #    payload => '<b>0',
+  #    pti => 64
+  #  );
 
   $$self->stream->add_meta('base/sentences', '<i>' . $i);
 
diff --git a/lib/KorAP/XML/Annotation/DeReKo/Structure.pm b/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
index 80a284e..ced5476 100644
--- a/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
+++ b/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
@@ -1,9 +1,10 @@
 package KorAP::XML::Annotation::DeReKo::Structure;
 use KorAP::XML::Annotation::Base;
-use Data::Dumper;
 
 sub parse {
   my $self = shift;
+  my $as_base = shift // 0;
+  my ($sentences, $paragraphs) = (0,0);
 
   $$self->add_spandata(
     foundry => 'struct',
@@ -21,10 +22,10 @@
 
       # Get attributes
       if (ref $feature eq 'ARRAY') {
-	$attrs = $feature->[1]->{fs}->{f};
-	$attrs = ref $attrs eq 'ARRAY' ? $attrs : [$attrs];
-	$feature = $feature->[0];
-	$tui = $stream->tui($p_start);
+        $attrs = $feature->[1]->{fs}->{f};
+        $attrs = ref $attrs eq 'ARRAY' ? $attrs : [$attrs];
+        $feature = $feature->[0];
+        $tui = $stream->tui($p_start);
       };
 
       # Get term label
@@ -37,42 +38,71 @@
 
       # Add structure
       my $mt = $mtt->add(
-	term    => '<>:dereko/s:' . $name,
-	o_start => $span->o_start,
-	o_end   => $span->o_end,
-	p_start => $p_start,
-	p_end   => $p_end,
-	pti     => $span->milestone ? 65 : 64,
+        term    => '<>:dereko/s:' . $name,
+        o_start => $span->o_start,
+        o_end   => $span->o_end,
+        p_start => $p_start,
+        p_end   => $p_end,
+        pti     => $span->milestone ? 65 : 64,
       );
 
       my $level = $span->hash->{'-l'};
       if ($level || $tui) {
-	my $pl;
-	$pl .= '<b>' . ($level ? $level - 1 : 0);
-	$pl .= '<s>' . $tui if $tui;
-	$mt->payload($pl);
+        my $pl;
+        $pl .= '<b>' . ($level ? $level - 1 : 0);
+        $pl .= '<s>' . $tui if $tui;
+        $mt->payload($pl);
+      };
+
+      # Use sentence and paragraph elements for base
+      if ($as_base && ($name eq 's' || $name eq 'p')) {
+
+        # Clone Multiterm
+        my $mt2 = $mt->clone;
+        $mt2->term('<>:base/s:' . $name);
+
+        if ($name eq 's' && index($as_base, 'sentences') >= 0) {
+          $mt2->payload('<b>2');
+          $sentences++;
+        }
+        elsif ($name eq 'p' && index($as_base, 'paragraphs') >= 0) {
+          $mt2->payload('<b>1');
+          $paragraphs++;
+        };
+
+        # Add to stream
+        $mtt->add($mt2);
       };
 
       # Add attributes
       if ($attrs) {
 
-	# Set a tui if attributes are set
-	foreach (@$attrs) {
+        # Set a tui if attributes are set
+        foreach (@$attrs) {
 
-	  # Add attributes
-	  $mtt->add(
-	    term =>
-	      '@:dereko/s:' . $_->{'-name'} . ':' . $_->{'#text'},
-	    p_start => $p_start,
-	    pti     => 17,
-	    payload => '<s>' . $tui .
-	      ($span->milestone ? '' : '<i>' . $p_end)
-	  );
-	};
+          # Add attributes
+          $mtt->add(
+            term =>
+              '@:dereko/s:' . $_->{'-name'} . ':' . $_->{'#text'},
+            p_start => $p_start,
+            pti     => 17,
+            payload => '<s>' . $tui .
+              ($span->milestone ? '' : '<i>' . $p_end)
+            );
+        };
       };
     }
   ) or return;
 
+  if ($as_base) {
+    if (index($as_base, 'sentences') >= 0) {
+      $$self->stream->add_meta('base/sentences', '<i>' . $sentences);
+    };
+    if (index($as_base, 'paragraphs') >= 0) {
+      $$self->stream->add_meta('base/paragraphs', '<i>' . $paragraphs);
+    };
+  };
+
   return 1;
 };
 
diff --git a/lib/KorAP/XML/Index/MultiTerm.pm b/lib/KorAP/XML/Index/MultiTerm.pm
index 87946e2..7e089de 100644
--- a/lib/KorAP/XML/Index/MultiTerm.pm
+++ b/lib/KorAP/XML/Index/MultiTerm.pm
@@ -128,8 +128,8 @@
       '<i>' . $_[0]->[4];
   };
 
-#  my $pl = $_[0]->[1] ?
-#    $_[0]->[1] - 1 : $_[0]->[0];
+  #  my $pl = $_[0]->[1] ?
+  #    $_[0]->[1] - 1 : $_[0]->[0];
 
   if ($_[0]->[2] || $_[0]->[0]) {
 
@@ -139,10 +139,10 @@
     };
     if ($_[0]->[0]) {
       if (index($_[0]->[0], '<') == 0) {
-	$pre .= $_[0]->[0];
+        $pre .= $_[0]->[0];
       }
       else {
-	$pre .= '<?>' . $_[0]->[0];
+        $pre .= '<?>' . $_[0]->[0];
       };
     };
   };
@@ -151,6 +151,11 @@
 };
 
 
+sub clone {
+  my $self = shift;
+  bless [@$self], __PACKAGE__;
+};
+
 sub to_string_2 {
   my $self = shift;
   my $string = $self->term;
@@ -166,10 +171,10 @@
     };
     if ($self->payload) {
       if (index($self->payload, '<') == 0) {
-	$string .= $self->payload;
+        $string .= $self->payload;
       }
       else {
-	$string .= '<?>' . $self->payload;
+        $string .= '<?>' . $self->payload;
       };
     };
   };
diff --git a/lib/KorAP/XML/Index/MultiTermToken.pm b/lib/KorAP/XML/Index/MultiTermToken.pm
index 9e78df8..3556422 100644
--- a/lib/KorAP/XML/Index/MultiTermToken.pm
+++ b/lib/KorAP/XML/Index/MultiTermToken.pm
@@ -1,5 +1,6 @@
 package KorAP::XML::Index::MultiTermToken;
 use KorAP::XML::Index::MultiTerm;
+use Scalar::Util qw/blessed/;
 use List::MoreUtils 'uniq';
 use Carp qw/carp croak/;
 use strict;
@@ -16,8 +17,9 @@
 
 sub add {
   my $self = shift;
+
   my $mt;
-  unless (ref $_[0] eq 'MultiTerm') {
+  unless (blessed $_[0]) {
     if (@_ == 1) {
       $mt = KorAP::XML::Index::MultiTerm->new(term => $_[0]);
     }
diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm
index 968d3d9..1f5fad8 100644
--- a/lib/KorAP/XML/Krill.pm
+++ b/lib/KorAP/XML/Krill.pm
@@ -15,7 +15,7 @@
 use Data::Dumper;
 use File::Spec::Functions qw/catdir catfile catpath splitdir splitpath rel2abs/;
 
-our $VERSION = '0.23';
+our $VERSION = '0.24';
 
 has 'path';
 has [qw/text_sigle doc_sigle corpus_sigle/];
