diff --git a/doc/efun/add_action b/doc/efun/add_action
index 8b0f778..19813d2 100644
--- a/doc/efun/add_action
+++ b/doc/efun/add_action
@@ -1,97 +1,72 @@
-add_action(E)
-FUNKTION:
-     void add_action(string fun, string cmd)
-     void add_action(string fun, string cmd, int flag)
+SYNOPSIS
+        #include <commands.h>
 
-ARGUMENTE:
-     fun
-	gerufene Methode
-     cmd
-	ausloesendes Verb
-     flag
-	Flag fuer unscharfe Interpretation
+        void add_action(string|closure fun, string cmd);
+        void add_action(string|closure fun, string cmd, int flag);
+        void add_action(string|closure fun);        /* veraltet */
 
-BESCHREIBUNG:
-     Generell: Das Verhalten dieser efun wird durch AddCmd aus
-               /std/thing/commands.c komfortabler widergespiegelt.
-               Darauf sollte man zurueckgreifen.
+BESCHREIBUNG
+        Setzt eine lokale Funktion fun, die aufgerufen wird, wenn der Spieler
+        das Kommandos <cmd< eintippt. Der Funktion werden die Argumente des
+        vom Spieler eingegebenen Kommandos als string uebergeben. Die
+        Funktion muss entweder 1 zurueck geben, wenn das Kommando erfolgreich
+        ausgefuehrt werden konnte, sonst 0.
 
-     Legt fuer "cmd" (ein Kommandoverb) eine im entsprechenden Objekt
-     zu rufende Methode fest.
+        Wenn das Kommando nicht erfolgreich ausgefuehrt werden konnte, sucht
+        der Parser weiter nach einer passenden Funktion, bis eine solche
+        1 zurueck liefert. Falls der Parser keine Funktion findet, wird an
+        den Spieler eine Fehlermeldung ausgegeben. ("Wie bitte?")
 
-     Diese Methode bekommt die Argumente als String uebergeben und
-     muss 0 (fuer einen Fehler) oder 1 (fuer Erfolg) zurueckgeben.
+        Wenn add_action() ohne das zweite Argument (string cmd) aufgerufen
+        wird, muss dieses mit add_verb() oder add_xverb() angegeben werden.
+        DIESE DEKLARATION IST JEDOCH VERALTET UND SOLLTE NICHT VERWENDET
+        WERDEN. Sie funktioniert auch nur, wenn USE_DEPRECATED gesetzt ist.
 
-     Der Parser durchsucht bei einer Spielereingabe die Liste der
-     eingetragenen Kommandos nach passenden Kommandos und ruft die
-     zugehoerigen Methoden in den Objekten bis eine der Methoden
-     1 zurueckgibt oder die Liste durchlaufen wurde. In dem Fall
-     kommt die Fehlermeldung (notify_fail()) zum Einsatz.
+        Die Funktion fun wird mit einem string als Argument aufgerufen, der
+        die Worte nach dem Verb in der Inputzeile enthaelt. Das Verb kann
+        mit der Efun query_verb() abgefragt werden. Das Verb ist immer das
+        erste Wort in der Inputzeile bis zum ersten Leerschlag.
 
-     Mit Werten != 0 fuer "flag" legt man eine unscharfe Auswertung
-     fest, im Beispiel: Die Methode "action_fun" bei einem
-      add_action("action_fun", "hops", 1);
-     wird sowohl beim Kommando "hops" als auch bei Kommandos wie
-     "hopse", "hopseblub", ... gerufen werden.
-     Dieses Flag sollte vorsichtig verwendet werden.
+        add_action() muss immer aus einer init() Routine heraus aufgerufen
+        werden. Das Objekt, welches das Kommando cmd definiert, muss sich in
+        der Umgebung des Spielers befinden; also entweder der Spieler selbst,
+        im Inventar des Spielers, der Raum, in dem sich der Spieler befindet
+        oder ein Objekt im gleichen Raum wie der Spieler. Wenn der Spieler
+        die Umgebung des Objekts verlaesst, werden alle von add_action()
+        definierten Kommandos automatisch entfernt.
 
-     Es gibt drei moegliche Verhaltensweise, die per "flag" eingeschaltet
-     werden koennen:
-     Wenn das Argument <flag> AA_SHORT (d.h. 1) ist, koennen Argumente von
-     cmd ohne einen Leerschlag an cmd angehaengt sein. An die Funktion fun
-     werden alle Zeichen nach dem ersten Leerschlag als Argument
-     uebergeben.
+        Die Kommandos lassen sich auch manuell entfernen. Die Efun dazu lautet
+        remove_actions().
 
-     Wenn <flag> AA_NOSPACE (d.h. 2) ist, koennen die Argumente wiederum
-     ohne Leerschlag ans Verb angehaengt sein. Im Unterschied zu AA_SHORT
-     werden alle Zeichen nach dem Verb als Argument an die Funktion
-     uebergeben. Die Zeichen, welche nicht durch einen Leerschlag vom
-     Verb getrennt sind, werden ZUSAETZLICH von query_verb() zurueck
-     gegeben.
+        Wenn das Argument <flag> AA_SHORT (d.h. 1) ist, koennen Argumente von
+        cmd ohne einen Leerschlag an cmd angehaengt sein. An die Funktion fun
+        werden alle Zeichen nach dem ersten Leerschlag als Argument
+        uebergeben.
 
-     Wenn <flag> AA_IMM_ARGS (3) ist, werden alle Zeichen nach dem Verb
-     als Argument uebergeben, nicht aber von query_verb() beruecksichtigt.
+        Wenn <flag> AA_NOSPACE (d.h. 2) ist, koennen die Argumente wiederum
+        ohne Leerschlag ans Verb angehaengt sein. Im Unterschied zu AA_SHORT
+        werden alle Zeichen nach dem Verb als Argument an die Funktion
+        uebergeben. Die Zeichen, welche nicht durch einen Leerschlag vom
+        Verb getrennt sind, werden ZUSAETZLICH von query_verb() zurueck
+        gegeben.
 
+        Wenn <flag> AA_IMM_ARGS (3) ist, werden alle Zeichen nach dem Verb
+        als Argument uebergeben, nicht aber von query_verb() beruecksichtigt.
 
-BEMERKUNGEN:
-     (1) add_action() sollte immer innerhalb von init() benutzt werden
-     (2) das definierende Objekt muss im inventory des Spielers oder
-         environment() des kommandogebenden Lebewesens sein
-     (3) im init() spaeter eingetragene Kommandos oder spaeter hinzu-
-         kommende Objekte werden bei der Kommandoauswertung VOR den
-         alten beruecksichtigt
-         (Daher bewegt sich das Xtool der Magier regelmaessing neu in
-          das Inventory, um immer "erstes" Objekt zu sein.)
+        Wenn -<flag> eine negative Zahl ist, muss das vom Spieler eingegebene
+        Kommando nur mit den ersten <flag> Zeichen von cmd uebereinstimmen.
 
-BEISPIELE:
-     // ein Kommando in einem Schirm
-     void init() {
-      ::init();
-      add_action("action_oeffne", "oeffne");
-     }
+        Als Name fuer die Funktion fun duerfen keine geschuetzten Namen wie
+        zum Beispiel create, init, reset, heart_beat etc. verwendet werden
+        (eine vollstaendige Liste findet man unter /doc/applied/).
 
-     int action_oeffne(string str) {
-      if(stringp(str) && id(str))	// Argument da und bin ich gemeint?
-       write("Du oeffnest den Schirm.\n");
-       say(break_string(this_player()->Name(WER)+" oeffnet einen Schirm.",78));
-       return 1;
-      }
-      notify_fail("Was willst Du oeffnen?\n");
-      return 0;
-     }
+BEISPIELE
+        add_action("geh_rein", "betrete");
 
-     // frueher beliebt um Spieler lahmzulegen, da es _alle_ Kommandos 
-     // triggert -> siehe heute jedoch dafuer eher P_DISABLE_COMMANDS
-     // Achtung: siehe Implikation von (3)
-     add_action("action_nothing", "",1 );
-     ...
-     int action_nothing(string str) {
-      write("Dir sind die Haende gebunden.\n");
-      return 1;
-     }
+        Wenn der Spieler "betrete" eintippt, wird die Funktion geh_rein()
+        aufgerufen.
 
-     Beispiele fuer die Verwendung des Argumentes "flag":
-      add_action("disfunc", "disconnect", AA_NOSPACE);
+        add_action("disfunc", "disconnect", AA_NOSPACE);
 
         Die Funktion disfunc() wird aufgerufen, wenn der Spieler "disconnect"
         oder eine Abkuerzung davon (zum Beispiel "di" oder "discon") eingibt.
@@ -99,14 +74,15 @@
         Um rauszufinden, was der Spieler tatsaechlich eingegeben hat, muss
         query_verb() aufgerufen werden.
 
-      add_action("fun", "cmd");
-      add_action("fun", "scmd", AA_SHORT);
-      add_action("fun", "ncmd", AA_NOSPACE);
-      add_action("fun", "icmd", AA_IMM_ARGS);
+        add_action("fun", "cmd");
+        add_action("fun", "scmd", AA_SHORT);
+        add_action("fun", "ncmd", AA_NOSPACE);
+        add_action("fun", "icmd", AA_IMM_ARGS);
 
         Die folgende Tabelle zeigt, was die oben aufgefuehrten Kommandos bzw.
         <flag> fuer Werte an query_verb() und als Argumente an die Funktion
         fun uebergeben:
+
         |-------------------|--------------|----------------------------|
         | Eingabe           | query_verb() | Argument der Funktion fun  |
         |-------------------|--------------|----------------------------|
@@ -132,18 +108,10 @@
         | "icmdbla fasel"   | "icmd"       | "bla fasel"                |
         |-------------------|--------------|----------------------------|
 
-
 GESCHICHTE
         Das Argument <flag> < 0 wird seit 3.2@127 unterstuetzt, aber erst ab
         LDMud 3.2.8 richtig implementiert. LDMud 3.2.9 fuehrte das AA_IMM_ARGS
         Flag ein. Ab LDMud 3.5 kann man Closures als Funktionen uebergeben.
 
-SIEHE AUCH:
-			remove_action(E), init(E), enable_commands(E)
-     Fehlermeldung:	notify_fail(E), _notify_fail(E)
-     Argumentstring:	query_verb(E), _unparsed_args(L)
-     obsolet:		add_verb(E), add_xverb(E)
-     alternativ:	AddAction(L), AddCmd(L)
-                        P_DISABLE_COMMANDS
-
-24. Maerz 2004 Gloinson@MG
+SIEHE AUCH
+        query_verb(E), query_command(E), add_verb(E), add_xverb(E), init(A)
