diff --git a/lib/KorAP/XML/Annotation/CoreNLP/Sentences.pm b/lib/KorAP/XML/Annotation/CoreNLP/Sentences.pm
index 31ef18c..708cd91 100644
--- a/lib/KorAP/XML/Annotation/CoreNLP/Sentences.pm
+++ b/lib/KorAP/XML/Annotation/CoreNLP/Sentences.pm
@@ -24,7 +24,7 @@
 
 
 sub layer_info {
-    ['corenlp/s=spans'];
+  ['corenlp/s=spans'];
 };
 
 1;
diff --git a/lib/KorAP/XML/Annotation/DeReKo/Structure.pm b/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
index 77ac223..2143a1d 100644
--- a/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
+++ b/lib/KorAP/XML/Annotation/DeReKo/Structure.pm
@@ -104,7 +104,9 @@
         foreach (@$attrs) {
 
           # Add attributes
-          $mt = $mtt->add_by_term('@:dereko/s:' . $_->{'-name'} . ($_->{'#text'} ? ':' . $_->{'#text'} : ''));
+          $mt = $mtt->add_by_term(
+            '@:dereko/s:' . $_->{'-name'} .
+              ($_->{'#text'} ? ':' . $_->{'#text'} : ''));
           $mt->set_p_start($p_start);
           $mt->set_pti(17);
           $mt->set_payload($pl);
@@ -114,11 +116,12 @@
   ) or return;
 
   if ($as_base) {
+    my $s = $$self->stream;
     if (index($as_base, 'sentences') >= 0) {
-      $$self->stream->add_meta('base/sentences', '<i>' . $sentences);
+      $s->add_meta('base/sentences', '<i>' . $sentences);
     };
     if (index($as_base, 'paragraphs') >= 0) {
-      $$self->stream->add_meta('base/paragraphs', '<i>' . $paragraphs);
+      $s->add_meta('base/paragraphs', '<i>' . $paragraphs);
     };
   };
 
diff --git a/lib/KorAP/XML/Annotation/MDParser/Dependency.pm b/lib/KorAP/XML/Annotation/MDParser/Dependency.pm
index bb8b1ca..8b8f101 100644
--- a/lib/KorAP/XML/Annotation/MDParser/Dependency.pm
+++ b/lib/KorAP/XML/Annotation/MDParser/Dependency.pm
@@ -1,7 +1,5 @@
 package KorAP::XML::Annotation::MDParser::Dependency;
 use KorAP::XML::Annotation::Base;
-use strict;
-use warnings;
 
 sub parse {
   my $self = shift;
diff --git a/lib/KorAP/XML/Annotation/MarMoT/Morpho.pm b/lib/KorAP/XML/Annotation/MarMoT/Morpho.pm
index 026533f..eabebbb 100644
--- a/lib/KorAP/XML/Annotation/MarMoT/Morpho.pm
+++ b/lib/KorAP/XML/Annotation/MarMoT/Morpho.pm
@@ -1,6 +1,5 @@
 package KorAP::XML::Annotation::MarMoT::Morpho;
 use KorAP::XML::Annotation::Base;
-use Data::Dumper;
 
 sub parse {
   my $self = shift;
diff --git a/lib/KorAP/XML/Annotation/Mate/Dependency.pm b/lib/KorAP/XML/Annotation/Mate/Dependency.pm
index 97d69aa..3358121 100644
--- a/lib/KorAP/XML/Annotation/Mate/Dependency.pm
+++ b/lib/KorAP/XML/Annotation/Mate/Dependency.pm
@@ -1,8 +1,6 @@
 package KorAP::XML::Annotation::Mate::Dependency;
 use KorAP::XML::Annotation::Base;
-use strict;
-use warnings;
-our $NODE_LABEL = '&&&';
+# our $NODE_LABEL = '&&&';
 
 sub parse {
   my $self = shift;
diff --git a/lib/KorAP/XML/Annotation/OpenNLP/Sentences.pm b/lib/KorAP/XML/Annotation/OpenNLP/Sentences.pm
index 47aca86..9e3c58d 100644
--- a/lib/KorAP/XML/Annotation/OpenNLP/Sentences.pm
+++ b/lib/KorAP/XML/Annotation/OpenNLP/Sentences.pm
@@ -23,7 +23,7 @@
 };
 
 sub layer_info {
-    ['opennlp/s=spans'];
+  ['opennlp/s=spans'];
 };
 
 1;
diff --git a/lib/KorAP/XML/Annotation/RWK/Morpho.pm b/lib/KorAP/XML/Annotation/RWK/Morpho.pm
index 42f169b..d8ac162 100644
--- a/lib/KorAP/XML/Annotation/RWK/Morpho.pm
+++ b/lib/KorAP/XML/Annotation/RWK/Morpho.pm
@@ -39,7 +39,8 @@
         }
 
         # ana tag
-        elsif (($found = $f->{'#text'}) && $name =~ m/^(?:bc|(?:sub)?type|usage|person|pos|case|number|gender|tense|mood|degree)$/o) {
+        elsif (($found = $f->{'#text'}) &&
+                 $name =~ m/^(?:bc|(?:sub)?type|usage|person|pos|case|number|gender|tense|mood|degree)$/o) {
           $mtt->add_by_term('rwk/m:' . $name . ':' . $found);
         };
       };
diff --git a/lib/KorAP/XML/Annotation/RWK/Structure.pm b/lib/KorAP/XML/Annotation/RWK/Structure.pm
index 1173d13..b34cab5 100644
--- a/lib/KorAP/XML/Annotation/RWK/Structure.pm
+++ b/lib/KorAP/XML/Annotation/RWK/Structure.pm
@@ -3,13 +3,8 @@
 
 sub parse {
   my $self = shift;
+  my (@sentences, @paragraphs);
 
-  my %milestones = (
-    s => [],
-    p => [],
-  );
-
-  my ($p_start, $o_start) = (0,0);
   my ($last_p, $last_o) = (0,0);
 
   $$self->add_spandata(
@@ -34,10 +29,10 @@
 
       # Check only for anchors
       if ($name eq 's-milestone') {
-        push @{$milestones{s}}, [ $span->get_p_start, $span->get_o_start ];
+        push @sentences, [ $span->get_p_start, $span->get_o_start ];
       }
       elsif ($name eq 'p-milestone') {
-        push @{$milestones{p}}, [ $span->get_p_start, $span->get_o_start ];
+        push @paragraphs, [ $span->get_p_start, $span->get_o_start ];
       }
       else {
         $last_p = $span->get_p_start;
@@ -49,19 +44,24 @@
   my ($sentences, $paragraphs) = (0, 0);
 
   # Add final position
-  push @{$milestones{s}}, [$last_p, $last_o];
-  push @{$milestones{p}}, [$last_p, $last_o];
+  push @sentences, [$last_p, $last_o];
+  push @paragraphs, [$last_p, $last_o];
 
   my $stream = $$self->stream;
-  foreach my $type ('s', 'p') {
+  my %hash = (
+    s => \@sentences,
+    p => \@paragraphs
+  );
+  while (my ($type, $list) = each %hash) {
+    my ($p_start, $o_start) = (0,0);
 
     # Sort and unique milestones
-    @{$milestones{$type}} = sort {
+    @$list = sort {
       $a->[0] <=> $b->[0]
-    } @{$milestones{$type}};
+    } @$list;
 
     # Iterate overs milestones
-    foreach (@{$milestones{$type}}) {
+    foreach (@$list) {
 
       if (($_->[0] == $p_start) || ($_->[1] == $o_start)) {
         next;
@@ -77,7 +77,7 @@
         };
 
         $mtt = $stream->pos($p_start);
-      }
+      };
 
       # Add the base sentence
       my $mt = $mtt->add_by_term('<>:base/s:' . $type);
@@ -107,6 +107,7 @@
     };
   };
 
+  # Set meta information about sentence count
   return 1;
 };
 
diff --git a/lib/KorAP/XML/Annotation/Sgbr/Lemma.pm b/lib/KorAP/XML/Annotation/Sgbr/Lemma.pm
index aa0248a..1f93b46 100644
--- a/lib/KorAP/XML/Annotation/Sgbr/Lemma.pm
+++ b/lib/KorAP/XML/Annotation/Sgbr/Lemma.pm
@@ -28,9 +28,6 @@
         if (($f->{-name} eq 'lemma')
               && ($found = $f->{'#text'})) {
 
-          # $found = b($found)->decode('latin-1')->encode->to_string;
-          # warn $found;
-
           unless ($first++) {
             $mtt->add_by_term('sgbr/l:' . $found);
           }
diff --git a/lib/KorAP/XML/Annotation/XIP/Constituency.pm b/lib/KorAP/XML/Annotation/XIP/Constituency.pm
index 5ee1259..6dec877 100644
--- a/lib/KorAP/XML/Annotation/XIP/Constituency.pm
+++ b/lib/KorAP/XML/Annotation/XIP/Constituency.pm
@@ -55,10 +55,6 @@
 
         # It's definately not a root
         $xip_const_noroot->insert($target);
-
-        # if ($target =~ /^s2_n(?:36|58|59|60|40)$/) {
-        #   warn 'Probably not a root ' . $target . ' but ' . $span->id;
-        # };
       };
     }
   ) or return;
@@ -115,14 +111,9 @@
         $target = $1;
       };
 
-      # if ($span->id =~ /^s2_n(?:36|58|59|60|40)$/ && $target =~ /^s2_n(?:36|58|59|60|40)$/) {
-      # warn 'B: ' . $span->id . ' points to ' . $target;
-      # };
-
       next unless $target;
 
       my $subspan = delete $xip_const{$target};
-      # warn "A-Forgot about $target: " . ($subspan ? 'yes' : 'no');
 
       next unless $subspan;
 
diff --git a/lib/KorAP/XML/Annotation/XIP/Dependency.pm b/lib/KorAP/XML/Annotation/XIP/Dependency.pm
index 2323e00..5ed5912 100644
--- a/lib/KorAP/XML/Annotation/XIP/Dependency.pm
+++ b/lib/KorAP/XML/Annotation/XIP/Dependency.pm
@@ -47,7 +47,6 @@
 
         my $rel_token = $tokens->token($from, $to) or next;
 
-        # die $token->pos . ' -' . $label . '-> ' . $rel_token->pos;
         $mt = $mtt->add_by_term('>:xip/d:' . $label);
         $mt->set_payload('<i>' . $rel_token->get_pos);
       );
@@ -56,7 +55,6 @@
         ->add_by_term('<:xip/d:' . $label);
       $mt->set_payload('<i>' . $token->get_pos);
 
-    #	print $label,"\n";
     }
   ) or return;
 
