diff --git a/textarchive/vlib001.pl b/textarchive/vlib001.pl
index 2130abadfae7ce2b523b7a24eacff2e0f5458e04..9dc70f7be3043e41da1d7872dfb7770ff01324a7 100755
--- a/textarchive/vlib001.pl
+++ b/textarchive/vlib001.pl
@@ -6,16 +6,20 @@
 
 =head1 USAGE
 
-  vlib001.pl -p project-name [-s store-name] [paraemters]*
+  vlib001.pl -p project-name [-s store-name] [parameters]*
 
   options:
   * -p <project-name>
   * -s <store-name>
+  * --project <project-name>
+  * --store <store-name>
   * --verify   ... verify/create TOC structures (not for MongoDB)
   * --fileinfo ... refresh file info
   * --lookup   ... lookup for hashes given as parameters
   * --limit <n> ... check up <n> files
+  * --noinode   ... ignore the inode
   * -D ... increase debug level
+  * -X ... stop after setup (useful as option -DX)
 
 =head1 DESCRIPTION
 
@@ -59,6 +63,7 @@ my $op_mode= 'refresh';
 my $limit= undef;
 my $cat_file= '_catalog';
 my $ino_file= '_catalog.inodes';
+my $check_inode= 1;
 
 my @hdr= qw(md5 path mtime fs_size ino);
 
@@ -74,20 +79,24 @@ while (my $arg= shift (@ARGV))
   elsif ($arg =~ /^--/)
   {
        if ($arg eq '--project')  { $project= shift (@ARGV); }
-    elsif ($arg eq '--store')    { $store= shift (@ARGV); }
+    elsif ($arg eq '--store')    { $store=   shift (@ARGV); }
+    elsif ($arg eq '--limit')    { $limit=   shift (@ARGV); }
     elsif ($arg eq '--fileinfo') { $refresh_fileinfo= 1; }
-    elsif ($arg eq '--limit')    { $limit= shift (@ARGV); }
+    elsif ($arg eq '--noinode')  { $check_inode= 0; }
     elsif ($arg =~ /^--(refresh|verify|lookup|edit|maint|next-seq|get-cat)$/) { $op_mode= $1; }
+    else { &usage ("unknown option '$arg'"); }
   }
   elsif ($arg =~ /^-/)
   {
     my @a= split ('|', $arg);
+    shift (@a);
     foreach my $a (@a)
     {
          if ($a eq 'p') { $project= shift (@ARGV); }
-      elsif ($a eq 's') { $store= shift (@ARGV); }
+      elsif ($a eq 's') { $store=   shift (@ARGV); }
       elsif ($a eq 'D') { $DEBUG++; }
       elsif ($a eq 'X') { $STOP= 1; }
+      else { &usage ("unknown option '-$a'"); }
     }
   }
   else { push (@PAR, $arg); }
@@ -130,7 +139,18 @@ if ($op_mode eq 'refresh')
     print "no store config found for '$store', check these: ", Dumper ($stores_p);
     exit (-2);
   }
+
   print "store_cfg: ", Dumper ($store_cfg) if ($DEBUG);
+  if (exists ($store_cfg->{'inodes'}))
+  {
+    my $i= $store_cfg->{'inodes'};
+       if ($i eq 'ignore') { $check_inode= 0; }
+    elsif ($i eq 'check')  { $check_inode= 1; }
+    else
+    {
+      print "WARNING: store-parameter 'inodes' has unknown value '$i'\n";
+    }
+  }
 
      if ($catalog->{'format'} eq 'md5cat')   { refresh_md5cat   ($objreg, $store); }
   elsif ($catalog->{'format'} eq 'internal') { refresh_internal ($objreg, $store); }
@@ -188,8 +208,8 @@ exit (0);
 sub usage
 {
   my $msg= shift;
-  print $msg, "\n";
-  system ("perldoc $0");
+  print $msg, "\n" if ($msg);
+  system ('perldoc', $0);
   exit -1;
 }
 
@@ -243,6 +263,9 @@ sub refresh_internal
   # print "md5cat: ", Dumper ($md5cat);
   print "flist processed\n";
 
+  my @check_list= qw(mtime size);
+  push (@check_list, 'ino') if ($check_inode);
+
   # compare TOC and reference filelist
   my $fl= $md5cat->{'FLIST'};
   my %key= ();
@@ -264,7 +287,7 @@ sub refresh_internal
       $cnt_processed++;
       my $f= $fl->{$p};
       my $matches= 1;
-      AN: foreach my $an (qw(mtime size ino))
+      AN: foreach my $an (@check_list)
       {
         unless ($f->{$an} eq $x->{$an})
         {
@@ -361,8 +384,9 @@ sub process_file
       # 'key' => $md5, 'key_type' => 'md5',
       'store' => $store,
       'c_size' => $size, 'path' => $path, 'md5' => $md5,
-      'mtime' => $st[9], 'fs_size' => $st[7], 'ino' => $st[1]
+      'mtime' => $st[9], 'fs_size' => $st[7]
     };
+    $xdata->{'ino'}= $st[1] if ($check_inode);
 
     my $search= { 'md5' => $md5, 'store' => $store, 'path' => $path };
     my $reg= $objreg->lookup ($search);
@@ -443,23 +467,26 @@ sub get_cat_internal
     my ($md5, $fs_size, $path, $ino)= map { $t->{$_} } qw(md5 fs_size path ino);
     printf CAT ("%s file %9ld %s\n", $md5, $fs_size, $path);
     # print "t: ", Dumper ($t);
-    push (@{$inodes{$ino}}, $path);
+    push (@{$inodes{$ino}}, $path) if ($check_inode);
     $count++;
   }
   close (CAT);
 
-  if (open (INO, '>:utf8', $ino_file))
+  if ($check_inode)
   {
-    print "writing new catalog '$ino_file'\n";
-    foreach my $ino (sort { $a <=> $b } keys %inodes)
+    if (open (INO, '>:utf8', $ino_file))
     {
-      print INO join ('|', $ino, @{$inodes{$ino}}), "\n";
+      print "writing new catalog '$ino_file'\n";
+      foreach my $ino (sort { $a <=> $b } keys %inodes)
+      {
+        print INO join ('|', $ino, @{$inodes{$ino}}), "\n";
+      }
+      close (INO);
+    }
+    else
+    {
+      print "can not write to '$ino_file'\n";
     }
-    close (INO);
-  }
-  else
-  {
-    print "can not write to '$ino_file'\n";
   }
 
   $count;
@@ -477,7 +504,9 @@ sub verify_toc_item
   # my @paths= keys %{$jj->{'path'}};
   # $ster->{'path_count'}= scalar @paths;  ... we don't see that this way anymore
 
-  foreach my $k (qw(md5 path mtime fs_size ino))
+  my @check_list= qw(md5 path mtime fs_size);
+  push (@check_list, 'ino') if ($check_inode);
+  foreach my $k (@check_list)
   {
     $ster->{$k}= $jj->{$k};
   }
@@ -493,6 +522,9 @@ __END__
     locate all the stores on a given machine, so there should be an option
     that updates everything.
   * specifing the store should be optional.
+  * environment variable TABASE:
+    * add pod section
+    * allow command line option to specifiy alternative base directory name
 
 =head2 misc