diff --git a/doc/efun/functionlist b/doc/efun/functionlist
index 2845648..7ac8e34 100644
--- a/doc/efun/functionlist
+++ b/doc/efun/functionlist
@@ -1,56 +1,55 @@
-GESCHUETZT
 SYNOPSIS
         #include <functionlist.h>
         #include <lpctypes.h>
 
         mixed * functionlist(object|lwobject|string ob, int flags)
 
-BESCHREIBUNG
-        Liefert ein Array mit Informationen zu den Lfuns von <ob>. Fuer jede
-        Funktion werden 1 bis 4 Werte (abhaengig von <flags>) in das Ergebnis
-        eingetragen, und zwar in folgender Reihenfolge:
-          - der Name der Funktion
-          - die Flags der Funktion (vergleiche weiter unten)
-          - den Rueckgabetyp (aufgelistet in <lpctypes.h>)
-          - die Anzahl Argumente, die die Funktion akzeptiert.
+DESCRIPTION
+        Returns an array with information about <ob>s lfunctions. For every
+        function, 1 to 4 values (depending on <flags>) are stored in
+        the result array conveying in this order:
+          - the name of the function
+          - the function flags (see below)
+          - the return type (listed in <lpctypes.h>)
+          - the number of accepted argumens
 
-        <ob> kann als normales oder leichtgewichtiges Objekt oder als
-        Objektname uebergeben werden. Im zweiten Fall versucht die Efun
-        nicht, das Objekt vorher zu laden.
+        <ob> may be given as regular or lightweight object or as a filename.
+        In the latter case, the efun does not try to load the object before
+        proceeding.
 
-        <flags> bestimmt sowohl, welche Informationen im Ergebnis gesammelt
-        werden, als auch, fuer welche Funktionen die Pruefung durchgefuehrt
-        wird. Der Wert von <flags> wird durch binaere Veroderung folgender
-        Konstanten aus <functionlist.h> festgelegt:
+        <flags> determines both which information is returned for every
+        function, and which functions should be considered at all.
+        Its value is created by bin-or'ing together following flags from
+        <functionlist.h>:
 
-        Festlegen der gesammelten Information:
-            RETURN_FUNCTION_NAME        liefert den Funktionsnamen
-            RETURN_FUNCTION_FLAGS       liefert die Flags der Funktion
-            RETURN_FUNCTION_TYPE        liefert den Rueckgabetyp der Funktion
-            RETURN_FUNCTION_NUMARG      liefert die Anzahl moeglicher
-                                        Argumente.
+          Control of returned information:
+            RETURN_FUNCTION_NAME    include the function name
+            RETURN_FUNCTION_FLAGS   include the function flags
+            RETURN_FUNCTION_TYPE    include the return type as an integer
+            RETURN_FUNCTION_LPCTYPE include the return type as lpctype value
+            RETURN_FUNCTION_NUMARG  include the number of arguments.
 
-            RETURN_FUNCTION_ARGTYPE     ist definiert, aber nicht
-                                        implementiert.
+            The name RETURN_FUNCTION_ARGTYPE is defined but not implemented.
 
-        Festlegen der geprueften Funktionen:
-            NAME_INHERITED      geerbte Funktionen nicht beachten
-            TYPE_MOD_STATIC     static deklarierte Funktion nicht beachten
-            TYPE_MOD_PRIVATE    private deklarierte Funktionen nicht beachten
-            TYPE_MOD_PROTECTED  protected deklarierte Funktionen nicht
-                                beachten
-            NAME_HIDDEN         nur beachten, wenn sichtbar durch Vererbung
+          Control of listed functions:
+            NAME_INHERITED      don't list if defined by inheritance
+            TYPE_MOD_STATIC     don't list if static function
+            TYPE_MOD_PRIVATE    don't list if private
+            TYPE_MOD_PROTECTED  don't list if protected
+            NAME_HIDDEN         don't list if not visible through inheritance
 
-        <flags> besteht aus der binaeren Veroderung der oben genannten Flags,
-        zusammen mit den folgenden:
-            TYPE_MOD_VARARGS    die Funktion ist varargs deklariert
-            NAME_UNDEFINED      die Funktion ist noch nicht definiert, aber
-                                referenziert
-            NAME_CROSS_DEFINED  die Funktion ist definiert, um in einem
-                                anderen Programm verwendet zu werden
-            TYPE_MOD_NOMASK     die Funktion ist nomask deklariert
-            TYPE_MOD_PUBLIC     die Funktion ist public deklariert
+        The 'flags' information consists of the bin-or of the list control
+        flags given above, plus the following:
 
-SIEHE AUCH
+            TYPE_MOD_VARARGS    function takes varargs
+            NAME_UNDEFINED      function not defined yet, but referenced.
+            NAME_CROSS_DEFINED  function is defined to be in a different program
+            TYPE_MOD_NO_MASK    function is nomask
+            TYPE_MOD_PUBLIC     function is public
+
+HISTORY
+        LDMud 3.6.7 introduced RETURN_FUNCTION_LPCTYPE.
+
+SEE ALSO
         inherit_list(E), function_exists(E), variable_list(E),
         call_resolved(E)
