diff --git a/doc/lfun/master/QueryUIDsForWizard b/doc/lfun/master/QueryUIDsForWizard
index a4028c1..e0d5816 100644
--- a/doc/lfun/master/QueryUIDsForWizard
+++ b/doc/lfun/master/QueryUIDsForWizard
@@ -1,42 +1,64 @@
+
 QueryUIDsForWizard()
+********************
 
-FUNKTION:
-    varargs string* QueryUIDsForWizard(string wizname, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    wizname
-      Der Magier, fuer den man die UIDs ermitteln will, fuer die er
-      zustaendig ist.
-    recursive (optional)
-      Gibt an, ob QueryUIDsForWizard() (indirekt) rekursiv aufgerufen wurde.
-      Sollte normalerweise nicht per Hand gesetzt werden.
+   varargs string* QueryUIDsForWizard(string wizname, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt die UIDs, fuer die dieser Magier zustaendig ist.
-    Dabei wird impliziert beruecksichtigt, wenn der Magier RM einer Region
-    oder Gildenmagier einer Gilde ist, ebenso wie Verzeichnisse in den
-    Regionen oder in /p/service.
-    Ausserdem wird nachgeschaut, fuer welche UIDs dieser Magier explizit
-    eingetragen worden ist.
-    Wenn z.B. Magier A auch fuer alle UIDs von Magier B zustaendig sein
-    sollte, liefert die Funktion auch die UIDs von B zurueck.
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
-    Sollte fuer einen Namen keine UID ermittelbar sein, ist das Arrays leer.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    string *uids = master()->QueryUIDsForWizard("ennox");
-    // uids enthaelt nun:
-    // ({"ennox","d.anfaenger.ennox","d.schattenwelt.ennox",
-    //   "p.service.ennox","GUILD.chaos","p.chaos"})
+   /secure/master/userinfo.c
 
-SIEHE AUCH:
-    QueryWizardsForUID(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+
+ARGUMENTE
+=========
+
+   wizname
+     Der Magier, fuer den man die UIDs ermitteln will, fuer die er
+     zustaendig ist.
+   recursive (optional)
+     Gibt an, ob QueryUIDsForWizard() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die UIDs, fuer die dieser Magier zustaendig ist.
+   Dabei wird impliziert beruecksichtigt, wenn der Magier RM einer Region
+   oder Gildenmagier einer Gilde ist, ebenso wie Verzeichnisse in den
+   Regionen oder in /p/service.
+   Ausserdem wird nachgeschaut, fuer welche UIDs dieser Magier explizit
+   eingetragen worden ist.
+   Wenn z.B. Magier A auch fuer alle UIDs von Magier B zustaendig sein
+   sollte, liefert die Funktion auch die UIDs von B zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte fuer einen Namen keine UID ermittelbar sein, ist das Arrays leer.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDsForWizard("ennox");
+   // uids enthaelt nun:
+   // ({"ennox","d.anfaenger.ennox","d.schattenwelt.ennox",
+   //   "p.service.ennox","GUILD.chaos","p.chaos"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
