diff --git a/textarchive/vlib001.pl b/textarchive/vlib001.pl
index 18cf718bc421e0de328316350599ffa62284a2aa..f85e66426700c9713a94428b820b3d3472f86cdf 100755
--- a/textarchive/vlib001.pl
+++ b/textarchive/vlib001.pl
@@ -127,7 +127,7 @@ unless (defined ($project))
 {
   print "no project specified; check these:\n";
   system ("ls -ls \"$ENV{'TABASE'}/projects\"");
-  exit (0);
+  exit (2);
 }
 # &usage ('no store specified') unless (defined ($store));
 
@@ -136,14 +136,16 @@ if ($op_mode eq 'edit')
   my ($proj_cfg_dir, $proj_cfg_fnm)= TA::ObjReg::_get_project_paths($project);
   system ($EDITOR, $proj_cfg_fnm);
   # print "store_cfg: ", Dumper ($store_cfg);
-  exit;
+  exit(0);
 }
 
 my $objreg= new TA::ObjReg ('project' => $project, 'store' => $store, 'key' => 'md5');
 # print "objreg: ", Dumper ($objreg); exit;
 &usage ('no config found') unless (defined ($objreg));
 print "objreg: ", Dumper ($objreg) if ($DEBUG || $STOP);
-exit if ($STOP);
+exit(2) if ($STOP);
+
+$SIG{INT}= sub { $STOP= 1; print "SIGINT received\n"; };
 
 if ($op_mode eq 'refresh')
 {
@@ -155,7 +157,7 @@ if ($op_mode eq 'refresh')
   unless (defined ($store_cfg))
   {
     print "no store config found for '$store', check these: ", Dumper ($stores_p);
-    exit (-2);
+    exit (2);
   }
 
 # ZZZ
@@ -223,7 +225,7 @@ elsif ($op_mode eq 'get-cat')
   unless (defined ($store_cfg))
   {
     print "no store config found for '$store', check these: ", Dumper ($stores_p);
-    exit (-2);
+    exit (2);
   }
   print "store_cfg: ", Dumper ($store_cfg) if ($DEBUG);
 
@@ -238,6 +240,12 @@ elsif ($op_mode eq 'next-seq')
 
 # print "objreg: (after refresh)", Dumper ($objreg);
 
+if ($STOP)
+{
+  print "STOP set, exit 2\n";
+  exit(2);
+}
+
 exit (0);
 
 sub usage
@@ -256,7 +264,9 @@ sub event_die
 {
   my $msg= shift;
   # TODO: write to MongoDB if an event collection is known
-  die $msg;
+  print join (' ', caller), "\n";
+  print $msg;
+  exit (2);
 }
 
 sub refresh_md5cat
@@ -379,6 +389,12 @@ sub refresh_internal
   print "\npass 2\n";
   my $new_files= $md5cat->check_new_files ($limit);
   # print "new_files: ", Dumper ($new_files);
+  unless ($md5cat->run())
+  {
+    print "SIGINT received in \$md5cat->check_new_files()\n";
+    $STOP= 1;
+  }
+
 # print __LINE__, " integrate_md5_sums\n";
   $md5cat->integrate_md5_sums ($new_files);
   # $md5cat->save_catalog (); # TODO: if save_catalog flag is true!