diff --git a/secure/merlin.c b/secure/merlin.c
index 5478d8c..533f3bf 100644
--- a/secure/merlin.c
+++ b/secure/merlin.c
@@ -1272,7 +1272,7 @@
     move(object_name(ob),0);
     return 1;
   }
-  path=(mixed)"secure/master"->_get_path(dest,getuid(this_player()));
+  path=(mixed)master()->make_path_absolute(dest);
   ret=catch(load_object(path);publish);
   if (ret && file_size(path)<0)
   {
diff --git a/secure/potionmaster.c b/secure/potionmaster.c
index 595dd9b..e04edf3 100644
--- a/secure/potionmaster.c
+++ b/secure/potionmaster.c
@@ -142,8 +142,10 @@
   if ( !intp(list) || list<0 || list>7 )
     return POT_WRONG_DATATYPE;
 
-  // Pfad mit Hilfe des Masters vervollstaendigen (+, ~ etc. ersetzen)
-  room=(string)master()->_get_path(room,0);
+  // Pfad normalisieren - Expansion von Platzhaltern ist hier ziemlich
+  // sinnloss und faellt daher weg (Neue ZTs in /players/ gibts eh nicht
+  // mehr.)
+  room=(string)master()->make_path_absolute(room);
 
   // Datei mit dem ZT-Spruch muss existieren.
   if ( file_size( TIPS(to_string(nextroom)+".zt") ) < 0 ) {
@@ -177,9 +179,11 @@
   if ( !stringp(old) || !stringp(new) )
     return POT_WRONG_DATATYPE;
 
-  // Pfad mit Hilfe des Masters vervollstaendigen (+, ~ etc. ersetzen)
-  old=(string)master()->_get_path(old,0);
-  new=(string)master()->_get_path(new,0);
+  // Pfad normalisieren - Expansion von Platzhaltern ist hier ziemlich
+  // sinnloss und faellt daher weg (Neue ZTs in /players/ gibts eh nicht
+  // mehr.)
+  old=(string)master()->make_path_absolute(old);
+  new=(string)master()->make_path_absolute(new);
 
   // Der neue Raum darf nicht bereits eingetragen sein, ...
   if ( member(reverse_table,new) )
diff --git a/secure/questmaster.c b/secure/questmaster.c
index 32007ce..aef0e45 100644
--- a/secure/questmaster.c
+++ b/secure/questmaster.c
@@ -201,7 +201,7 @@
   for (i=sizeof(allowedobj)-1;i>=0;i--)
     {
       if (!stringp(allowedobj[i]) || allowedobj[i]=="") return -4;
-      allowedobj[i]=(string)"/secure/master"->_get_path(allowedobj[i],0);
+      allowedobj[i]=(string)master()->make_path_absolute(allowedobj[i]);
     }
   if (!stringp(hint) || hint=="") return -5;
   if (difficulty<-1 || difficulty>100) return -6;
@@ -664,7 +664,7 @@
   if (allowedobj[<2..] == ".c")
     allowedobj = allowedobj[0..<3];
   allowedobj = explode(allowedobj, "#")[0];
-  allowedobj = (string)MASTER->_get_path(allowedobj,0);
+  allowedobj = (string)master()->make_path_absolute(allowedobj);
   if (file_size(allowedobj+".c") <=0)
     return -3;
 
@@ -1017,7 +1017,7 @@
   if (new_mqob[<2..] == ".c")
     new_mqob = new_mqob[0..<3];
   new_mqob = explode(new_mqob, "#")[0];
-  new_mqob = (string)"/secure/master"->_get_path(new_mqob,0);
+  new_mqob = (string)master()->make_path_absolute(new_mqob);
   if (file_size(new_mqob+".c") <= 0)
     return -3;
   // Wenn das neue Objekt schon eine MQ vergibt, kann es keine weitere
diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index 501f596..658d5f8 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -1377,7 +1377,7 @@
     efun::set_environment(ob,target);
     return;
   }
-  path=(string)MASTER->_get_path(target,this_interactive());
+  path=(string)master()->make_path_absolute(target);
   if (stringp(path) && file_size(path+".c")>=0 &&
       !catch(load_object(path);publish) )
   {
diff --git a/secure/simul_efun/spare/simul_efun.c b/secure/simul_efun/spare/simul_efun.c
index 501f596..658d5f8 100644
--- a/secure/simul_efun/spare/simul_efun.c
+++ b/secure/simul_efun/spare/simul_efun.c
@@ -1377,7 +1377,7 @@
     efun::set_environment(ob,target);
     return;
   }
-  path=(string)MASTER->_get_path(target,this_interactive());
+  path=(string)master()->make_path_absolute(target);
   if (stringp(path) && file_size(path+".c")>=0 &&
       !catch(load_object(path);publish) )
   {
