diff --git a/doc/wiz/channels b/doc/wiz/channels
new file mode 100644
index 0000000..6c7af32
--- /dev/null
+++ b/doc/wiz/channels
@@ -0,0 +1,170 @@
+
+Der Ebenenverwalter channeld.
+-----------------------------
+
+Alle noetigen Defines sind in /p/daemon/channel.h definiert. Wenn man den
+channeld verwenden will, bitte dieses inkludieren.
+
+Typischer Aufruf: CHMASTER->join("Abenteuer", this_object());
+
+
+Oeffentliche Funktionen
+------------------------
+
+Zuerst die wohl am haeufigsten verwendeten Funktionen, beitreten, senden,
+verlassen.
+
+public int join(string chname, object joining)
+
+    Objekt <joining> betritt Ebene <chname>. Dies wird zugelassen, wenn es
+    die Berechtigung hat und noch nicht Mitglied ist.
+    (Man kann einer Ebene nicht zweimal beitreten.)
+    Wenn <joining> der urspruengliche Ersteller der Ebene ist, wird er
+    automatisch zum neuen Supervisor (SV).
+    Rueckgabewert: 0 bei Erfolg, E_ACCESS_DENIED (-1) sonst.
+    Hinweis: Das Objekt <joining> muss einen string bei Aufruf von name()
+    zurueckgeben.
+
+
+public varargs int send(string chname, object sender, string msg, int type)
+  
+    Nachricht <msg> vom Typ <type> mit Absender <pl> auf der Ebene <chname>
+    posten, sofern <pl> dort senden darf.
+    <type> ist einer der Nachrichtentypen aus "channel.h":
+        MSG_SAY     0     normale Nachricht
+        MSG_EMOTE   1     Emote
+        MSG_GEMOTE  2     Genitiv-Emote
+
+    Die Nachricht <msg> wird an die Funktion ChannelMessage() in den Ebenen-
+    Mitgliedern uebergeben und von dieser ausgegeben.
+    
+    Rueckgabewerte:
+    0                     Nachricht erfolgreich gesendet
+    E_ACCESS_DENIED  -1   Zugriff verweigert
+    E_NOT_MEMBER     -3   Objekt <sender> hat die Ebene nicht betreten
+    E_EMPTY_MESSAGE  -4   Die Nachricht hatte keinen Inhalt
+
+
+public int leave(string chname, object leaving)
+  
+    Objekt <leaving> verlaesst Ebene <chname>.
+    Wenn danach kein Zuhoerer mehr auf der Ebene ist, loest sie sich auf.
+
+    Zugriffsrechte werden dabei ueberprueft, obwohl es normalerweise keinen
+    Grund geben duerfte, das Verlassen einer Ebene zu verbieten. Es ist
+    allerdings technisch durchaus moeglich, dem Objekt <leaving> das
+    Verlassen zu verweigern, z.B. auf Grund eines Banns.
+    Rueckgabewerte:
+    0           erfolgreich verlassen
+    E_ACCESS_DENIED  -1  Zugriff verweigert
+    E_NOT_MEMBER     -2  Objekt <leaving> war gar nicht Mitglied
+
+
+public varargs int new(string ch_name, object owner, string|closure desc,
+                       int channel_flags)
+  
+    Erstellt eine neue Ebene <ch_name> mit <owner> als Ebenenbesitzer. Wird
+    auch vom channeld selbst verwendet, um die in channeld.init definierten
+    Ebenen zu erzeugen. Inaktive Ebenen werden ebenfalls ueber new()
+    reaktiviert, mitsamt ihrer bestehenden History.
+
+    <ch_name> Darf nicht 0 oder leer sein. Zur Anzeige wird der Name in der
+              angegebenen Schreibweise verwendet, fuer interne Zwecke wird
+              aber immer der kleingeschriebene Name genutzt. Das gilt auch
+              fuer die Pruefung von Zugriffsrechten.
+    <desc>    Kann die statische Beschreibung der Ebene sein oder eine 
+              Closure, die dynamisch aktualisierte Infos ausgibt.
+    <owner>   Besitzer des Channels, Supervisor (SV) genannt.
+              Sollte eine Funktion ch_check_access() definieren, die gerufen
+              wird, wenn eine Ebenenaktion vom Typ join/leave/send/list/users
+              eingeht.
+    <channel_flags> 
+
+    Rueckgabewerte:
+    0   Ebene erfolgreich erstellt.
+    E_ACCESS_DENIED  -1 
+      - Channelname existiert schon
+      - Maximalzahl Channels erreicht
+      - Channelname war Unsinn (leer oder 0)
+      - keine Beschreibung angegeben, und es existiert auch keine passende
+        inaktive Ebene
+      - kein Supervisor (SV) angegeben
+      - angegebener Supervisor darf keine Ebenen erstellen (Bann, oder
+        verbotener Name)
+      - bei Reaktivierung einer inaktiven Ebene wird ein neuer Supervisor
+        angegeben, aber die Ebene war mit unveraenderlichem Supervisor
+        (CHF_FIXED_SUPERVISOR) initialisiert worden; ein neuer Supervisor
+        wird dann abgelehnt, damit die Kontrolle ueber die Ebene nicht von
+        anderen Objekten uebernommen werden kann.
+
+    Fuer die Erstellung und Funktionsweise von Supervisor-Objekten wird
+    auf 
+
+
+public int|mapping list(object pl)
+  
+    Gibt ein Mapping mit allen Ebenen aus, die das Objekt <pl> lesen kann,
+    oder den Fehlercode E_ACCESS_DENIED (-1).
+    Struktur des Mappings:
+     ([ string chname, ({object* members, closure access_cl, string desc,
+                         object supervisor, string ch_name }) ])
+
+
+public string|string* find(string chname, object pl)
+  
+    Ebene suchen, deren Name <chname> enthaelt, und auf der Objekt <pl> 
+    senden darf.
+    Rueckgabewerte:
+    - den gefundenen Namen als String
+    - String-Array, wenn es mehrere Treffer gibt
+    - 0, wenn es keinen Treffer gibt
+
+
+public int|<int|string>** history(string chname, object pl)
+  
+    Ebenen-History abfragen. Objekt <pl> muss berechtigt sein, dem Channel
+    <chname> beizutreten.
+    Rueckgabewert: E_ACCESS_DENIED (-1) bei fehlender Berechtigung, ansonsten
+    ({string channelname, string sender, string msg, int msg_type})
+
+
+public int transfer_ownership(string chname, object new_owner)
+  
+    Aendert den Ersteller/Besitzer der Ebene.
+    Achtung: das ist nicht das gleiche wie der aktuelle Supervisor (SV)!
+    Nur der aktuelle Besitzer, Supervisor oder EM+ darf die Ebene
+    verschenken.
+
+
+public int change_channel_flags(string chname, int newflags)
+  
+    Aendert die Zugriffsflags der Ebene. Hierbei handelt es sich nicht um die
+    Stufenlimits fuer join() oder send().
+    Nur der aktuelle Supervisor (SV), der Ersteller, oder EM+ duerfen die
+    Flags aendern.
+    Die moeglichen Flags sind die, die auch in channeld.init verwendet werden
+    und in /p/daemon/channel.h definiert sind:
+    CHF_FIXED_SUPERVISOR 1    kein Wechsel des Supervisor erlaubt
+
+    Folgende Flags werden nur in Supervisor-Objekten verwendet:
+    CH_ACCESS_WIZARD  1       reine Magierebene
+    CH_ACCESS_NOGUEST 2       keine Gaeste erlaubt
+
+
+Funktionen fuer Erzmagierkommandos:
+
+public int remove_channel(string chname, object pl)
+  Wird aus der Shell gerufen, fuer das Erzmagier-Kommando "kill".
+
+public int clear_history(string chname)
+  Wird aus der Shell aufgerufen, fuer das Erzmagier-Kommando "clear".
+
+
+Siehe auch:
+-----------
+
+    Init-Datei:   channeld.init
+    Supervisor:   channel-supervisor
+    Beispiele:    /doc/beispiele/ebenen/supervisor.c
+                  /doc/beispiele/ebenen/supervisor-thing.c
+
