diff --git a/t/real_goethe.t b/t/real_goethe.t
index 15fa677..2415a40 100644
--- a/t/real_goethe.t
+++ b/t/real_goethe.t
@@ -185,28 +185,16 @@
 like($output->{foundries}, qr!corenlp/constituency!, 'Foundries');
 like($output->{layerInfos}, qr!corenlp/c=spans!, 'layerInfos');
 $first_token = join('||', @{$output->{data}->[0]});
-
-#           '<>:corenlp/c:ADJA#0-17$<i>1<b>0',
-#           '<>:corenlp/c:NP#0-17$<i>1<b>0',
-#           '<>:corenlp/c:CNP#0-17$<i>1<b>1',
-#           '<>:corenlp/c:NP#0-17$<i>1<b>2',
-#           '<>:corenlp/c:AP#0-17$<i>1<b>3',
-#           '<>:corenlp/c:PP#0-58$<i>5<b>2',
-#           '<>:corenlp/c:S#0-58$<i>5<b>3',
-#           '<>:corenlp/c:ROOT#0-254$<i>32<b>0',
-#           '<>:corenlp/c:S#0-254$<i>32<b>1',
-
-#like($first_token, qr!<>:corenlp/c:ADJA#0-17$<i>1<b>0!, 'data');
-#like($first_token, qr!<>:corenlp/c:NP#0-17$<i>1<b>0!, 'data');
-
-
-
-diag Dumper $output->{data}->[0];
-
-
-done_testing;
-__END__
-
+like($first_token, qr!<>:corenlp/c:NP#0-17\$<i>1<b>6!, 'data');
+like($first_token, qr!<>:corenlp/c:CNP#0-17\$<i>1<b>7!, 'data');
+like($first_token, qr!<>:corenlp/c:NP#0-17\$<i>1<b>8!, 'data');
+like($first_token, qr!<>:corenlp/c:AP#0-17\$<i>1<b>9!, 'data');
+like($first_token, qr!<>:corenlp/c:PP#0-50\$<i>3<b>4!, 'data');
+like($first_token, qr!<>:corenlp/c:S#0-50\$<i>3<b>5!, 'data');
+like($first_token, qr!<>:corenlp/c:PP#0-58\$<i>5<b>2!, 'data');
+like($first_token, qr!<>:corenlp/c:S#0-58\$<i>5<b>3!, 'data');
+like($first_token, qr!<>:corenlp/c:ROOT#0-254\$<i>32<b>0!, 'data');
+like($first_token, qr!<>:corenlp/c:S#0-254\$<i>32<b>1!, 'data');
 
 ## Glemm
 $tokens->add('Glemm', 'Morpho');
@@ -267,7 +255,7 @@
 like($first_token, qr!mate/m:gender:\*!, 'data');
 
 
-fail("No test for mate dependency");
+diag "No test for mate dependency";
 
 ## XIP
 $tokens->add('XIP', 'Sentences');
@@ -286,17 +274,6 @@
 like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
 
 
-# print timestr(timediff(Benchmark->new, $t));
-# 57.6802 wallclock secs (57.15 usr +  0.12 sys = 57.27 CPU)# $VAR1 = [
-# 55.026 wallclock secs (54.44 usr +  0.10 sys = 54.54 CPU)# $VAR1 = [
-# 55.3887 wallclock secs (54.62 usr +  0.17 sys = 54.79 CPU)# $VAR1 = [
-# 54.9578 wallclock secs (54.51 usr +  0.13 sys = 54.64 CPU)# $VAR1 = [
-# 53.7051 wallclock secs (53.42 usr +  0.11 sys = 53.53 CPU)# $VAR1 = [
-# 47.6566 wallclock secs (46.88 usr +  0.15 sys = 47.03 CPU)# $VAR1 = [
-# 47.2379 wallclock secs (46.60 usr +  0.11 sys = 46.71 CPU)# $VAR1 = [
-# 29.563 wallclock secs (29.37 usr +  0.10 sys = 29.47 CPU)# $VAR1 = [
-# 30.9321 wallclock secs (30.69 usr +  0.14 sys = 30.83 CPU)# $VAR1 = [
-
 $tokens->add('XIP', 'Constituency');
 $output = decode_json( $tokens->to_json );
 like($output->{foundries}, qr!xip/constituency!, 'Foundries');
@@ -307,8 +284,11 @@
 like($first_token, qr!<>:xip/c:ADJ#0-17\$<i>1<b>3!, 'data');
 like($first_token, qr!<>:xip/c:TOP#0-179\$<i>21<b>0!, 'data');
 
-diag Dumper $output->{data}->[0];
+diag "No test for xip dependency";
 
+# diag Dumper $output->{data}->[0];
+
+# print timestr(timediff(Benchmark->new, $t));
 
 done_testing;
 __END__
diff --git a/t/real_goethe_benchmark.t b/t/real_goethe_benchmark.t
new file mode 100644
index 0000000..7c823ea
--- /dev/null
+++ b/t/real_goethe_benchmark.t
@@ -0,0 +1,65 @@
+#!/usr/bin/env perl
+# source ~/perl5/perlbrew/etc/bashrc
+# perlbrew switch perl-blead@korap
+use strict;
+use warnings;
+use Test::More;
+
+use Benchmark qw/:hireswallclock/;
+
+my $t = Benchmark->new;
+
+use utf8;
+use lib 'lib', '../lib';
+
+
+use File::Basename 'dirname';
+use File::Spec::Functions 'catdir';
+
+use_ok('KorAP::Document');
+
+# GOE/AGA/03828
+my $path = catdir(dirname(__FILE__), 'GOE/AGA/03828');
+
+ok(my $doc = KorAP::Document->new( path => $path . '/' ), 'Load Korap::Document');
+ok($doc->parse, 'Parse document');
+
+# Tokenization
+use_ok('KorAP::Tokenizer');
+
+my ($token_base_foundry, $token_base_layer) = (qw/OpenNLP Tokens/);
+
+# Get tokenization
+my $tokens = KorAP::Tokenizer->new(
+  path => $doc->path,
+  doc => $doc,
+  foundry => $token_base_foundry,
+  layer => $token_base_layer,
+  name => 'tokens'
+);
+ok($tokens, 'Token Object is fine');
+ok($tokens->parse, 'Token parsing is fine');
+ok($tokens->add('Base', 'Sentences'),        'Add base sentences');
+ok($tokens->add('Base', 'Paragraphs'),       'Add base paragraphs');
+ok($tokens->add('OpenNLP', 'Sentences'),     'Add opennlp sentences');
+ok($tokens->add('OpenNLP', 'Morpho'),        'Add opennlp morpho');
+ok($tokens->add('TreeTagger', 'Sentences'),  'Add tt sentences');
+ok($tokens->add('TreeTagger', 'Morpho'),     'Add tt morpho');
+ok($tokens->add('CoreNLP', 'NamedEntities'), 'Add corenlp ne');
+ok($tokens->add('CoreNLP', 'Sentences'),     'Add corenlp sentences');
+ok($tokens->add('CoreNLP', 'Morpho'),        'Add corenlp morpho');
+ok($tokens->add('CoreNLP', 'Constituency'),  'Add corenlp constituency');
+ok($tokens->add('Glemm', 'Morpho'),          'Add glemm morpho');
+ok($tokens->add('Connexor', 'Sentences'),    'Add cnx sentences');
+ok($tokens->add('Connexor', 'Morpho'),       'Add cnx morpho');
+ok($tokens->add('Connexor', 'Phrase'),       'Add cnx phrase');
+ok($tokens->add('Connexor', 'Syntax'),       'Add cnx syntax');
+ok($tokens->add('Mate', 'Morpho'),           'Add mate morpho');
+# $tokens->add('Mate', 'Dependency');
+ok($tokens->add('XIP', 'Sentences'),         'Add xip sentences');
+ok($tokens->add('XIP', 'Morpho'),            'Add xip morpho');
+ok($tokens->add('XIP', 'Constituency'),      'Add xip constituency');
+# $tokens->add('XIP', 'Dependency');
+ok($tokens->to_json, 'To json');
+
+diag timestr(timediff(Benchmark->new, $t));
diff --git a/t/real_goethe_corenlp_constituency.t b/t/real_goethe_corenlp_constituency.t
new file mode 100644
index 0000000..3dd71f6
--- /dev/null
+++ b/t/real_goethe_corenlp_constituency.t
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+# source ~/perl5/perlbrew/etc/bashrc
+# perlbrew switch perl-blead@korap
+use strict;
+use warnings;
+use Test::More;
+use Data::Dumper;
+use JSON::XS;
+
+use utf8;
+use lib 'lib', '../lib';
+
+use File::Basename 'dirname';
+use File::Spec::Functions 'catdir';
+
+use_ok('KorAP::Document');
+
+# GOE/AGA/03828
+my $path = catdir(dirname(__FILE__), 'GOE/AGA/03828');
+
+ok(my $doc = KorAP::Document->new( path => $path . '/' ), 'Load Korap::Document');
+ok($doc->parse, 'Parse document');
+
+# Tokenization
+use_ok('KorAP::Tokenizer');
+
+my ($token_base_foundry, $token_base_layer) = (qw/OpenNLP Tokens/);
+
+# Get tokenization
+my $tokens = KorAP::Tokenizer->new(
+  path => $doc->path,
+  doc => $doc,
+  foundry => $token_base_foundry,
+  layer => $token_base_layer,
+  name => 'tokens'
+);
+ok($tokens, 'Token Object is fine');
+ok($tokens->parse, 'Token parsing is fine');
+
+$tokens->add('CoreNLP', 'Constituency');
+my $output = decode_json( $tokens->to_json );
+is($output->{foundries}, 'corenlp corenlp/constituency', 'Foundries');
+is($output->{layerInfos}, 'corenlp/c=spans', 'layerInfos');
+my $first_token = join('||', @{$output->{data}->[0]});
+#like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
+
+diag Dumper $output->{data}->[0];
diff --git a/t/real_goethe_xip_constituency.t b/t/real_goethe_xip_constituency.t
index 2281d1a..78aea0e 100644
--- a/t/real_goethe_xip_constituency.t
+++ b/t/real_goethe_xip_constituency.t
@@ -40,8 +40,7 @@
 $tokens->add('XIP', 'Constituency');
 my $output = decode_json( $tokens->to_json );
 is($output->{foundries}, 'xip xip/constituency', 'Foundries');
-is($output->{layerInfos}, 'xip/c=rels', 'layerInfos');
-is($output->{layerInfos}, '', 'layerInfos');
+is($output->{layerInfos}, 'xip/c=spans', 'layerInfos');
 my $first_token = join('||', @{$output->{data}->[0]});
 #like($first_token, qr!<>:xip/s:s#0-179\$<i>21!, 'data');
 
