diff --git a/p/daemon/finger.c b/p/daemon/finger.c
index 7fc27e7..b6be1d7 100644
--- a/p/daemon/finger.c
+++ b/p/daemon/finger.c
@@ -127,7 +127,7 @@
 
 varargs string finger_single(string str,int local)
 {
-  string ip,text,ipnum,filename,away;
+  string ip,text,ipnum,filename,away,presay;
   int wizlevel,idle,flags,last;
   mixed h,data,tmp;
   object player,ob;
@@ -181,8 +181,6 @@
   if (player) {
     hc_play=player->query_hc_play();
     pdata = player;
-    tmp = player->QueryProp(P_PRESAY);
-    //properties[P_PRESAY]=(stringp(tmp) && sizeof(tmp)>1) ? tmp[0..<2] : 0;
   }
   else {
     restore_object(SAVEPATH+str[0..0]+"/"+str);
@@ -195,6 +193,8 @@
     }
     pdata = this_object();
   }
+  tmp = pdata->QueryProp(P_PRESAY);
+  presay = (stringp(tmp) && sizeof(tmp)>1) ? tmp[0..<2] : 0;
 
   if ( player && interactive(player) )
       ipnum = query_ip_number(player);
@@ -258,10 +258,10 @@
          (wiz?" [":"")+country(ip, ipnum))+(wiz ? "]":"")+".\n"+
         "Zuletzt ausgeloggt: "+dtime(last)+" ("+timediff(time()-last)+").\n";
   }
-  text+="Voller Name: "+(((h=pdata->QueryProp(P_PRESAY)) && h!="") ? h+" " : "")+
+  text+="Voller Name: "+(((h=presay) && h!="") ? h+" " : "")+
     capitalize((h=pdata->QueryProp(P_NAME)) ? h : str)+" "+
      ((h=pdata->QueryProp(P_TITLE)) ? h :
-    ((mappingp(h=pdata->QueryProp("guild_title")) && (h=(h[pdata->QueryProp(P_GUILD)?pdata->QueryProp(P_GUILD):"abenteurer"])) ) ? h : "") )
+    ((mappingp(h=pdata->Query("guild_title")) && (h=(h[pdata->Query(P_GUILD)?pdata->QueryProp(P_GUILD):"abenteurer"])) ) ? h : "") )
        +"\n";
 
   if (pdata->QueryProp(P_GHOST)) text+="Hoppla, ein Geist!\n";
@@ -290,7 +290,7 @@
   if (!stringp(shell)) shell="<keine>";
   int creation = master()->query_userlist(str, USER_CREATION_DATE);
   text+="Rasse: "+shell+",  Gilde: "+
-                     ((h=pdata->QueryProp(P_VISIBLE_GUILD))?capitalize(h):((h=pdata->QueryProp(P_GUILD))?capitalize(h):"Abenteurer"))+
+                     ((h=pdata->QueryProp(P_VISIBLE_GUILD))?capitalize(h):((h=pdata->Query(P_GUILD))?capitalize(h):"Abenteurer"))+
                      ((h=pdata->QueryProp(P_VISIBLE_SUBGUILD_TITLE))?" ("+capitalize(h)+")":((h=pdata->QueryProp(P_SUBGUILD_TITLE))?" ("+capitalize(h)+")":""))+
                      ",  Geschlecht: "+({"neutral ?!","maennlich","weiblich","<verdammt seltsam>"})[pdata->QueryProp(P_GENDER)]+"\n"+
                       (seer ? "Alter: "+timediff(age*HBINT)+",   " : "")+
