diff --git a/Changes b/Changes
index c2ab339..0ab3365 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,7 @@
+0.50 2023-02-13
+        - Fix 'temporary-extract' configuration
+          information.
+
 0.49 2023-02-12
         - Support for UDPipe POS, lemma and dependency
           annotations (kupietz).
diff --git a/Readme.pod b/Readme.pod
index 2b4d1c6..bae4e4a 100644
--- a/Readme.pod
+++ b/Readme.pod
@@ -207,7 +207,7 @@
 for archive processing.
 Defaults to C<0> (everything runs in a single process).
 
-If C<sequential-extraction> is not set to false, this will
+If C<sequential-extraction> is not set to true, this will
 also apply to extraction.
 
 Pass -1, and the value will be set automatically to 5
@@ -299,7 +299,8 @@
 
 =item B<--temporary-extract|-te>
 
-Only valid for the C<archive> command.
+Only valid for the C<archive> and C<serial>
+commands.
 
 This will first extract all files into a
 directory and then will archive.
diff --git a/lib/KorAP/XML/ForkPool.pm b/lib/KorAP/XML/ForkPool.pm
index f9b11ae..b3acef8 100644
--- a/lib/KorAP/XML/ForkPool.pm
+++ b/lib/KorAP/XML/ForkPool.pm
@@ -18,7 +18,9 @@
   }, $class;
 };
 
-sub new_pool {
+
+# Create new fork pool
+sub _new_pool {
   my $self = shift;
 
   # Zero means: everything runs in the parent process
@@ -39,11 +41,13 @@
   return $pool;
 };
 
+
+# Iterate over a directory and process all documents
 sub process_directory {
   my $self = shift;
   my $input = shift;
 
-  my $pool = $self->new_pool;
+  my $pool = $self->_new_pool;
 
   print "Reading data ...\n";
 
@@ -91,6 +95,7 @@
 };
 
 
+# Take an archive, uncompress and iterate over all texts
 sub process_archive {
   my $self = shift;
   my $archive = shift;
@@ -110,7 +115,7 @@
   $self->{count} = scalar @dirs;
 
   # Creae new pool
-  my $pool = $self->new_pool;
+  my $pool = $self->_new_pool;
 
  ARCHIVE_LOOP:
   for (my $i = 0; $i < $count; $i++) {
diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm
index c5f68a1..95218e0 100644
--- a/lib/KorAP/XML/Krill.pm
+++ b/lib/KorAP/XML/Krill.pm
@@ -16,7 +16,7 @@
 
 our @EXPORT_OK = qw(get_file_name get_file_name_from_glob);
 
-our $VERSION = '0.49';
+our $VERSION = '0.50';
 
 has 'path';
 has [qw/text_sigle doc_sigle corpus_sigle/];
diff --git a/script/korapxml2krill b/script/korapxml2krill
index 75dd21d..0856c57 100755
--- a/script/korapxml2krill
+++ b/script/korapxml2krill
@@ -167,9 +167,13 @@
 #
 # 2023/02/05
 # - Support for UD
+#
+# 2023/02/13
+# - Fix temporary-extract handling from configuration file.
+#
 # ----------------------------------------------------------
 
-our $LAST_CHANGE = '2023/02/05';
+our $LAST_CHANGE = '2023/02/13';
 our $LOCAL = $FindBin::Bin;
 our $KORAL_VERSION = 0.03;
 our $VERSION_MSG = <<"VERSION";
@@ -201,7 +205,7 @@
   'base-paragraphs|bp=s'  => \($cfg{base_paragraphs}),
   'base-pagebreaks|bpb=s' => \($cfg{base_pagebreaks}),
   'gzip|z'      => \($cfg{gzip}),
-  'temporary-extract|te=s' => \($cfg{extract_dir}),
+  'temporary-extract|te=s' => \($cfg{temporary_extract}),
   'skip|s=s'    => \@skip,
   'sigle|sg=s'  => \@sigle,
   'cache|c=s'   => \($cfg{cache_file}),
@@ -290,7 +294,7 @@
 my $input_base       = $cfg{input_base};
 my $gzip             = $cfg{gzip};
 my $to_tar           = $cfg{to_tar};
-my $extract_dir      = $cfg{extract_dir};
+my $extract_dir      = $cfg{temporary_extract};
 my $token_base       = $cfg{token}               // 'OpenNLP#tokens';
 my $cache_file       = $cfg{cache}               // 'korapxml2krill.cache';
 my $jobs             = $cfg{jobs}                // 0;
@@ -392,6 +396,7 @@
     # Create archive command
     my @archive_cmd = ($^X, $0, 'archive', @keep_argv, '-i', $_, '-o', $new_out);
     print "Start serial processing of $_ to $new_out\n";
+    print 'Command: ', join(' ', @archive_cmd), "\n";
 
     # Start archiving
     system @archive_cmd;
@@ -717,6 +722,7 @@
 
       # Extract to temporary directory
       if ($archive->extract_all($extract_dir, $sequential_extraction ? 1: $jobs)) {
+        print "Extract sequentially to $extract_dir\n";
         @input = ($extract_dir);
       }
       else {
@@ -1269,7 +1275,7 @@
 for archive processing.
 Defaults to C<0> (everything runs in a single process).
 
-If C<sequential-extraction> is not set to false, this will
+If C<sequential-extraction> is not set to true, this will
 also apply to extraction.
 
 Pass -1, and the value will be set automatically to 5
@@ -1361,7 +1367,8 @@
 
 =item B<--temporary-extract|-te>
 
-Only valid for the C<archive> command.
+Only valid for the C<archive> and C<serial>
+commands.
 
 This will first extract all files into a
 directory and then will archive.
diff --git a/t/script/config.t b/t/script/config.t
index 5ec57cb..bd6e9fa 100644
--- a/t/script/config.t
+++ b/t/script/config.t
@@ -24,6 +24,9 @@
 
 my $input_base = catdir($f, '..', 'corpus', 'archives');
 
+# Temporary extract
+my $temp_out = File::Temp->newdir(CLEANUP => 0);
+
 print $fh <<"CFG";
 overwrite       0
 token           OpenNLP#tokens
@@ -34,6 +37,8 @@
 meta            I5
 gzip            1
 log             DEBUG
+temporary-extract $temp_out
+sequential-extraction 1
 input-base      $input_base
 CFG
 
@@ -69,6 +74,8 @@
 # Processed using gzip
 like($stdout, qr!Processed .+?WPD15-A00-00081\.json\.gz!, 'Gzip');
 
+like($stdout, qr!Extract sequentially to!);
+
 # Check log level
 like($stdout, qr!Unable to parse KorAP::XML::Annotation::Glemm::Morpho!, 'Check log level');
 
