diff --git a/doc/efun/query_actions b/doc/efun/query_actions
index 688ddc3..59e9c44 100644
--- a/doc/efun/query_actions
+++ b/doc/efun/query_actions
@@ -2,37 +2,32 @@
         #include <commands.h>
         #include <sent.h>
 
-        mixed * query_actions(object|string ob, mixed mask_or_verb)
+        mixed * query_actions(object ob, mixed mask_or_verb)
 
-BESCHREIBUNG
-        Das erste Argument von query_actions() ist entweder ein Objekt
-        oder der Dateiname eines Objekts. Das zweite Argument muss
-        entweder eine Bitmaske (ein Integer) oder ein String sein.
+DESCRIPTION
+        query_actions takes either an object or a filename as first
+        argument and a bitmask (int) or string as a second argument.
+        If the second argument is a string, query_actions() will return
+        an array containing information (see below) on the verb or
+        zero if the living object "ob" cannot use the verb. If the
+        second argument is a bitmask, query_actions() will return a
+        flat array containing information on all verbs added to ob.
+        The second argument is optional (default is QA_VERB).
+            QA_VERB       ( 1):  the verb
+            QA_TYPE       ( 2):  type
+            QA_SHORT_VERB ( 4):  short_verb
+            QA_OBJECT     ( 8):  object
+            QA_FUNCTION   (16): function
 
-        Ist das zweite Argument ein String, liefert query_actions() ein
-        Array mit Informationen ueber das Verb oder 0 zurueck, wenn
-        das lebendige Objekt <ob> das Verb nicht verwenden kann.
+        "type" is one of the values defined in <sent.h> 
+        (which is provided with the parser source).
 
-        Wenn das zweite Argument ein Integer ist, liefert query_actions()
-        ein flaches Array mir den Informationen entsprechend der Bitmaske
-        zu allen Verben von <ob>.
+        SENT_PLAIN        added with add_action (fun, cmd);
+        SENT_SHORT_VERB   added with add_action (fun, cmd, AA_SHORT);
+        SENT_NO_SPACE     added with add_action (fun, AA_NOSPACE);
+        SENT_MARKER       internal, won't be in the returned array
+        negative value: The verb given by the player has to match only
+          the leading -<value> characters of the action's verb.
 
-            QA_VERB         ( 1):   das Verb,
-            QA_TYPE         ( 2):   der Typ,
-            QA_SHORT_VERB   ( 4):   das short_verb,
-            QA_OBJECT       ( 8):   das Objekt,
-            QA_FUNCTION     (16):   die Funktion.
-
-        Der Typ ist ein Wert wie in <sent.h> definiert, der mit dem
-        Driver-Quellcode geliefert wird.
-
-            SENT_PLAIN       durch add_action(fun, cmd) hinzugefuegt
-            SENT_SHORT_VERB  durch add_action(fun, cmd, 1) hinzugefuegt
-            SENT_NO_SPACE    durch add_action(fun); add_xverb(cmd);
-            SENT_NO_VERB     nur eine Funktion mit add_action(fun), ohne Verb
-            SENT_MARKER      intern, ist nicht im Array enthalten
-            negativer Wert   das Verb muss nur in den ersten -<wert> Zeichen
-                             uebereinstimmen.
-
-SIEHE AUCH
+SEE ALSO
         add_action(E), init(A)
