diff --git a/doc/efun/function_exists b/doc/efun/function_exists
index 43f2da2..c521360 100644
--- a/doc/efun/function_exists
+++ b/doc/efun/function_exists
@@ -1,14 +1,60 @@
 SYNOPSIS
-        string function_exists(string str, object ob)
+        #include <functionlist.h>
 
-DESCRIPTION
-        Return the file name of the object that defines the function
-        str in object ob. The returned value can be other than
-        object_name(ob) if the function is defined in an inherited
-        object. In !compat mode, the returned name always begins with a
-        '/' (absolute path). 0 is returned if the function was not
-        defined, or was defined as static (protected function on the
-        other hand are found).
+        mixed function_exists(string str)
+        mixed function_exists(string str, int flags)
+        mixed function_exists(string str, object ob)
+        mixed function_exists(string str, object ob, int flags)
 
-SEE ALSO
-        call_other(E), call_resolved(E), functionlist(E)
+BESCHREIBUNG
+        Sucht eine Funktion <str> im aktuellen Objekt bzw. im Objekt <ob>. Je
+        nach den angegeben <flags> werden folgende Informationen angezeigt:
+
+        FEXISTS_PROGNAME (0, default):
+        Liefert den Namen des Programms, in dem die Funktion definiert ist.
+        Das kann entweder der Objektname object_name(ob) sein, oder der
+        Name eines geerbten Programms. Wenn der Driver nicht im Compat-Modus
+        laeuft, beginnt der Name immer mit einem '/'.
+
+        FEXISTS_FILENAME (1):
+        Liefert den Namen der Datei, in der die Funktion definiert ist. Das
+        kann auch ein Inlcude-File sein. Wenn der Driver nicht im Compat-
+        Modus laeuft, beginnt der Name mit einem '/'.
+
+        FEXISTS_LINENO (2):
+        Liefert die Zeilennummer im Quellcode, in der die Funktion definiert
+        wird.
+
+        FEXISTS_ALL (3):
+          Liefert ein Array mit der gesamten Information der anderen Flags,
+          sowie zusaetzlichen Informationen ueber die Funktion:
+          
+            string [FEXISTS_PROGNAME]: der Programmname
+            string [FEXISTS_FILENAME]: der Dateiname
+            int    [FEXISTS_LINENO]:   die Zeilennummer
+            int    [FEXISTS_NUMARG]:   die Anzahl der Funktionsargumente
+            int    [FEXISTS_TYPE]:     der Ergebnistyp der Funktion
+            int    [FEXISTS_FLAGS]:    die Funktionsflags
+
+        <flags> kann mit einem binaren Oder mit NAME_HIDDEN ergaenzt
+        werden, um Informationen ueber als static und protected deklarierte
+        Funktionen in anderen Objekten zu erhalten. Es ist nicht moeglich,
+        Informationen ueber als private deklarierte Funktionen zu erhalten.
+
+        Wenn die gesuchte Funktion nicht gefunden werden kann (weil sie
+        nicht existiert oder fuer den Aufrufer nicht sichtbar ist), dann
+        wird als Rueckgabewert 0 geliefert.
+
+
+BEISPIELE
+        function_exists("create");
+        function_exists("create", that_object, NAME_HIDDEN|FEXISTS_ALL);
+
+GESCHICHTE
+        LDMud 3.2.10 erweiterte die Menge der zurueck gelieferten Werte und
+            fuehrte das <flags> Argument ein.
+        LDMud 3.2.12/3.3.713 fuegte die zusaetzliche Funktionsinformation zum
+            FEXISTS_ALL Ergebnis hinzu.
+
+SIEHE AUCH
+        call_other(E), call_resolved(E), functionlist(E), variable_exists(E)
