diff --git a/doc/efun/call_direct b/doc/efun/call_direct
index 94ab028..493b16d 100644
--- a/doc/efun/call_direct
+++ b/doc/efun/call_direct
@@ -1,26 +1,22 @@
 SYNOPSIS
-        unknown call_direct (object ob, string fun, mixed arg, ...)
-        unknown call_direct (object *ob, string fun, mixed arg, ...)
+        unknown call_direct(object ob, string fun, mixed arg, ...)
+        unknown call_direct(object *ob, string fun, mixed arg, ...)
 
 DESCRIPTION
-        Call a member function <fun> in another object <ob> with an
-        the argument(s) <arg...>. Result is the value returned from
+        Call a member function <fun> in another object <ob> with 
+        argument(s) <arg...>. Result is the value returned from
         the called function (or 0 for non-existing or void functions).
 
         This efun is a twin to call_other(), with the difference
         being that call_direct() never calls a default method.
 
-        Optionally the driver can be configured to accept 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 an array and yield the final result.  Array
-        elements can be objects or the names of existing objects;
-        destructed objects and 0s will yield a '0' as result, but
+        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 an array and yield the final
+        result.  Array elements can be objects or the names of existing
+        objects; destructed objects and 0s will yield a '0' as result, but
         don't cause an error.
 
-        If the array-calling mode is available, the macro
-        __LPC_ARRAY_CALLS__ is defined.
-
         The object(s) can be given directly or via a string (i.e. its
         object_name). If it is given by a string and the object does not
         exist yet, it will be loaded.
@@ -47,6 +43,7 @@
         'unknown', and the result of call_other() must be casted to
         the appropriate type before you can use it for anything.
 
+
 EXAMPLES
         // All the following statements call the lfun QueryProp()
         // in the current player with the argument P_SHORT.
@@ -61,7 +58,7 @@
 
         // This statement calls the lfun short() in all interactive users
         // and stores the collected results in a variable.
-        string * s;
+        string *s;
 
         s = (string *)call_direct(users(), "short");
 
@@ -69,7 +66,9 @@
 HISTORY
         Introduced in LDMud 3.3.113 with the H_DEFAULT_METHOD hook.
         LDMud 3.2.10 made the call on arrays of objects configurable.
+        LDMud 3.5.0 made the call on arrays of objects non-optional.
 
 SEE ALSO
-        call_other(E), call_direct_resolved(E), create(A), pragma(LPC),
-        extern_call(E), function_exists(E), functions(LPC)
+        call_other(E), call_strict(E), call_direct_strict(E),
+        call_resolved(E), call_direct_resolved(E), create(A), pragma(LPC),
+        extern_call(E), function_exists(E), functions(LPC), map_objects(E)
