diff --git a/doc/sphinx/lfun/master/AddWizardForUID.rst b/doc/sphinx/lfun/master/AddWizardForUID.rst
new file mode 100644
index 0000000..3e9f504
--- /dev/null
+++ b/doc/sphinx/lfun/master/AddWizardForUID.rst
@@ -0,0 +1,74 @@
+AddWizardForUID()
+=================
+
+FUNKTION
+--------
+::
+
+    string* AddWizardForUID(string uid, string wizard);
+
+DEFINIERT IN
+------------
+::
+
+    /secure/master/userinfo.c
+
+ARGUMENTE
+---------
+::
+
+    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/sphinx/lfun/master/QueryUIDAlias.rst b/doc/sphinx/lfun/master/QueryUIDAlias.rst
new file mode 100644
index 0000000..04a4057
--- /dev/null
+++ b/doc/sphinx/lfun/master/QueryUIDAlias.rst
@@ -0,0 +1,65 @@
+QueryUIDAlias()
+===============
+
+FUNKTION
+--------
+::
+
+    varargs string* QueryUIDsForWizard(string uidalias, int recursive);
+
+DEFINIERT IN
+------------
+::
+
+    /secure/master/userinfo.c
+
+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/sphinx/lfun/master/QueryUIDsForWizard.rst b/doc/sphinx/lfun/master/QueryUIDsForWizard.rst
new file mode 100644
index 0000000..0055b97
--- /dev/null
+++ b/doc/sphinx/lfun/master/QueryUIDsForWizard.rst
@@ -0,0 +1,64 @@
+QueryUIDsForWizard()
+====================
+
+FUNKTION
+--------
+::
+
+    varargs string* QueryUIDsForWizard(string wizname, int recursive);
+
+DEFINIERT IN
+------------
+::
+
+    /secure/master/userinfo.c
+
+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/sphinx/lfun/master/QueryWizardsForUID.rst b/doc/sphinx/lfun/master/QueryWizardsForUID.rst
new file mode 100644
index 0000000..4d8179d
--- /dev/null
+++ b/doc/sphinx/lfun/master/QueryWizardsForUID.rst
@@ -0,0 +1,71 @@
+QueryWizardsForUID()
+====================
+
+FUNKTION
+--------
+::
+
+    varargs string* QueryWizardsForUID(string uid, int recursive);
+
+DEFINIERT IN
+------------
+::
+
+    /secure/master/userinfo.c
+
+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/sphinx/lfun/master/RemoveWizardFromUID.rst b/doc/sphinx/lfun/master/RemoveWizardFromUID.rst
new file mode 100644
index 0000000..406f3cf
--- /dev/null
+++ b/doc/sphinx/lfun/master/RemoveWizardFromUID.rst
@@ -0,0 +1,62 @@
+RemoveWizardFromUID()
+=====================
+
+FUNKTION
+--------
+::
+
+    string* RemoveWizardFromUID(string uid, string wizard);
+
+DEFINIERT IN
+------------
+::
+
+    /secure/master/userinfo.c
+
+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
+
