diff --git a/doc/efun/call_resolved b/doc/efun/call_resolved
index 2b101df..68fe6bc 100644
--- a/doc/efun/call_resolved
+++ b/doc/efun/call_resolved
@@ -1,33 +1,41 @@
 SYNOPSIS
-        int call_resolved(mixed result, object ob, string func, mixed arg,...)
-        int* call_resolved(mixed* result, object* ob, string func, mixed arg,...)
+        int call_resolved(mixed result, object ob, string func, ...)
+        int* call_resolved(mixed* result, object* ob, string func, ...)
 
-BESCHREIBUNG
-        Die Funktion ist aehnlich zu call_other(). Wenn obj->func() definiert
-        und oeffentlich ist, werden alle Argumente <arg> an obj->func()
-        uebergeben. Das Resultat dieses Funktionsaufrufes wird in <result>
-        gespeichert und muss deshalb als Referenz uebergeben werden.
+DESCRIPTION
+        Similar to call_other(). If ob->func() is defined and publicly
+        accessible, any of the optional extra arguments are passed to
+        ob->func(...). The result of that function call is stored in
+        result, which must be passed by reference.
 
-        Wenn <ob> zerstoert wurde oder keine oeffentlich zugaengliche Funktion
-        <func> definiert, liefert call_resolved() 0 fuer Fehler, 1 bei Erfolg.
+        The efun returns 1 if the function could be called.
+        If ob::fun does not define a publicly accessible function, the
+        efun will call the H_DEFAULT_METHOD hook if set. If the hook
+        is not set or can't resolve the call either, the efun will return 0.
+        If the hook is set and can resolve the call, the efun will return -1.
 
-        <ob> kann auch ein object_name() sein. Wenn <ob> ein String ist und
-        das Objekt mit diesem Namen nicht gefunden oder geladen werden kann,
-        tritt ein Fehler auf.
+        Calls to the master object never use the H_DEFAULT_METHOD hook.
+        To force non-default calls, the efun call_direct_resolved() can
+        be used.
 
-        Ausserdem akzeptiert diese Efun auch Arrays von Objekten in <ob>:
-        The Funktion wird dann mit den gleichen Argumenten in allen angegebenen
-        Objekten aufgerufen. Die Ergebnisse des Funktionsaufrufes werden
-        in einem Array gespeichert, das an <result> zugewiesen wird, und die
-        Status-Codes werden in einem zweiten Array gesammelt, welches von der
-        Efun zurueckgeliefert wird. In dem Array koennen Objekte oder Namen
-        der Objekte angegebenen werden. Zerstoerte Objekte oder Nullen werden
-        als 0 in beiden Arrays eingetragen, verursachen jedoch keinen Fehler.
+        ob can also be an object_name. If a string is passed for ob
+        and an object with that name can't be found or loaded, an
+        error occurs.
 
-GESCHICHTE
-        LDMud 3.6.2 fuegte die Aufrufe von Arrays hinzu.
+        Additionally the efun accepts an array of objects as <ob>: the
+        function is called with the same arguments in all the given objects.
+        The single results are collected in two arrays, one for the result
+        of the function calls that will be stored in the result parameter,
+        and one for the efun result codes that will finally be returned from
+        the efun. Array elements can be objects or the names of existing
+        objects; destructed objects and 0s will yield a '0' as result in
+        both arrays, but don't cause an error.
 
-SIEHE AUCH
+HISTORY
+        LDMud 3.3.113 introduced the H_DEFAULT_METHOD hook.
+        LDMud 3.6.2 added array calls.
+
+SEE ALSO
         call_other(E), call_strict(E), call_direct(E), call_direct_strict(E),
         call_direct_resolved(E), create(A), pragma(LPC), extern_call(E),
         function_exists(E), functions(LPC), map_objects(E)
