diff --git a/obj/tools/btool.c b/obj/tools/btool.c
index 8795d9d..be31c6a 100644
--- a/obj/tools/btool.c
+++ b/obj/tools/btool.c
@@ -3,7 +3,7 @@
 #pragma pedantic,range_check,warn_deprecated
 #pragma warn_empty_casts,warn_missing_return,warn_function_inconsistent
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
 
 #include <properties.h>
 #include <defines.h>
diff --git a/obj/tools/dancetool.c b/obj/tools/dancetool.c
index dcf3b9a..82d5941 100644
--- a/obj/tools/dancetool.c
+++ b/obj/tools/dancetool.c
@@ -4,7 +4,7 @@
 //
 //
  
-inherit "std/thing";
+inherit "/std/secure_thing";
  
 #include <properties.h>
 #include <defines.h>
diff --git a/obj/tools/explorer.c b/obj/tools/explorer.c
index 72da8ac..44aec2b 100644
--- a/obj/tools/explorer.c
+++ b/obj/tools/explorer.c
@@ -5,14 +5,18 @@
 // $Id: explorer.c 8357 2013-02-09 11:16:14Z Zesstra $
 
 inherit "/std/secure_thing";
+protected functions virtual inherit "/std/util/path";
 
 #include <properties.h>
 #include <exploration.h>
 #include <wizlevels.h>
 
-create()
+protected void create()
 {
-  if (!clonep(this_object())) return;
+  if (!clonep(this_object())) {
+      set_next_reset(-1);
+      return;
+  }
   ::create();
   SetProp(P_SHORT, "Der Erforscher");
   SetProp(P_NAME, "Erforscher");
@@ -114,8 +118,9 @@
     ob = present(str, this_player());
 
   if (!ob) {
-    str = "/secure/master"->_get_path(str, getuid(this_player()));
-    catch(call_other(str, "???"));
+    // Pfadexpansion fuer die UID vom aktuellen Benutzer.
+    str = normalize_path(str, getuid(this_interactive()||this_player()), 1);
+    catch(load_object(str));
     ob = find_object(str);
   }
   return ob;
diff --git a/obj/tools/lupe.c b/obj/tools/lupe.c
index b3734fb..105b602 100644
--- a/obj/tools/lupe.c
+++ b/obj/tools/lupe.c
@@ -2,7 +2,8 @@
 //
 // Some changes/extensions by Jof@MorgenGrauen
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
+protected functions virtual inherit "/std/util/path";
 
 #include <language.h>
 #include <properties.h>
@@ -11,6 +12,7 @@
 #include <defines.h>
 #include <questmaster.h>
 #include <userinfo.h>
+#include <strings.h>
 
 #define add(s) commands+=({s});functions+=({s});ncmds++
 #define add2(s,f) commands+=({s});functions+=({f});ncmds++
@@ -33,12 +35,15 @@
 void cleanof(string str,object ob);
 
 
-void create()
+protected void create()
 {
   object owner;
   string str;
-  
-  if (!clonep(ME)) return;
+
+  if (!clonep(ME)) {
+      set_next_reset(-1);
+      return;
+  }
   ::create();
   owner=environment()||this_player();
   if (owner)
@@ -182,7 +187,8 @@
   for (i=0;i<maxverb;i++)
     if (commands[i]==verb[0..sizeof(commands[i])-1])
       if (ret=evalcmd(str))
-	return ret;
+          return ret;
+
   return(0); // non-void function, Zesstra
 }
 
@@ -236,10 +242,7 @@
 
 string strip(string str)
 {
-  string temp;
-  if(!str) return "";
-  while (sscanf(str," %s",temp)==1) str=temp;
-  return str;
+  return trim(str,TRIM_BOTH);
 }
 
 int arglen;
@@ -470,7 +473,8 @@
 
 string make_path(string path)
 {
-  return "secure/master"->_get_path( path, geteuid( this_player() ) );
+  // Pfadexpansion fuer Nutzer des Tools
+  return normalize_path(path, getuid( RPL || PL ), 1);
 }
 
 string new(string arg)
diff --git a/obj/tools/mudlink.c b/obj/tools/mudlink.c
index 209d546..3f9ca54 100644
--- a/obj/tools/mudlink.c
+++ b/obj/tools/mudlink.c
@@ -13,7 +13,7 @@
 #include <config.h>
 #include <properties.h>
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
 
 create() {
   string name, foo;
diff --git a/obj/tools/newstool.c b/obj/tools/newstool.c
index f91eeb6..d41827e 100644
--- a/obj/tools/newstool.c
+++ b/obj/tools/newstool.c
@@ -1,4 +1,4 @@
-inherit "std/thing";
+inherit "/std/secure_thing";
 
 #include <properties.h>
 #include <language.h>
diff --git a/obj/tools/projekttool.c b/obj/tools/projekttool.c
index f61a9dd..f6adb70 100644
--- a/obj/tools/projekttool.c
+++ b/obj/tools/projekttool.c
@@ -6,7 +6,7 @@
 #include "/secure/wizlevels.h"
 #include <moving.h>
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
 string hilfe;
 static int changetime;
 static int suppressinfos;
diff --git a/obj/tools/ptool.c b/obj/tools/ptool.c
index c836cae..98ffd8f 100644
--- a/obj/tools/ptool.c
+++ b/obj/tools/ptool.c
@@ -7,7 +7,7 @@
 #include <properties.h>
 #include <language.h>
 
-inherit "std/thing";
+inherit "/std/secure_thing";
 
 int dump();
 
diff --git a/obj/tools/pubtool.c b/obj/tools/pubtool.c
index a85afc9..42e43b3 100644
--- a/obj/tools/pubtool.c
+++ b/obj/tools/pubtool.c
@@ -4,7 +4,7 @@
 #include <properties.h>
 #include <language.h>
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
 
 create()
 {
diff --git a/obj/tools/questtool.c b/obj/tools/questtool.c
index 264fa7c..dd71fcf 100644
--- a/obj/tools/questtool.c
+++ b/obj/tools/questtool.c
@@ -14,8 +14,8 @@
  *		erweitert.
  */
 
-inherit "std/thing";
-inherit "std/more";
+inherit "/std/secure_thing";
+inherit "/std/more";
 
 #include <defines.h>
 #include <properties.h>
diff --git a/obj/tools/teller/teller.c b/obj/tools/teller/teller.c
index fdc9ae4..bcbb9f4 100644
--- a/obj/tools/teller/teller.c
+++ b/obj/tools/teller/teller.c
@@ -2,11 +2,15 @@
 // Tellerstapel, ein Stackorientiertes magiertool.
 // Rumata 15.09.93
 // ----------------------------------------------------------------------
+
 #include "teller.h"
-inherit "std/secure_thing";
+
+inherit "/std/secure_thing";
+protected functions virtual inherit "/std/util/path";
+
 inherit T_CMDS;
 inherit T_EFUN;
-inherit "std/more";
+inherit "/std/more";
 
 #include "/secure/wizlevels.h"
 
@@ -515,7 +519,7 @@
 		push( i );
 	else
 	{
-		filename = MASTER->_get_path(str,getuid());
+		filename = normalize_path(str, getuid(), 1);
 		if( filename[<1] == '.' )
 			filename = filename[0..<2];
 		if( file_size( filename+".c" ) != -1 )
diff --git a/obj/tools/tester/test.c b/obj/tools/tester/test.c
index df4d00b..14fbf5a 100644
--- a/obj/tools/tester/test.c
+++ b/obj/tools/tester/test.c
@@ -108,7 +108,7 @@
 
 #pragma strong_types
 
-inherit "/std/thing";
+inherit "/std/secure_thing";
 
 // Allgemein benoetigte globale Variablen
 
diff --git a/obj/tools/xxtool.c b/obj/tools/xxtool.c
index fa3fb6c..5733041 100644
--- a/obj/tools/xxtool.c
+++ b/obj/tools/xxtool.c
@@ -1,15 +1,15 @@
 #include <properties.h>
 #include <language.h>
 
-inherit "obj/tools/MGtool";
-inherit "std/thing";
+inherit "/obj/tools/MGtool";
+inherit "/std/secure_thing";
 
-void create()
+protected void create()
 {
   if(!clonep(this_object()))
     return;
   thing::create();
-  ::create();
+  MGtool::create();
   SetProp(P_NAME,"Ankh");
   SetProp(P_GENDER,NEUTER);
   SetProp(P_IDS,({"ankh","xxtool"}));
