diff --git a/secure/master.h b/secure/master.h
index 14c9fab..958043c 100644
--- a/secure/master.h
+++ b/secure/master.h
@@ -99,7 +99,7 @@
 protected mixed *get_full_userinfo(string user);
 public mixed    *get_userinfo(string user);
 public int       get_wiz_level(string user);
-public string    query_player_object( string name );
+public mixed     query_userlist(string user, int prop);
 public int       query_wiz_level(mixed player);
 int              update_wiz_level(string user,int lev);
 protected void   set_guilds(string player, string *guilds);
diff --git a/secure/master/misc.c b/secure/master/misc.c
index 087bdf6..b113ad6 100644
--- a/secure/master/misc.c
+++ b/secure/master/misc.c
@@ -590,7 +590,8 @@
   active=interactive(who);
   printf("OK, renewing %O\n",who);
   efun::configure_object(this_object(), OC_EUID, geteuid(who));
-  err=catch(newob=clone_object(query_player_object(getuid(who))); publish);
+  err=catch(newob=clone_object(query_userlist(getuid(who),USER_OBJECT));
+            publish);
   efun::configure_object(this_object(), OC_EUID, getuid(TO));
   if (err)
   {
diff --git a/secure/master/userinfo.c b/secure/master/userinfo.c
index af7ec8a..fba781f 100644
--- a/secure/master/userinfo.c
+++ b/secure/master/userinfo.c
@@ -467,12 +467,38 @@
       userlist[user,USER_UIDS_TO_TAKE_CARE]});
 }
 
-// liefert das Objekt des users aus der Userlist zurueck.
-public string query_player_object( string name )
-{
-  mixed *userentry;
-  if( !find_userinfo(name) ) return "";
-  return userlist[name,USER_OBJECT];
+public mixed query_userlist(string user, int prop) {
+  if(!sizeof(user))
+    return 0;
+  user=explode(user,".")[0];
+  if (!member(userlist,user) && !find_userinfo(user))
+    return 0;
+  if (userlist[user,USER_LEVEL]==-1)
+    return 0;
+
+  switch(prop)
+  {
+    case USER_LEVEL:
+      return userlist[user,USER_LEVEL];
+    case USER_DOMAIN:
+      return userlist[user,USER_DOMAIN];
+    case USER_OBJECT:
+      return userlist[user,USER_OBJECT];
+    case USER_CREATION_DATE:
+      return userlist[user,USER_CREATION_DATE];
+    case USER_GUILD:
+      return userlist[user,USER_GUILD];
+    case USER_EKTIPS:
+      return userlist[user,USER_EKTIPS];
+    case USER_FPTIPS:
+      return userlist[user,USER_FPTIPS];
+    case USER_UIDS_TO_TAKE_CARE:
+      return userlist[user,USER_UIDS_TO_TAKE_CARE];
+    default:
+      raise_error(sprintf(
+        "Querying property %d in userlist is illegal.\n", prop));
+  }
+  return 0;
 }
 
 // Passwort ok?
