diff --git a/doc/beispiele/ebenen/supervisor.txt b/doc/beispiele/ebenen/supervisor.txt
deleted file mode 100644
index 7637996..0000000
--- a/doc/beispiele/ebenen/supervisor.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-Supervisoren fuer Ebenen
-************************
-
-Die Supervisoren von Ebenen werden vom CHANNELD gefragt, ob ein Objekt eine
-bestimmte Aktion auf einer bestimmten Ebenen tun darf, z.B. Betreten einer
-Ebene oder Senden auf einer Ebene. Die SVs sind ebenfalls immer Zuhoerer auf
-der Ebene.
-
-Wird ein SV zerstoert, wird im Normalfall ein neuer SV aus dem Kreise der
-aktuellen Zuhoerer bestimmt, ueblicherweise das am laengsten zuhoerende
-Objekt.
-
-Betritt ein Objekt, was eine Ebene erschaffen hat (der erste Supervisor), eine
-Ebene nach Verlassen erneut, uebernimmt es automatisch die SV-Rolle wieder,
-sofern das Objekt *kein* Spieler oder Magier ist.
-
-
-Erstellen von Supervisoren
-==========================
-
-Im einfachsten Fall wird /std/channel_supervisor geerbt, ein Name konfiguriert
-und das systemweite Init-File fuer Ebenen eingelesen. Anschliessend erhaelt
-man das Standardverhalten, was im Init-File konfiguriert ist. Ein Beispiel
-hierfuer findet sich /doc/beispiele/ebenen/supervisor.c.
-
-Man kann ein bestehendes Objekt zu einem SV machen, indem man
-/std/channel_supervisor zusaetzlich erbt. In diesem Fall muss man ggf. auf
-name() und Name() aufpassen, sofern das Objekt auch /std/thing/description
-oder aehnliche erbt und gezielt die von dort geerbten lfuns aufrufen. Ein
-Beispiel hierfuer steht in /doc/beispiele/ebenen/supervisor-thing.c.
-
-Will man einen SV fuer eine Ebene konfigurieren, die keine Standardebene ist,
-kann man ein eigenes Init-File einlesen (Format s. u.). In diesem Fall ist
-aber zu beachten, dass man auch selber Sorge dafuer tragen muss, dass die
-Ebene erstellt wird (CHANNELD->new()).
-
-Will man einen SV mit einem gaenzlich anderen Verhalten bauen, so ist auch das
-moeglich, indem man die lfun
-  public int ch_check_access(string ch, object user, string cmd)
-ueberschreibt. Diese wird vom CHANNELD im SV gerufen. Gibt sie eine 1 zurueck,
-darf das Objekt <user> auf der Ebene <ch> die Aktion <cmd> ausfuehren.
-Anderenfalls muss 0 zurueckgeben werden.
-<cmd> ist hierbei eine der in /p/daemon/channel.h definierten Kommandos.
-
-Die Ebene <ch> wird immer kleingeschrieben uebergeben. Auch wenn der Name
-Spielern case-sensitiv angezeigt wird, kann es keine zwei Ebenen geben,
-welche sich nur in Gross-/Kleinschreibung unterscheiden und intern erfolgt
-die Verwaltung *immer* kleingeschrieben - dies gilt auch fuer die
-Rechtepruefung.
-
-
-Eigenes Init-File
------------------
-
-Das Init-File hat folgenden Aufbau:
-<name>:<recv>:<send>:<accessflags>:<channelflags>:<desc>:<supervisor>
-z.B.
-abgilde: 0: 0: 0: 0:Fuer Abenteurer:/gilden/abenteurer
-
-Fuer SVs sind nur die Felder <name>, <recv>, <send> und <accessflags>
-relevant. Das vordefinierte ch_check_access() entscheidet wie folgt anhand der
-Angaben:
-
-Verlassen (C_LEAVE) ist immer erlaubt. Die anderen Aktionen sind in zwei
-Gruppen eingeteilt:
-  1) RECV. Die Aktionen dieser Gruppe sind Suchen (C_FIND), Auflisten
-           (C_LIST) und Betreten (C_JOIN).
-  2) SEND. Die Aktion dieser Gruppe ist zur Zeit nur Senden (C_SEND).
-
-Aktionen werden zugelassen, wenn Spieler/MagierLevel groesser oder gleich ist
-wie die fuer die jeweilige Aktionsgruppe RECV oder SEND festgelegte Stufe.
-
-Handelt es sich um eine Magierebene (<accessflags> enthaelt das Flag
-CH_ACCESS_WIZARD), muss die Magierstufe des Spielers groesser oder gleich sein
-wie die Mindeststufe der Ebene. Ansonsten wird gegen den Spielerlevel geprueft.
-Enthaelt <accessflags> das Flag CH_ACCESS_NOGUEST, darf die Ebene nicht von
-Gaesten benutzt werden (weder Empfangen noch Senden).
-
-Wenn RECV_LVL oder SEND_LVL auf -1 gesetzt ist, sind die Aktionen der
-jeweiligen Gruppen komplett geblockt.
-
-Bemerkung: Im Initfile sollten nur Blueprints als SVs verwendet werden - aber
-im Allgemeinen koennen SVs auch Clones sein!
-
diff --git a/doc/lfun/ch_check_access b/doc/lfun/ch_check_access
new file mode 100644
index 0000000..9da1566
--- /dev/null
+++ b/doc/lfun/ch_check_access
@@ -0,0 +1,46 @@
+ch_check_access()
+****************
+
+
+FUNKTION
+========
+
+   public int ch_check_access(string ch, object user, string cmd)
+
+
+DEFINIERT IN
+============
+
+   /std/channel_supervisor.c
+
+
+BESCHREIBUNG
+============
+
+   Verwaltet die Zugriffsrechte auf Ebenen. Kann ueberschrieben werden, wenn
+   man in einem eigenen Ebenen-Supervisor-Objekt ein anderes als das
+   Standardverhalten realisieren moechte.
+
+   Die Funktion wird als Closure in den Ebenendaten des Ebenenverwalters
+   abgelegt und vom Channeld im Supervisor ausgewertet.
+
+
+RUECKGABEWERTE
+==============
+
+   Gibt die Closure 1 zurueck, darf das Objekt <user> die Aktion <cmd> auf
+   der Ebene namens <ch> ausfuehren. Anderenfalls muss 0 zurueckgegeben
+   werden. <cmd> ist hierbei einer der in /p/daemon/channel.h definierten
+   Kommandotypen.
+
+
+SIEHE AUCH
+==========
+
+   lfuns:      ch_read_init_file()
+               ch_set_sv_name()
+   Ebenen:     channels
+   Init-File:  channeld.init
+   Beispiele:  /doc/beispiele/ebenen/supervisor.c
+               /doc/beispiele/ebenen/supervisor-thing.c
+
diff --git a/doc/lfun/ch_read_init_file b/doc/lfun/ch_read_init_file
new file mode 100644
index 0000000..e2872bc
--- /dev/null
+++ b/doc/lfun/ch_read_init_file
@@ -0,0 +1,41 @@
+ch_set_sv_name()
+****************
+
+
+FUNKTION
+========
+
+   protected varargs int ch_read_init_file(string fname)
+
+
+DEFINIERT IN
+============
+
+   /std/channel_supervisor.c
+
+
+BESCHREIBUNG
+============
+
+   Liest die Ebenenkonfiguration aus der Datei <fname> ein. Wenn dieses
+   Argument fehlt, wird der Mudstandard eingelesen, das ist derzeit
+   /p/daemon/channeld.init.
+
+
+RUECKGABEWERTE
+==============
+
+   -1     es konnten keine Daten aus der Datei gelesen werden
+   >= 0   Anzahl der Ebenen-Datensaetze, die eingelesen wurden
+
+
+SIEHE AUCH
+==========
+
+   lfuns:      ch_set_sv_name()
+   Ebenen:     channels
+   Init-File:  channeld.init
+   Beispiele:  /doc/beispiele/ebenen/supervisor.c
+               /doc/beispiele/ebenen/supervisor-thing.c
+
+
diff --git a/doc/lfun/ch_set_sv_name b/doc/lfun/ch_set_sv_name
new file mode 100644
index 0000000..8abccaf
--- /dev/null
+++ b/doc/lfun/ch_set_sv_name
@@ -0,0 +1,33 @@
+ch_set_sv_name()
+****************
+
+
+FUNKTION
+========
+
+   protected void ch_set_sv_name(string new_sv_name)
+
+
+DEFINIERT IN
+============
+
+   /std/channel_supervisor.c
+
+
+BESCHREIBUNG
+============
+
+   Stellt <new_sv_name> als neuen Namen fuer dieses Ebenen-Supervisor-Objekt
+   ein.
+
+
+SIEHE AUCH
+==========
+
+   lfuns:      ch_read_init_file()
+   Ebenen:     channels
+   Init-File:  channeld.init
+   Beispiele:  /doc/beispiele/ebenen/supervisor.c
+               /doc/beispiele/ebenen/supervisor-thing.c
+
+
diff --git a/doc/wiz/channel-supervisor b/doc/wiz/channel-supervisor
new file mode 100644
index 0000000..816bf24
--- /dev/null
+++ b/doc/wiz/channel-supervisor
@@ -0,0 +1,78 @@
+Supervisoren fuer Ebenen
+************************
+
+    Die Supervisoren (im Folgenden kurz SV) von Ebenen werden vom channeld
+    gefragt, ob ein Objekt eine bestimmte Aktion auf einer bestimmten Ebenen
+    ausfuehren darf, z.B. Betreten einer Ebene oder Senden auf einer Ebene.
+    Die SVs sind selbst ebenfalls immer Zuhoerer auf der Ebene.
+
+    Wird ein SV zerstoert, wird im Normalfall ein neuer SV aus dem Kreise der
+    aktuellen Zuhoerer bestimmt, ueblicherweise das am laengsten zuhoerende
+    Objekt.
+
+    Betritt ein Objekt, das eine Ebene erschaffen hat (der erste Supervisor), 
+    eine Ebene nach Verlassen erneut, uebernimmt es automatisch die SV-Rolle
+    wieder, sofern das Objekt *kein* Spieler oder Magier ist.
+
+
+Erstellen von Supervisoren
+==========================
+
+    Im einfachsten Fall wird /std/channel_supervisor geerbt, ein Name
+    konfiguriert und das systemweite Init-File fuer Ebenen eingelesen. 
+    Anschliessend erhaelt man das Standardverhalten, was im Init-File
+    konfiguriert ist. Ein Beispiel hierfuer findet sich 
+    /doc/beispiele/ebenen/supervisor.c.
+
+    Man kann die SV-Funktionalitaet in einem bestehenden Objekt ergaenzen,
+    indem man /std/channel_supervisor zusaetzlich erbt. Hierbei ist zu
+    beachten, dass channel_supervisor.c selbst bereits die Funktionen name()
+    und Name() definiert und dort (undekliniert) den Namen zurueckgibt, der
+    per ch_set_sv_name() eingestellt wurde.
+    
+    Wenn also das erbende Objekt deklinierte Namen ausgeben soll oder
+    einen anderen Namen als den SV-Namen, muss im erbenden Objekt name()
+    ueberschrieben werden. Dabei ist zu beachten, dass die ueberschreibende
+    Funktion explizit das Objekt angeben muss, in dem das geerbte name()
+    gerufen werden soll, d.h. beispielsweise   return thing::name();   statt
+    nur ::name();
+    
+    Alternativ kann man die Inherit-Reihenfolge geeignet waehlen, so dass
+    channel_supervisor::name() schon dadurch ueberschrieben wird.
+    Ein Beispiel hierfuer steht in /doc/beispiele/ebenen/supervisor-thing.c.
+
+    Will man einen SV fuer eine Ebene konfigurieren, die keine Standardebene
+    ist, kann man ein eigenes Init-File einlesen (Format siehe Manpage
+    "channeld.init"). In diesem Fall ist aber zu beachten, dass man
+    durch Aufruf von CHMASTER->new() selber Sorge dafuer tragen muss, dass
+    die Ebene erstellt wird. 
+    (Eine Standardebene ist eine Ebene, die in der globalen
+    Konfigurationsdatei /p/daemon/channeld.init aufgefuehrt ist und daher
+    vom Channeld automatisch erzeugt wird.)
+
+    Will man einen SV mit einem gaenzlich anderen Verhalten bauen, so ist
+    auch das moeglich, indem man die lfun
+
+      public int ch_check_access(string ch, object user, string cmd)
+
+    ueberschreibt. Diese wird vom channeld im SV gerufen. Gibt sie eine 1
+    zurueck, darf das Objekt <user> auf der Ebene <ch> die Aktion <cmd>
+    ausfuehren.  Anderenfalls muss 0 zurueckgeben werden. <cmd> ist hierbei
+    eines der in /p/daemon/channel.h definierten Kommandos.
+
+    Die Ebene <ch> wird immer kleingeschrieben uebergeben. Auch wenn der
+    Name Spielern case-sensitiv angezeigt wird, kann es keine zwei Ebenen
+    geben, welche sich nur in Gross-/Kleinschreibung unterscheiden und intern
+    erfolgt die Verwaltung *immer* kleingeschrieben - dies gilt auch fuer die
+    Rechtepruefung.
+
+
+Siehe auch:
+-----------
+    
+    Ebenen:     channels
+    Init-File:  channeld.init
+    Beispiele:  /doc/beispiele/ebenen/supervisor.c
+                /doc/beispiele/ebenen/supervisor-thing.c
+    lfuns:      ch_read_init_file()
+                ch_set_sv_name()
diff --git a/doc/wiz/channeld.init b/doc/wiz/channeld.init
new file mode 100644
index 0000000..22e2491
--- /dev/null
+++ b/doc/wiz/channeld.init
@@ -0,0 +1,81 @@
+Initialisierung der Ebenen
+--------------------------
+
+    Standardmaessig wird die Ebenenliste im Morgengrauen ueber die Datei
+    /p/daemon/channeld.init erzeugt. Diese wird vom channeld eingelesen und
+    aus den Angaben die Ebenenkonfiguration vorgenommen.
+
+    Im Homemud wird stattdessen die Datei /p/daemon/channeld.init.testmud
+    verwendet, die viele Standardebenen nicht enthaelt, weil in einem
+    "nackten" Homemud die meisten Ebenenbesitzer nicht existieren und daher
+    das Laden des channeld zu Fehlern fuehren wuerde.
+
+    Die Zugriffsrechte fuer die Ebenen werden von einem sogenannten
+    Supervisor (SV) verwaltet und durchgesetzt. Der channeld fragt den fuer
+    eine Ebene zustaendigen Supervisor, ob die angeforderte Aktion erlaubt
+    ist. Im Fall des channeld uebernitmm das Objekt /p/daemon/channel-sv
+    diese Aufgabe. 
+    
+    Jeder Supervisor liest die Rechte-Konfiguration aus der Init-Datei ein.
+    Standardmaessig ist dies die globale Datei, man kann aber auch eigene
+    festlegen.
+
+
+Struktur des Init-Files
+-----------------------
+
+    Das Init-File hat folgenden Aufbau:
+
+      <name>:<recv>:<send>:<accessflags>:<channelflags>:<desc>:<supervisor>
+    
+    z.B.
+
+      abgilde: 0: 0: 0: 0:Fuer Abenteurer:/gilden/abenteurer
+      Tod:     0:-1: 0: 1:Wer stirbt wann?:/room/death/death_room
+
+    Fuer SVs sind nur die Felder <name>, <recv>, <send> und <accessflags>
+    relevant. Das vordefinierte ch_check_access() entscheidet wie folgt
+    anhand der Angaben:
+
+    Verlassen (C_LEAVE) ist so gut wie immer erlaubt, siehe man channels. Die
+    anderen Aktionen sind in zwei Gruppen eingeteilt:
+
+      1) RECV. Die Aktionen dieser Gruppe sind Suchen (C_FIND), Auflisten
+               (C_LIST) und Betreten (C_JOIN).
+      2) SEND. Die Aktion dieser Gruppe ist zur Zeit nur Senden (C_SEND).
+
+    Aktionen werden zugelassen, wenn Spieler-/Magierlevel mindestens die fuer
+    die jeweilige Aktionsgruppe RECV oder SEND festgelegte Stufe ist.
+
+    Enthaelt <accessflags> das Flag CH_ACCESS_WIZARD, handelt es sich um eine
+    Magierebene, und die Magierstufe des Spielers muss mindestens die
+    Mindeststufe der Ebene sein. Ansonsten wird gegen den Spielerlevel
+    geprueft.
+    Enthaelt <accessflags> das Flag CH_ACCESS_NOGUEST, darf die Ebene nicht
+    von Gaesten benutzt werden (weder Empfangen noch Senden).
+
+    Wenn RECV_LVL oder SEND_LVL auf -1 gesetzt ist, sind die Aktionen der
+    jeweiligen Gruppen komplett geblockt.
+
+
+Hinweise:
+---------
+
+    Im Initfile sollten nur Blueprints als SVs verwendet werden -
+    aber im Allgemeinen koennen SVs auch Clones sein!
+
+    Das Initfile fuer Homemuds heisst /p/daemon/channeld.init.testmud. In
+    dieser Datei sind nicht alle Standardebenen vorkonfiguriert, die es im
+    echten Morgengrauen gibt.
+
+
+Siehe auch:
+-----------
+
+    Konzepte:  channels
+    Beispiele: /doc/beispiele/ebenen/supervisor.c
+               /doc/beispiele/ebenen/supervisor-thing.c
+               /doc/beispiele/ebenen/supervisor.txt
+    lfun:      ch_read_init_file()
+               ch_set_sv_name()
+
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
+
