diff --git a/Changes b/Changes
index a645256..53421c2 100644
--- a/Changes
+++ b/Changes
@@ -5,6 +5,7 @@
         - resources defined in Makefile
         - fixed possible IO deadlock with KorAP tokenizer
         - Simplified debugging by combining with X::C::T line numbers
+        - Support inline-tokens parameter
 
 0.03 2021-01-12
         - Update KorAP-Tokenizer to released 2.0 version
diff --git a/Readme.pod b/Readme.pod
index 209df07..1689eb4 100644
--- a/Readme.pod
+++ b/Readme.pod
@@ -112,6 +112,14 @@
 that will take an I<Aggressive> and a I<conservative>
 approach.
 
+=item B<--inline-tokens> <foundry>#[<file>]
+
+Define the foundry and file (without extension)
+to store inline token information in.
+If L</KORAPXMLTEI_INLINE> is set, this will contain
+annotations as well.
+Defaults to C<tokens> and C<morpho>.
+
 =item B<--use-tokenizer-sentence-splits|-s>
 
 Replace existing with, or add new, sentence boundary information
diff --git a/script/tei2korapxml b/script/tei2korapxml
index d4ccb5b..eb97909 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -48,6 +48,7 @@
   'tokenizer-korap|tk' => \(my $tokenizer_korap), # use KorAP-tokenizer
   'tokenizer-internal|ti' => \(my $tokenizer_intern), # use intern tokenization (default = no)
   'use-tokenizer-sentence-splits|s' => (\my $use_tokenizer_sentence_splits), # use KorAP tokenizer to split s (default=no)
+  'inline-tokens=s' => \(my $inline_tokens = 'tokens#morpho'),
   'log|l=s' => \(my $log_level = 'notice'),
   'help|h'    => sub {
     pod2usage(
@@ -125,9 +126,13 @@
                                                      #                                     (= their names and byte offsets in $_data)
 ## TODO: optional (different annotation tools can produce more zip-files for feeding into KorAP-XML-Krill)
 my $_TOKENS_PROC     = 1;                            # on/off: processing of ${_TOKEN_TAG}'s (default: 1)
-my $_tokens_dir      = "tokens";                     # name of directory  containing the  $_tokens_file
-my $_tokens_file     = "morpho.xml";                 # name of file       containing all  ${_TOKEN_TAG}'s related information (=their byte offsets in $_data)
-                                                     #                                     - evtl. with additional inline annotations
+
+
+# Name of the directory and the file containing all inline token informations
+# i.e. tokens of the $_TOKENS_TAG, if $_TOKENS_PROC is set
+my ($_tokens_dir, $_tokens_file) = split '#', $inline_tokens . '#morpho';
+$_tokens_file .= '.xml';
+
 my $_TOKENS_TAG      = "w";                          # name of tag        containing all  information stored in $_tokens_file
 
 # Handling inline annotations (inside $_TOKENS_TAG)
@@ -892,6 +897,14 @@
 that will take an I<Aggressive> and a I<conservative>
 approach.
 
+=item B<--inline-tokens> <foundry>#[<file>]
+
+Define the foundry and file (without extension)
+to store inline token information in.
+If L</KORAPXMLTEI_INLINE> is set, this will contain
+annotations as well.
+Defaults to C<tokens> and C<morpho>.
+
 =item B<--use-tokenizer-sentence-splits|-s>
 
 Replace existing with, or add new, sentence boundary information
diff --git a/t/script.t b/t/script.t
index 773bb60..0ac27d9 100644
--- a/t/script.t
+++ b/t/script.t
@@ -415,6 +415,51 @@
     ;
 };
 
+subtest 'Check Inline annotations with defined foundry and folder' => sub {
+  # Load example file
+  my $file = catfile($f, 'data', 'goe_sample_tagged.i5.xml');
+
+  my $t = test_tei2korapxml(
+    file => $file,
+    env => 'KORAPXMLTEI_INLINE=1',
+    tmp => 'script_tagged',
+    param => '--inline-tokens=myfoundry#myfile'
+  )
+    ->stderr_like(qr!tei2korapxml: .*? text_id=GOE_AGA\.00000!)
+
+    ->file_exists_not('GOE/AGA/00000/tokens/morpho.xml', 'Morpho not generated')
+
+    # Check zip using xml loy
+    ->unzip_xml('GOE/AGA/00000/myfoundry/myfile.xml')
+
+    ->attr_is('layer', 'docid', 'GOE_AGA.00000')
+    ->attr_is('spanList span:nth-child(1)', 'id', 's0')
+    ->attr_is('spanList span:nth-child(1)', 'from', '75')
+    ->attr_is('spanList span:nth-child(1)', 'to', '81')
+    ->attr_is('spanList span:nth-child(1)', 'l', '7')
+    ;
+
+  $t = test_tei2korapxml(
+    file => $file,
+    env => 'KORAPXMLTEI_INLINE=1',
+    tmp => 'script_tagged',
+    param => '--inline-tokens=myfoundry'
+  )
+    ->stderr_like(qr!tei2korapxml: .*? text_id=GOE_AGA\.00000!)
+
+    ->file_exists_not('GOE/AGA/00000/tokens/morpho.xml', 'Morpho not generated')
+
+    # Check zip using xml loy
+    ->unzip_xml('GOE/AGA/00000/myfoundry/morpho.xml')
+
+    ->attr_is('layer', 'docid', 'GOE_AGA.00000')
+    ->attr_is('spanList span:nth-child(1)', 'id', 's0')
+    ->attr_is('spanList span:nth-child(1)', 'from', '75')
+    ->attr_is('spanList span:nth-child(1)', 'to', '81')
+    ->attr_is('spanList span:nth-child(1)', 'l', '7')
+    ;
+};
+
 subtest 'Check Inline annotations with untagged file' => sub {
 
   # Load example file
