diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm
index 29b1291..398c045 100644
--- a/lib/KorAP/XML/Krill.pm
+++ b/lib/KorAP/XML/Krill.pm
@@ -69,12 +69,14 @@
   else {
     # Load file
     $file = b(Mojo::File->new($data_xml)->slurp);
+
     try {
       local $SIG{__WARN__} = sub {
         $error = 1;
       };
 
       $rt = xml2hash($file, text => '#text', attr => '-')->{raw_text};
+
     } catch  {
       $self->log->warn($unable);
       $error = 1;
diff --git a/lib/KorAP/XML/Meta/I5.pm b/lib/KorAP/XML/Meta/I5.pm
index 0dd5330..34d99e5 100644
--- a/lib/KorAP/XML/Meta/I5.pm
+++ b/lib/KorAP/XML/Meta/I5.pm
@@ -63,7 +63,8 @@
     my $translator;
     if ($editor && $editor->attr('role') && $editor->attr('role') eq 'translator') {
       # Translator is only supported on the text level currently
-      $self->{translator} = _squish $editor->all_text;
+      $translator = _squish $editor->all_text;
+      $self->{translator} = $translator if $translator;
       $editor = undef;
     }
     else {
@@ -112,7 +113,7 @@
     # Corpus title not yet given
     unless ($self->{corpus_title}) {
       if ($title = $dom->at('fileDesc > titleStmt > c\.title')) {
-        $title = $title->all_text;
+        $title = _squish($title->all_text);
 
         if ($title) {
           $self->{corpus_title} = _remove_prefix($title, $self->corpus_sigle);
@@ -125,7 +126,7 @@
   elsif ($type eq 'doc') {
     unless ($self->{doc_title}) {
       if ($title = $dom->at('fileDesc > titleStmt > d\.title')) {
-        $title = $title->all_text;
+        $title = _squish($title->all_text);
 
         if ($title) {
           $self->{doc_title} = _remove_prefix($title, $self->doc_sigle);
@@ -138,7 +139,7 @@
   elsif ($type eq 'text') {
     unless ($self->{title}) {
       if ($title = $dom->at('fileDesc > titleStmt > t\.title')) {
-        $title = $title->all_text;
+        $title = _squish($title->all_text);
         if ($title) {
           $self->{title} = _remove_prefix($title, $self->text_sigle);
         };
@@ -242,14 +243,14 @@
 
     $temp->find("catRef")->each(
       sub {
-        my ($ign, @ttopic) = split('\.', $_->attr('target'));
+        my ($ign, @ttopic) = grep { $_ } map { _squish($_) } split('\.', $_->attr('target'));
         push(@topic, @ttopic);
       }
     );
     $self->{text_class} = [@topic] if @topic > 0;
 
     my $kws = $self->{keywords};
-    my @keywords = $temp->find("h\.keywords > keyTerm")->each;
+    my @keywords = $temp->find("h\.keywords > keyTerm")->map(sub {_squish($_) })->grep(sub { $_ })->each;
     push(@$kws, @keywords) if @keywords > 0;
   };
 
diff --git a/t/corpus/BBU2/Blog/83701_a_82376/data.xml b/t/corpus/BBU2/Blog/83701_a_82376/data.xml
new file mode 100644
index 0000000..630b2dc
--- /dev/null
+++ b/t/corpus/BBU2/Blog/83701_a_82376/data.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-model href="text.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+
+<raw_text docid="BBU_BLOG.83701_a_82376" xmlns="http://ids-mannheim.de/ns/KorAP">
+  <metadata file="metadata.xml" />
+  <text>.</text>
+</raw_text>
diff --git a/t/corpus/BBU2/Blog/83701_a_82376/header.xml b/t/corpus/BBU2/Blog/83701_a_82376/header.xml
new file mode 100644
index 0000000..94f5be2
--- /dev/null
+++ b/t/corpus/BBU2/Blog/83701_a_82376/header.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-model href="header.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<!DOCTYPE idsCorpus PUBLIC "-//IDS//DTD IDS-XCES 1.0//EN" "http://corpora.ids-mannheim.de/idsxces1/DTD/ids.xcesdoc.dtd">
+<idsHeader type="text" pattern="text" status="new" version="1.1" TEIform="teiHeader">
+        <fileDesc>
+          <titleStmt>
+            <textSigle>Corola-Bucurenci/Blog.83701_a_82376</textSigle>
+            <t.title>Confesiunile unui misogin</t.title>
+          </titleStmt>
+          <publicationStmt>
+            <distributor/>
+            <pubAddress/>
+            <availability region="world">QAO-NC</availability>
+            <pubDate/>
+          </publicationStmt>
+          <sourceDesc>
+            <biblStruct>
+              <monogr>
+                <h.author>Dragoș Bucurenci</h.author>
+                <editor role="translator">-</editor>
+                <imprint>
+                  <pubDate type="year">2013</pubDate>
+                  <pubDate type="month">11</pubDate>
+                  <pubDate type="day">18</pubDate>
+                  <pubPlace>URL:http://www.bucurenci.ro</pubPlace>
+                </imprint>
+              </monogr>
+            </biblStruct>
+          </sourceDesc>
+        </fileDesc>
+         <profileDesc>
+             <textDesc>
+                 <textType>-.-</textType>
+             <textClass>
+                 <catRef target="-.-" scheme="topic"/>
+             </textClass>
+         </profileDesc>
+      </idsHeader>
\ No newline at end of file
diff --git a/t/corpus/BBU2/Blog/header.xml b/t/corpus/BBU2/Blog/header.xml
new file mode 100644
index 0000000..a6afb53
--- /dev/null
+++ b/t/corpus/BBU2/Blog/header.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-model href="header.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<!DOCTYPE idsCorpus PUBLIC "-//IDS//DTD IDS-XCES 1.0//EN" "http://corpora.ids-mannheim.de/idsxces1/DTD/ids.xcesdoc.dtd">
+<idsHeader type="document" pattern="text" status="new" version="1.1" TEIform="teiHeader">
+      <fileDesc>
+        <titleStmt>
+          <dokumentSigle>Corola-Bucurenci/Blog</dokumentSigle>
+          <d.title>-</d.title>
+        </titleStmt>
+        <publicationStmt>
+          <distributor/>
+          <pubAddress/>
+          <availability region="world">[...]</availability>
+          <pubDate/>
+        </publicationStmt>
+        <sourceDesc>
+          <biblStruct>
+            <monogr>
+              <h.title type="main"/>
+              <edition>
+                <further/>
+                <kind/>
+                <appearance/>
+              </edition>
+              <imprint/>
+            </monogr>
+          </biblStruct>
+        </sourceDesc>
+      </fileDesc>
+    </idsHeader>
\ No newline at end of file
diff --git a/t/corpus/BBU2/header.xml b/t/corpus/BBU2/header.xml
new file mode 100644
index 0000000..7901a2e
--- /dev/null
+++ b/t/corpus/BBU2/header.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-model href="header.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<!DOCTYPE idsCorpus PUBLIC "-//IDS//DTD IDS-XCES 1.0//EN" "http://corpora.ids-mannheim.de/idsxces1/DTD/ids.xcesdoc.dtd">
+<idsHeader type="corpus" status="new" version="1.1" TEIform="teiHeader">
+    <fileDesc>
+      <titleStmt>
+        <korpusSigle>Corola-Bucurenci</korpusSigle>
+        <c.title>Corola-Bucurenci</c.title>
+      </titleStmt>
+    </fileDesc>
+    <profileDesc>
+      <langUsage>
+        <language id="ro" usage="100">Romanian</language>
+      </langUsage>
+      <!-- 
+           <textDesc>
+           This element is suppressed in p5!
+           <channel mode="w">written</channel>
+           </textDesc>
+      -->
+    </profileDesc>
+  </idsHeader>
\ No newline at end of file
diff --git a/t/real/drukola.t b/t/real/drukola.t
index 4656f18..1eb4587 100644
--- a/t/real/drukola.t
+++ b/t/real/drukola.t
@@ -106,5 +106,23 @@
 like($token, qr!drukola/m:gender:feminine!, 'data');
 like($token, qr!drukola/p:NOUN!, 'data');
 
+
+# New
+# BBU2/BLOG/83709_a_82384
+$path = catdir(dirname(__FILE__), '../corpus/BBU2/Blog/83701_a_82376');
+
+
+
+ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
+ok($doc->parse, 'Parse document');
+
+$meta = $doc->meta;
+
+ok(!exists $meta->{doc_title}, 'No doc title');
+ok(!exists $meta->{translator}, 'No translator');
+
+ok(!exists $meta->{text_class}, 'No translator');
+
+
 done_testing;
 __END__
