diff --git a/p/daemon/finger.c b/p/daemon/finger.c
index e4aba4c..a3c7794 100644
--- a/p/daemon/finger.c
+++ b/p/daemon/finger.c
@@ -117,7 +117,6 @@
 
 varargs string finger_single(string str,int local)
 {
-  mixed  *userinfo;
   string ip,text,ipnum,filename,away;
   int wizlevel,playerlevel,idle,pos,flags,last;
   mixed h,data,tmp;
@@ -153,11 +152,10 @@
 
   /* does this player exist? */
   str=old_explode(str,".")[0];
-  userinfo=MASTER->get_userinfo(str);
   player=find_player(str)||find_netdead(str);
 
-  if( (!pointerp(userinfo) || userinfo[USER_LEVEL+1]==-1)
-	&& !player) {
+  if( (!master()->find_userinfo(str) && !player) )
+  {
     text="Hmm... diesen Namen gibt es im "MUDNAME" nicht.\n";
     if (tmp="/secure/master"->QueryBanished(str)){
       text="Hoppla - dieser Name ist reserviert oder gesperrt (\"gebanisht\")!\n";
@@ -273,16 +271,17 @@
        (member(tmp,getuid(this_player()))!=-1))) tmp = 1;
   else tmp=0;
 
-
-  if (!(h=properties[P_RACE]) && userinfo && pointerp(userinfo) && sizeof(userinfo)>4 &&
-      stringp(userinfo[4]) && sizeof(h=old_explode(userinfo[4],"/"))>2) {
-    h=capitalize(h[2]);
-    h=(["Human":"Mensch","Dwarf":"Zwerg","Darkelf":"Dunkelelf","Orc":"Ork"])[h] || h;
+  string shell = master()->query_userlist(str, USER_OBJECT);
+  if (!(h=properties[P_RACE]) && sizeof(shell))
+  {
+    shell = capitalize(explode(shell, "/")[3]);
+    shell =(["Human":"Mensch","Dwarf":"Zwerg","Darkelf":"Dunkelelf",
+             "Orc":"Ork"])[shell] || shell;
   }
 
-  if (!stringp(h)) h="<keine>";
-
-  text+="Rasse: "+h+",  Gilde: "+
+  if (!stringp(shell)) shell="<keine>";
+  int creation = master()->query_userlist(str, USER_CREATION_DATE);
+  text+="Rasse: "+shell+",  Gilde: "+
                      ((h=properties[P_VISIBLE_GUILD])?capitalize(h):((h=properties[P_GUILD])?capitalize(h):"Abenteurer"))+
                      ((h=properties[P_VISIBLE_SUBGUILD_TITLE])?" ("+capitalize(h)+")":((h=properties[P_SUBGUILD_TITLE])?" ("+capitalize(h)+")":""))+
                      ",  Geschlecht: "+({"neutral ?!","maennlich","weiblich","<verdammt seltsam>"})[properties[P_GENDER]]+"\n"+
@@ -292,9 +291,8 @@
                        ("Spielerlevel: "+properties[P_LEVEL]+( wizlevel ? " (Seher"+IN+")" : "" )+
                         (((h=properties[P_GUILD_LEVEL]) && h=h[properties[P_GUILD]]) ?
                          (",   Gildenlevel: "+h) : "" )
-                        ))+((userinfo&&pointerp(userinfo))?
-                        (sprintf("\nDatum des ersten Login: %s",
-                                 (userinfo[5] > 0) ? dtime(userinfo[5]) : "vor dem 10. Nov 1995")):"")+
+                        )) + ((sprintf("\nDatum des ersten Login: %s",
+                                 (creation > 0) ? dtime(creation) : "vor dem 10. Nov 1995")))+
                          (tmp ? ("\nE-Mail-Adresse: "+((h=properties[P_MAILADDR]) ? h : "keine")+"\n") : "\n");
 
   if (properties[P_HOMEPAGE])
@@ -384,21 +382,20 @@
     text+=capitalize(str)+" ist am "+dtime(hc_play)+" in das Nirvana eingegangen.\n";
   }
 
-  if (/*wiz && */userinfo) {
-    data=userinfo[3];
-    if (sizeof(data))
-      text+="Regionsmagier"+IN+" von     : "+implode(map(data,#'capitalize),", ")+".\n";
-    data="/secure/master"->get_domain_homes(str);
-data=filter(data-({"erzmagier"}),#'stringp); 
-    if ((wizlevel>=DOMAINMEMBER_LVL) && (sizeof(data)))
-      text+="Regionsmitarbeiter"+IN+" von: "+implode(map(data,#'capitalize),", ")+".\n";  /* #' */ 
-    }
+  data=master()->query_userlist(str, USER_DOMAIN);
+  if (sizeof(data))
+    text+="Regionsmagier"+IN+" von     : "
+          +implode(map(data,#'capitalize),", ")+".\n";
+  data="/secure/master"->get_domain_homes(str);
+  data=filter(data-({"erzmagier"}),#'stringp);
+  if ((wizlevel>=DOMAINMEMBER_LVL) && (sizeof(data)))
+    text+="Regionsmitarbeiter"+IN+" von: "
+          +implode(map(data,#'capitalize),", ")+".\n";
 
-  if (userinfo) {
-    data=userinfo[8];
+    data=master()->query_userlist(str, USER_GUILD);
     if (sizeof(data))
-      text += "Gildenmagier"+IN+" von      : "+implode(map(data, #'capitalize), ", ")+".\n";   /* #' */
-  }
+      text += "Gildenmagier"+IN+" von      : "
+              +implode(map(data, #'capitalize), ", ")+".\n";
 
   // ggf. Avatar-URI mit ausgeben.
   if (flags & FLAG_AVATAR
diff --git a/secure/master/domain.c b/secure/master/domain.c
index 984133f..ade06ba 100644
--- a/secure/master/domain.c
+++ b/secure/master/domain.c
@@ -8,9 +8,9 @@
 {
   string *domains;
   int i;
-  
+
   if (!find_userinfo(user)||
-      !pointerp(domains=get_userinfo(user)[USER_DOMAIN+1]))
+      !pointerp(domains=query_userlist(user, USER_DOMAIN)))
     return 0;
   return (member(domains,domain) != -1);
 }
@@ -29,7 +29,7 @@
         call_other(SIMUL_EFUN_FILE, "secure_level") < GOD_LVL) ||
         !find_userinfo(user))
     return 0;
-  domains=get_userinfo(user)[USER_DOMAIN+1];
+  domains=query_userlist(user, USER_DOMAIN);
   if (!domains) 
     set_domains(user,({dom}));
   else
@@ -51,7 +51,7 @@
 
   if (!IS_GOD(geteuid(previous_object()))
       ||!find_userinfo(user)
-      ||!(domains=get_userinfo(user)[USER_DOMAIN+1])
+      ||!(domains=query_userlist(user, USER_DOMAIN))
       || member(domains,dom)==-1)
     return 0;
   domains-=({dom});
diff --git a/secure/master/guild.c b/secure/master/guild.c
index 9f4e839..d0c025c 100644
--- a/secure/master/guild.c
+++ b/secure/master/guild.c
@@ -16,7 +16,7 @@
   int i;
 
   if (!find_userinfo(user)||
-      !pointerp(guilds=get_userinfo(user)[USER_GUILD-1]))
+      !pointerp(guilds=query_userlist(user, USER_GUILD)))
     return 0;
   
   return (member(guilds,guild) != -1);
@@ -31,7 +31,7 @@
       !find_userinfo(user))
     return 0;
 
-  guilds=get_userinfo(user)[USER_GUILD-1];
+  guilds=query_userlist(user, USER_GUILD);
   if (!guilds)
     set_guilds(user, ({ guild }) );
   else {
@@ -47,7 +47,7 @@
 
   if (!IS_GOD(geteuid(previous_object()))
       ||!find_userinfo(user)
-      ||!(guilds=get_userinfo(user)[USER_GUILD-1])
+      ||!(guilds=query_userlist(user, USER_GUILD))
       || member(guilds,guild)==-1)
     return 0;
   guilds -= ({ guild });
diff --git a/secure/simul_efun/livings.c b/secure/simul_efun/livings.c
index 4ed04b4..2d0ffde 100644
--- a/secure/simul_efun/livings.c
+++ b/secure/simul_efun/livings.c
@@ -1,5 +1,7 @@
 // * living_name-Behandlung
 
+#include "/sys/userinfo.h"
+
 #define clean_log(s)
 //#define clean_log(s) log_file("CLEAN_SIM",ctime(time())[4..18]+": "+(s));
 
@@ -23,21 +25,19 @@
 
 public varargs string getuuid( object ob )
 {
-    mixed *ret;
+  if ( !objectp(ob) )
+     ob = previous_object();
 
-    if ( !objectp(ob) )
-       ob = previous_object();
+  if ( !query_once_interactive(ob) )
+     return getuid(ob);
 
-    if ( !query_once_interactive(ob) )
-       return getuid(ob);
+  int creation = master()->query_userlist(getuid(ob), USER_CREATION_DATE);
 
-    ret = master()->get_userinfo( getuid(ob) );
+  if (!intp(creation))
+     return getuid(ob);
 
-    if ( !pointerp(ret) || sizeof(ret) < 5 )
-       return getuid(ob);
-
-    // Username + "_" + CreationDate
-    return ret[0] + "_" + ret[5];
+  // Username + "_" + CreationDate
+  return getuid(ob) + "_" + creation;
 }
 
 void set_object_living_name(string livname, object obj)
diff --git a/secure/simul_efun/spare/livings.c b/secure/simul_efun/spare/livings.c
index 4ed04b4..2d0ffde 100644
--- a/secure/simul_efun/spare/livings.c
+++ b/secure/simul_efun/spare/livings.c
@@ -1,5 +1,7 @@
 // * living_name-Behandlung
 
+#include "/sys/userinfo.h"
+
 #define clean_log(s)
 //#define clean_log(s) log_file("CLEAN_SIM",ctime(time())[4..18]+": "+(s));
 
@@ -23,21 +25,19 @@
 
 public varargs string getuuid( object ob )
 {
-    mixed *ret;
+  if ( !objectp(ob) )
+     ob = previous_object();
 
-    if ( !objectp(ob) )
-       ob = previous_object();
+  if ( !query_once_interactive(ob) )
+     return getuid(ob);
 
-    if ( !query_once_interactive(ob) )
-       return getuid(ob);
+  int creation = master()->query_userlist(getuid(ob), USER_CREATION_DATE);
 
-    ret = master()->get_userinfo( getuid(ob) );
+  if (!intp(creation))
+     return getuid(ob);
 
-    if ( !pointerp(ret) || sizeof(ret) < 5 )
-       return getuid(ob);
-
-    // Username + "_" + CreationDate
-    return ret[0] + "_" + ret[5];
+  // Username + "_" + CreationDate
+  return getuid(ob) + "_" + creation;
 }
 
 void set_object_living_name(string livname, object obj)
diff --git a/secure/zweities.c b/secure/zweities.c
index fdb3641..da155ed 100644
--- a/secure/zweities.c
+++ b/secure/zweities.c
@@ -69,8 +69,7 @@
       && strstr(testie,"Gilde")==-1)
   {
     testie=lower_case(testie);
-    mixed plinfo = master()->get_userinfo(testie);
-    if (pointerp(plinfo))
+    if (master()->find_userinfo(testie))
     {
       sl_exec("INSERT OR REPLACE INTO testies(name, magier, lastlogin) "
               "VALUES(?1,?2,?3);",
@@ -84,14 +83,14 @@
   if (stringp(erstie))
   {
     erstie=lower_case(erstie);
-    mixed plinfo = master()->get_userinfo(erstie);
-    if (pointerp(plinfo))
+    if (master()->find_userinfo(erstie))
     {
       sl_exec("INSERT OR REPLACE INTO zweities(uuid, name, erstieuuid, erstie) "
               "VALUES(?1,?2,?3,?4);",
               getuuid(trigob),
               trigob->query_real_name(),
-              erstie + "_" + plinfo[USER_CREATION_DATE+1],
+              erstie + "_"
+                     + master()->query_userlist(erstie,USER_CREATION_DATE),
               erstie);
     }
     //ZDEBUG(sprintf("%O, %O, %O\n",eid,trigob,data));
