diff --git a/doc/lfun/master/AddWizardForUID b/doc/lfun/master/AddWizardForUID
index c58463b..249e27c 100644
--- a/doc/lfun/master/AddWizardForUID
+++ b/doc/lfun/master/AddWizardForUID
@@ -1,47 +1,74 @@
+
 AddWizardForUID()
+*****************
 
-FUNKTION:
-    string* AddWizardForUID(string uid, string wizard);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man einen (weiteren) verantwortlichen Magier
-      explizit eintragen moechte.
-    wizard
-      Der Magier, den man eintragen moechte.
+   string* AddWizardForUID(string uid, string wizard);
 
-BESCHREIBUNG:
-    Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
-    Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
-		anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".
 
-		Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
-    die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
-    Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
-    d.inseln.zesstra eintragen.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
-    fuer die dier Magier jetzt explizit eingetragen ist.
+   /secure/master/userinfo.c
 
-BEMERKUNGEN:
-    Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
-    einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
-    fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen 
-    werden.
 
-BEISPIELE:
-    master()->AddWizardForUID("p.waterluh","zook");
-		
-		string *uids = master()->AddWizardForUID("jof","zook");
-    printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-    QueryWizardsForUID(), QueryUIDsForWizard,
-		RemoveWizardFromUID()
+   uid
+     Die UID, fuer die man einen (weiteren) verantwortlichen Magier
+     explizit eintragen moechte.
+   wizard
+     Der Magier, den man eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion traegt einen Magier 'wizard' explizit als verantwortlichen
+   Magier fuer die UID 'uid' ein. Hierbei kann 'uid' sogar der Name eines
+               anderen Magiers sein, dessen UIDs 'wizard' sozusagen "adoptiert".
+
+               Berechtigt zum Eintragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Z.B. kann Zesstra ohne weiteres jemand weiteren als verantwortlich fuer
+   d.inseln.zesstra eintragen.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEMERKUNGEN
+===========
+
+   Es ist nicht noetig, z.B. Zesstra als verantwortlich fuer d.inseln.zesstra
+   einzutragen, da sie ohnehin schon implizit dafuer zustaendig ist. Auch
+   fuer RMs bzw. GMs muss ihre Region bzw. Gilde nicht explizit eingetragen
+   werden.
+
+
+BEISPIELE
+=========
+
+   master()->AddWizardForUID("p.waterluh","zook");
+
+
+
+               string *uids = master()->AddWizardForUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard,
+               RemoveWizardFromUID()
 
 20.02.2007, Zesstra
-
diff --git a/doc/lfun/master/QueryUIDAlias b/doc/lfun/master/QueryUIDAlias
index 0ea844c..8f58509 100644
--- a/doc/lfun/master/QueryUIDAlias
+++ b/doc/lfun/master/QueryUIDAlias
@@ -1,43 +1,65 @@
+
 QueryUIDAlias()
+***************
 
-FUNKTION:
-    varargs string* QueryUIDsForWizard(string uidalias, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uidalias
-      UID, die expandiert werden soll.
-    recursive (optional)
-      Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
-      Sollte normalerweise nicht per Hand gesetzt werden.
+   varargs string* QueryUIDsForWizard(string uidalias, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
-    Hierbei werden folgende UID-Aliase beruecksichtigt:
-    "region":    d.region.* + region + d.region
-    "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
-    "p":         p.* (ohne p.service)
-    "p.service": p.service.*
-    "magierid":  QueryUIDsForWizard()
 
-    Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
-    Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    string *uids = master()->QueryUIDAlias("schattenwelt");
-    // uids enthaelt nun:
-    // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
-    //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
-    //   "d.anfaenger.miril"})
 
-SIEHE AUCH:
-    QueryWizardsForUID(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+ARGUMENTE
+=========
+
+   uidalias
+     UID, die expandiert werden soll.
+   recursive (optional)
+     Gibt an, ob QueryUIDAlias() (indirekt) rekursiv aufgerufen wurde.
+     Sollte normalerweise nicht per Hand gesetzt werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt aus einer "Alias-UID" die UID, fuer die sie steht.
+   Hierbei werden folgende UID-Aliase beruecksichtigt:
+   "region":    d.region.* + region + d.region
+   "gilde":     GUILD.gilde, GUILD.gildenspellbook, p.gilde
+   "p":         p.* (ohne p.service)
+   "p.service": p.service.*
+   "magierid":  QueryUIDsForWizard()
+
+   Das Ergebnis dieser Funktion wird laengere Zeit gecachet (bis zu 24h).
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID.
+   Sollte uidaliase keines der o.g. sein, wird ein ({uidalias}) geliefert.
+
+
+BEISPIELE
+=========
+
+   string *uids = master()->QueryUIDAlias("schattenwelt");
+   // uids enthaelt nun:
+   // ({"d.anfaenger","anfaenger","d.anfaenger.ark","d.anfaenger.ennox",
+   //   "d.anfaenger.humni","d.anfaenger.kiria","d.anfaenger.konzepte",
+   //   "d.anfaenger.miril"})
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
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
-
diff --git a/doc/lfun/master/QueryWizardsForUID b/doc/lfun/master/QueryWizardsForUID
index 93095b6..6ddbdc3 100644
--- a/doc/lfun/master/QueryWizardsForUID
+++ b/doc/lfun/master/QueryWizardsForUID
@@ -1,46 +1,71 @@
+
 QueryWizardsForUID()
+********************
 
-FUNKTION:
-    varargs string* QueryWizardsForUID(string uid, int recursive);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man die Magier ermitteln will, die fuer sie
-      zustaendig sind.
-    recursive (optional)
-      gibt an, ob das QueryWizardsForUID() (indirekt) aus einem 
-      QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
-      werden.
+   varargs string* QueryWizardsForUID(string uid, int recursive);
 
-BESCHREIBUNG:
-    Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
-    Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
-    Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle 
-    UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird 
-    "Rumata" ueber eine rekursive Suche gefunden.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-    Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im 
-    Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die 
-    seit Laden des Master bereits einmal get_userinfo() oder 
-    QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
-    Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
-    was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
-    entsprechenden Code gerade nicht warten...
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    string *wiz = master()->QueryWizards("GUILD.klerus");
-    // wiz enthaelt nun: ({"morgoth","magdalena"})
 
-SIEHE AUCH:
-    QueryUIDsForWizard(), 
-		AddWizardForUID(), RemoveWizardFromUID()
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man die Magier ermitteln will, die fuer sie
+     zustaendig sind.
+   recursive (optional)
+     gibt an, ob das QueryWizardsForUID() (indirekt) aus einem
+     QueryWizardsForUID() heraus gerufen wurde. Sollte nicht manuell gesetzt
+     werden.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion ermittelt die Magier, die fuer diese UID zustaendig sind.
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist ein Magier.
+   Sollte fuer eine UID kein Magier ermittelbar sein, ist das Array leer.
+   Wenn z.B. fuer die UID der Magier "Atamur" gefunden wird, aber fuer alle
+   UIDs von "Atamur" auch der Magier "Rumata" zustaendig sein sollte, wird
+   "Rumata" ueber eine rekursive Suche gefunden.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die UID den Magier nicht implizit enthaelt (z.B. GUILD.gilde, im
+   Gegensatz zu d.region.magier), findet diese Funktion nur Magier, fuer die
+   seit Laden des Master bereits einmal get_userinfo() oder
+   QueryUIDsForWizard() im Master gerufen wurde, was z.B. Einloggen passiert.
+   Magier, die lang nicht einloggten, werden also manchmal nicht gefunden,
+   was in der Regel nicht schlimm sein sollte, da sie ja ohnehin den
+   entsprechenden Code gerade nicht warten...
+
+
+BEISPIELE
+=========
+
+   string *wiz = master()->QueryWizards("GUILD.klerus");
+   // wiz enthaelt nun: ({"morgoth","magdalena"})
+
+
+SIEHE AUCH
+==========
+
+   QueryUIDsForWizard(),
+               AddWizardForUID(), RemoveWizardFromUID()
 
 16.12.2007, Zesstra
-
diff --git a/doc/lfun/master/RemoveWizardFromUID b/doc/lfun/master/RemoveWizardFromUID
index da97132..1fdeba5 100644
--- a/doc/lfun/master/RemoveWizardFromUID
+++ b/doc/lfun/master/RemoveWizardFromUID
@@ -1,38 +1,62 @@
+
 RemoveWizardFromUID()
+*********************
 
-FUNKTION:
-    string* RemoveWizardFromUID(string uid, string wizard);
 
-DEFINIERT IN:
-    /secure/master/userinfo.c
+FUNKTION
+========
 
-ARGUMENTE:
-    uid
-      Die UID, fuer die man einen zustaendigen Magier austragen will.
-    wizard
-      Der Magier, den man austragen moechte.
+   string* RemoveWizardFromUID(string uid, string wizard);
 
-BESCHREIBUNG:
-    Die Funktion loescht die UID 'uid' aus der Liste der UIDs, fuer die
-    'wizard' explizit zustaendig ist.
 
-    Berechtigt zum Austragen von Magiern fuer bestimmte UIDs sind alle Magier,
-    die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
-    Man kann sich auch selber austragen. ;-)
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
-    fuer die dier Magier jetzt explizit eingetragen ist.
+   /secure/master/userinfo.c
 
-BEISPIELE:
-    master()->RemoveWizardFromUID("p.waterluh","zook");
-		
-    string *uids = master()->RemoveWizardFromUID("jof","zook");
-    printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
 
-SIEHE AUCH:
-    QueryWizardsForUID(), QueryUIDsForWizard()
-		AddWizardForUID()
+ARGUMENTE
+=========
+
+   uid
+     Die UID, fuer die man einen zustaendigen Magier austragen will.
+   wizard
+     Der Magier, den man austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion loescht die UID 'uid' aus der Liste der UIDs, fuer die
+   'wizard' explizit zustaendig ist.
+
+   Berechtigt zum Austragen von Magiern fuer bestimmte UIDs sind alle Magier,
+   die (implizit oder explizit) verantwortlich fuer die jeweilige UID sind.
+   Man kann sich auch selber austragen. ;-)
+
+
+RUeCKGABEWERT
+=============
+
+   Zurueckgeliefert wird ein Array von Strings, jedes Element ist eine UID,
+   fuer die dier Magier jetzt explizit eingetragen ist.
+
+
+BEISPIELE
+=========
+
+   master()->RemoveWizardFromUID("p.waterluh","zook");
+
+
+
+   string *uids = master()->RemoveWizardFromUID("jof","zook");
+   printf("Zook ist nun explizit zustaendig fuer: %s\n",CountUp(uids));
+
+
+SIEHE AUCH
+==========
+
+   QueryWizardsForUID(), QueryUIDsForWizard()
+               AddWizardForUID()
 
 20.02.2007, Zesstra
-
