diff --git a/lib/KorAP/XML/Annotation/Mate/Dependency.pm b/lib/KorAP/XML/Annotation/Mate/Dependency.pm
index 7a85859..97d69aa 100644
--- a/lib/KorAP/XML/Annotation/Mate/Dependency.pm
+++ b/lib/KorAP/XML/Annotation/Mate/Dependency.pm
@@ -27,6 +27,7 @@
       # Get relation information
       my $rel = $content->{rel};
       $rel = [$rel] unless ref $rel eq 'ARRAY';
+      my $mt;
 
       # Iterate over relations
       foreach (@$rel) {
@@ -48,23 +49,17 @@
           # Target is at the same position!
           my $pos = $source->get_pos;
 
-          my %rel = (
-            pti => 32, # term-to-term relation
-            payload =>
-              '<i>' . $pos # . # right part token position
+          # Add relations
+          $mt = $mtt->add_by_term('>:mate/d:' . $label);
+          $mt->set_pti(32); # term-to-term relation
+          $mt->set_payload(
+            '<i>' . $pos # . # right part token position
               #    '<s>0' . # $target->tui . # left part tui
               #      '<s>0'  # . $target->tui # right part tui
-            );
-
-          # Add relations
-          $mtt->add(
-            term => '>:mate/d:' . $label,
-            %rel
           );
-          $mtt->add(
-            term => '<:mate/d:' . $label,
-            %rel
-          );
+          my $clone = $mt->clone;
+          $clone->set_term('<:mate/d:' . $label);
+          $mtt->add_blessed($clone);
         }
 
         # Not unary
@@ -91,24 +86,22 @@
             #        $target, 'mate/d:' . $NODE_LABEL
             #      );
 
-            $mtt->add(
-              term => '>:mate/d:' . $label,
-              pti => 32, # term-to-term relation
-              payload =>
-                '<i>' . $target->get_pos # . # right part token position
+            $mt = $mtt->add_by_term('>:mate/d:' . $label);
+            $mt->set_pti(32); # term-to-term relation
+            $mt->set_payload(
+              '<i>' . $target->get_pos # . # right part token position
                 #      '<s>0' . # $source_term->tui . # left part tui
                 #        '<s>0' # . $target_term->tui # right part tui
-              );
+            );
 
             my $target_mtt = $stream->pos($target->get_pos);
-            $target_mtt->add(
-              term => '<:mate/d:' . $label,
-              pti => 32, # term-to-term relation
-              payload =>
-                '<i>' . $source->get_pos # . # left part token position
+            $mt = $target_mtt->add_by_term('<:mate/d:' . $label);
+            $mt->set_pti(32); # term-to-term relation
+            $mt->set_payload(
+              '<i>' . $source->get_pos # . # left part token position
                 #      '<s>0' . # $source_term->tui . # left part tui
                 #        '<s>0' # . $target_term->tui # right part tui
-              );
+            );
           }
 
           # Relation is possibly term-to-element with a found target!
@@ -119,11 +112,10 @@
             #        $target, 'mate/d:' . $NODE_LABEL
             #      );
 
-            $mtt->add(
-              term => '>:mate/d:' . $label,
-              pti => 33, # term-to-element relation
-              payload =>
-                '<i>' . $target->o_start . # end position
+            $mt = $mtt->add_by_term('>:mate/d:' . $label);
+            $mt->set_pti(33); # term-to-element relation
+            $mt->set_payload(
+              '<i>' . $target->o_start . # end position
                 '<i>' . $target->o_end . # end position
                 '<i>' . $target->p_start . # right part start position
                 '<i>' . $target->p_end # . # right part end position
@@ -132,17 +124,15 @@
               );
 
             my $target_mtt = $stream->pos($target->p_start);
-            $target_mtt->add(
-              term => '<:mate/d:' . $label,
-              pti => 34, # element-to-term relation
-              payload =>
-                '<i>' . $target->o_start . # end position
+            $mt = $target_mtt->add_by_term('<:mate/d:' . $label);
+            $mt->set_pti(34); # element-to-term relation
+            $mt->set_payload(
+              '<i>' . $target->o_start . # end position
                 '<i>' . $target->o_end . # end position
                 '<i>' . $target->p_end . # right part end position
                 '<i>' . $source->get_pos # . # left part token position
                 #      '<s>0' . # $source_term->tui . # left part tui
                 #        '<s>0' # . $target_span->tui # right part tui
-
               );
           }
           else {
diff --git a/lib/KorAP/XML/Annotation/Mate/Morpho.pm b/lib/KorAP/XML/Annotation/Mate/Morpho.pm
index 0d1744b..54d07e5 100644
--- a/lib/KorAP/XML/Annotation/Mate/Morpho.pm
+++ b/lib/KorAP/XML/Annotation/Mate/Morpho.pm
@@ -22,7 +22,7 @@
         #pos
         if (($f->{-name} eq 'pos') &&
               ($found = $f->{'#text'})) {
-          $mtt->add(term => 'mate/p:' . $found);
+          $mtt->add_by_term('mate/p:' . $found);
         }
 
         # lemma
@@ -30,7 +30,7 @@
                  && ($found = $f->{'#text'})
                  && $found ne '--') {
           # b($found)->decode('latin-1')->encode->to_string
-          $mtt->add(term => 'mate/l:' . $found);
+          $mtt->add_by_term('mate/l:' . $found);
         }
 
         # MSD
@@ -40,7 +40,7 @@
           foreach (split '\|', $found) {
             my ($x, $y) = split "=", $_;
             # case, tense, number, mood, person, degree, gender
-            $mtt->add(term => 'mate/m:' . $x . ($y ? ':' . $y : ''));
+            $mtt->add_by_term('mate/m:' . $x . ($y ? ':' . $y : ''));
           };
         };
       };
diff --git a/lib/KorAP/XML/Annotation/Mate/MorphoAttr.pm b/lib/KorAP/XML/Annotation/Mate/MorphoAttr.pm
index 67818f6..fd0b9c4 100644
--- a/lib/KorAP/XML/Annotation/Mate/MorphoAttr.pm
+++ b/lib/KorAP/XML/Annotation/Mate/MorphoAttr.pm
@@ -19,6 +19,8 @@
 
       my $capital = 0;
 
+      my $mt;
+
       foreach my $f (@{$content->{fs}->{f}}) {
 
         #pos
@@ -30,7 +32,7 @@
         elsif (($f->{-name} eq 'lemma')
                  && ($found = $f->{'#text'})
                  && $found ne '--') {
-          $mtt->add(term => 'mate/l:' . $found);
+          $mtt->add_by_term('mate/l:' . $found);
         }
 
         # MSD
@@ -42,28 +44,22 @@
         };
       };
 
-      my %term = (
-        term => 'mate/p:' . $pos
-      );
+      $mt = $mtt->add_by_term('mate/p:' . $pos);
 
       # There are attributes needed
       if ($tui) {
-        $term{pti} = 128;
-        $term{payload} = '<s>' . $tui
+        $mt->set_pti(128);
+        $mt->set_payload('<s>' . $tui);
       };
 
-      $mtt->add(%term);
-
       # MSD
       if ($msd) {
         foreach (split '\|', $msd) {
           my ($x, $y) = split "=", $_;
           # case, tense, number, mood, person, degree, gender
-          $mtt->add(
-            term => '@:' . $x . ($y ? '=' . $y : ''),
-            pti => 16,
-            payload => '<s>' . $tui
-          );
+          $mt = $mtt->add_by_term('@:' . $x . ($y ? '=' . $y : ''));
+          $mt->set_pti(16);
+          $mt->set_payload('<s>' . $tui);
         };
       };
     }) or return;
