diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm
index 8c546d0..4453274 100644
--- a/lib/KorAP/XML/Krill.pm
+++ b/lib/KorAP/XML/Krill.pm
@@ -255,7 +255,7 @@
   if ($_[0]) {
     return $self->{topics} = [ @_ ];
   };
-  return ($self->{topics} // []);
+  return ($self->{topics} //= []);
 };
 
 sub text_class_string {
@@ -267,7 +267,7 @@
   if ($_[0]) {
     return $self->{keywords} = [ @_ ];
   };
-  return ($self->{keywords} // []);
+  return ($self->{keywords} //= []);
 };
 
 sub keywords_string {
@@ -312,17 +312,32 @@
     # Author
     try {
       my $author = $stmt->at('author')->attr('ref');
+
       $author = $self->{ref_author}->{$author};
+
       if ($author) {
+
+	my $array = $self->keywords;
 	$self->author($author->{id});
-	$self->store('sgbrAuthorAgeClass' => $author->{age}) if $author->{age};
-	$self->store('sgbrAuthorSex' => $author->{sex}) if $author->{sex};
+
+	if ($author->{age}) {
+	  $self->store('sgbrAuthorAgeClass' => $author->{age});
+	  push @$array, 'sgbrAuthorAgeClass:' . $author->{age};
+	};
+	if ($author->{sex}) {
+	  $self->store('sgbrAuthorSex' => $author->{sex});
+	  push @$array, 'sgbrAuthorSex:' . $author->{sex};
+	};
       };
     };
 
     try {
       my $kodex = $dom->at('item[rend]')->attr('rend');
-      $self->store('sgbrKodex' => $kodex);
+      if ($kodex) {
+	my $array = $self->keywords;
+	$self->store('sgbrKodex' => $kodex);
+	push @$array, 'sgbrKodex:' . $kodex;
+      };
     };
   }
 
@@ -330,6 +345,7 @@
     try {
       $dom->find('particDesc person')->each(
 	sub {
+
 	  $self->{ref_author}->{'#' . $_->attr('xml:id')} = {
 	    age => $_->attr('age'),
 	    sex => $_->attr('sex'),
@@ -559,8 +575,9 @@
     );
     $self->text_class(@topic) if @topic > 0;
 
+    my $kws = $self->keywords;
     my @keywords = $text_class->find("h\.keywords > keyTerm")->each;
-    $self->keywords(@keywords) if @keywords > 0;
+    push(@$kws, @keywords) if @keywords > 0;
   };
 
   if (my $edition_statement = $dom->at('biblFull editionStmt')) {
diff --git a/t/sgbr/sgbr_meta.t b/t/sgbr/sgbr_meta.t
index ed64fa2..a1e2b8e 100644
--- a/t/sgbr/sgbr_meta.t
+++ b/t/sgbr/sgbr_meta.t
@@ -27,8 +27,11 @@
 #is($doc->sub_title, 'Beispiel Text Untertitel', 'title');
 #is($doc->pub_date, '20010402', 'Publication date');
 #is($doc->pub_place, 'Mannheim', 'Publication place');
+
 is($doc->author, 'TEST.BSP.Autoren.1', 'Author');
+
 is($doc->store('sgbrAuthorAgeClass'), 'X', 'AgeClass');
+
 is($doc->store('sgbrAuthorSex'), 'M', 'Sex');
 is($doc->store('sgbrKodex'), 'M', 'Kodex');
 
@@ -63,6 +66,9 @@
 is($hash->{title}, 'Sommerüberraschung', 'Corpus title');
 is($hash->{store}->{sgbrAuthorSex}, 'M', 'store');
 
+# Sgbr specific keywords
+is($doc->keywords_string, 'sgbrAuthorAgeClass:X sgbrAuthorSex:M sgbrKodex:M');
+
 done_testing;
 
 
