diff --git a/lib/KorAP/Index/CoreNLP/Constituency.pm b/lib/KorAP/Index/CoreNLP/Constituency.pm
index ee37abc..af93c86 100644
--- a/lib/KorAP/Index/CoreNLP/Constituency.pm
+++ b/lib/KorAP/Index/CoreNLP/Constituency.pm
@@ -18,18 +18,24 @@
       my ($stream, $span) = @_;
 
       $corenlp_const{$span->id} = $span;
+
+      # Maybe root
       $corenlp_const_root->insert($span->id);
 
       my $rel = $span->hash->{rel} or return;
+
+      # Make rel an array in case it's not
       $rel = [$rel] unless ref $rel eq 'ARRAY';
 
       foreach (@$rel) {
 	if ($_->{-label} eq 'dominates') {
 	  if ($_->{-target}) {
+#	    warn $_->{-target} . ' is no root';
 	    $corenlp_const_noroot->insert($_->{-target});
 	  }
 	  elsif (my $uri = $_->{-uri}) {
 	    $uri =~ s/^morpho\.xml#//;
+#	    warn $uri . ' is no root';
 	    $corenlp_const_noroot->insert($uri);
 	  };
 	};
@@ -40,6 +46,7 @@
   my $stream = $$self->stream;
 
   my $add_const;
+
   $add_const = sub {
     my $span = shift;
     my $level = shift;
@@ -75,9 +82,16 @@
     };
   };
 
+  # Next run
   my $diff = $corenlp_const_root->difference($corenlp_const_noroot);
+
+  # Iterate over all roots
   foreach ($diff->members) {
+
+    # Get root span based on root id
     my $obj = delete $corenlp_const{$_} or next;
+
+    # Start on level 0
     $add_const->($obj, 0);
   };
 
diff --git a/lib/KorAP/Index/CoreNLP/Morpho.pm b/lib/KorAP/Index/CoreNLP/Morpho.pm
index 2d3491d..76cee0b 100644
--- a/lib/KorAP/Index/CoreNLP/Morpho.pm
+++ b/lib/KorAP/Index/CoreNLP/Morpho.pm
@@ -12,9 +12,7 @@
       my $mtt = $stream->pos($token->pos);
 
       my $content = $token->hash->{fs}->{f} or return;
-
       $content = $content->{fs}->{f};
-      my $found;
 
       # syntax
       if (($content->{-name} eq 'pos') && ($content->{'#text'})) {
diff --git a/lib/KorAP/Tokenizer/Range.pm b/lib/KorAP/Tokenizer/Range.pm
index 5fa2a38..a514230 100644
--- a/lib/KorAP/Tokenizer/Range.pm
+++ b/lib/KorAP/Tokenizer/Range.pm
@@ -9,16 +9,19 @@
   bless \$range, $class;
 };
 
+
+# Set integer range from x to y with z
 sub set {
-  my $self = shift;
-  $$self->set_range(@_);
+  ${shift()}->set_range(@_);
 };
 
+# Set gap in range from x to y with !z-1:z
 sub gap {
-  my $self = shift;
-  $$self->set_range($_[0], $_[1], '!' . ($_[2] - 1) . ':' . $_[2]);
+  ${shift()}->set_range($_[0], $_[1],
+  '!' . ($_[2] - 1) . ':' . $_[2]);
 };
 
+# Lookup range - ignore gaps!
 sub lookup {
   my $x = ${$_[0]}->lookup( $_[1] ) or return;
   return if index($x, '!') == 0;
@@ -28,14 +31,24 @@
 sub before {
   my $self = shift;
   my $offset = shift;
+
   my $found = $$self->lookup( $offset );
+
   unless (defined $found) {
     warn 'There is no value for ', $offset;
     return;
   };
 
+  # Hit a gap,
+  # return preceding match
   if ($found =~ /!(\d+):(\d+)$/) {
     return $1 >= 0 ? $1 : 0;
+  }
+  else {
+    # Didn't hit a gap
+    # this however may be inaccurate
+    # but lifts recall
+    return $found - 1;
   };
 };
 
@@ -51,6 +64,9 @@
 
   if ($found =~ /^!(\d+):(\d+)$/) {
     return $2;
+  }
+  else {
+    $found + 1;
   };
 };
 
diff --git a/lib/KorAP/Tokenizer/Units.pm b/lib/KorAP/Tokenizer/Units.pm
index a073fef..a10e374 100644
--- a/lib/KorAP/Tokenizer/Units.pm
+++ b/lib/KorAP/Tokenizer/Units.pm
@@ -24,6 +24,7 @@
   $span->o_end($to);
 
   my $start = $self->match->startswith($span->o_start);
+
   unless (defined $start) {
     $start = $self->range->after($span->o_start) or return;
   };
@@ -33,7 +34,8 @@
   my $end = $self->match->endswith($span->o_end);
 
   unless (defined $end) {
-    $end = $self->range->before($span->o_end) or return;
+    $end = $self->range->before($span->o_end);
+    return unless $end;
   };
 
   # $span->p_end($end);
