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
-
