diff --git a/textarchive/vlib001.pl b/textarchive/vlib001.pl
index 1c663862bed3e28c670a28e9d399b5b080949d02..ed19f71f356a9a40951aca146c42e3dbe8802830 100755
--- a/textarchive/vlib001.pl
+++ b/textarchive/vlib001.pl
@@ -13,6 +13,7 @@
   * -s <store-name>
   * --project <project-name>
   * --store <store-name>
+  * --subdir <directory>
   * --verify   ... verify/create TOC structures (not for MongoDB)
   * --fileinfo ... refresh file info
   * --lookup   ... lookup for hashes given as parameters
@@ -75,6 +76,8 @@ my $Dir_Pattern= '.';
 my $DEFAULT_file_list= "find $Dir_Pattern -xdev -type f -print|";
 # --- >8 ---
 
+my @subdirs= ();
+
 while (my $arg= shift (@ARGV))
 {
      if ($arg eq '--') { push (@PAR, @ARGV); @ARGV= (); }
@@ -85,6 +88,7 @@ while (my $arg= shift (@ARGV))
     elsif ($arg eq '--limit')    { $limit=   shift (@ARGV); }
     elsif ($arg eq '--fileinfo') { $refresh_fileinfo= 1; }
     elsif ($arg eq '--noinode')  { $check_inode= 0; }
+    elsif ($arg eq '--subdir')   { push (@subdirs, shift (@ARGV)); }
     elsif ($arg =~ /^--(refresh|verify|lookup|edit|maint|next-seq|get-cat)$/) { $op_mode= $1; }
     else { &usage ("unknown option '$arg'"); }
   }
@@ -261,7 +265,20 @@ sub refresh_internal
   # print "toc: ", Dumper ($toc);
 
   my $md5cat= new md5cat ();
-  $md5cat->read_flist ($DEFAULT_file_list);
+
+  if (@subdirs)
+  {
+    foreach my $subdir (@subdirs)
+    {
+      my $subdir_file_list= "find '$subdir' -xdev -type f -print|";
+      $md5cat->read_flist ($subdir_file_list);
+    }
+  }
+  else
+  {
+    $md5cat->read_flist ($DEFAULT_file_list);
+  }
+
   # print "md5cat: ", Dumper ($md5cat);
   print "flist processed\n";
 
@@ -347,17 +364,36 @@ print __LINE__, " integrate_md5_sums\n";
   # print __LINE__, " key: ", Dumper (\%key);
 
   my @drop= ();
-  foreach my $k (keys %key)
+  if (@subdirs)
+  {
+
+=begin comment
+
+NOTE: we only inspected a subdirectory, but this inspects everything
+and would remove items that were not even inspected
+
+TODO: only drop the thing when it is in the right subdirectory!
+
+=end comment
+=cut
+
+    print "NOTE: no check for removable items performed!\n";
+
+  }
+  else
   {
-    my $x1= $key{$k};
-    foreach my $p (keys %$x1)
+    foreach my $k (keys %key)
     {
-      push (@drop, [$k, $p]) if ($x1->{$p} == 0);
+      my $x1= $key{$k};
+      foreach my $p (keys %$x1)
+      {
+        push (@drop, [$k, $p]) if ($x1->{$p} == 0);
+      }
     }
-  }
-  print __LINE__, " drop: (", scalar @drop, ") ", Dumper (\@drop);
+    print __LINE__, " drop: (", scalar @drop, ") ", Dumper (\@drop);
 
-  $objreg->remove_from_store ($store, \@drop);
+    $objreg->remove_from_store ($store, \@drop);
+  }
 
   printf ("files: %6d processed; %6d updated; %6d (%d) dropped\n",
           $cnt_processed, $cnt_updated, $cnt_dropped, scalar (@drop));