diff --git a/doc/efun/call_out b/doc/efun/call_out
index 0293b3e..f3293c0 100644
--- a/doc/efun/call_out
+++ b/doc/efun/call_out
@@ -2,48 +2,52 @@
         void call_out(string fun, int delay, mixed arg, ...)
         void call_out(closure cl, int delay, mixed arg, ...)
 
-BESCHREIBUNG
-        Ruft zeitverzoegert die Funktion <fun> im aktuellen Objekt oder
-        die Closure <cl> auf. Der Aufruf erfolgt in <delay> Sekunden.
-        Die Funktion / Closure wird mit den <arg> Argumenten aufgerufen.
-        Die minimale Verzoegerung ist 0 (negative <delay> werden implizit als
-        0 behandelt). Allerdings ist die reale Verzoegerung etwas zwischen
-        <delay> und __ALARM_TIME__.
+DESCRIPTION
+        Set up a call to function fun in the current object, or to
+        closure cl. The call will take place after <delay> seconds, with the
+        remaining argument list provided.
+        <delay> can be a minimum time of 0 (negative values are implicitly
+        treated as 0), but the real delay will be something between <delay>
+        and <delay> + __ALARM_TIME__.
 
-        call_out() merkt sich den aktuellen User und ruft die Funktion
-        entsprechend auf. call_out() kann nur Funktionen aufrufen, die
-        oeffentlich zugaenglich sind, das heisst "public" und "static"
-        deklarierte Funtionen. "private" und "protected" deklarierte
-        Funktionen koennen nicht aufgerufen werden.
+        call_out() saves and restores the current user. It is now
+        possible to use say() or write() which rely on a current
+        user to be something useful.
 
-        Die Ausfuehrung von call_out()s erfordert einen einfachen (nicht
-        zu aufwendigen) Schutz gegen Rabbits: die Evalkosten aller
-        gleichzeitig anstehenden call_out()s werden auf einer pro-UID-Basis
-        summiert. Uebersteigt die Summe ein vorgegebenes Maximum, wird
-        ein Fehler 'too long evaluation' erzeugt, und es werden alle
-        call_out()s des betreffenden Benutzers, die zur gleichen Zeit
-        faellig werden, entfernt.
+        call_out() can only call functions by name <fun> which are publicly
+        accessible, i.e. "public" and "static" functions. "private" and
+        "protected" functions can't be called.
 
-        Wenn zwei call_out()s zum gleichen Zeitpunkt ausgefuehrt werden
-        sollen, wird der zuerst gestartete zuerst ausgefuehrt.
+        If <fun> does not define a publicly accessible function, the
+        efun will call the H_DEFAULT_METHOD hook if set.
+        Calls to the master object never use the H_DEFAULT_METHOD hook.
 
-BEISPIELE
+        The execution of the call_out()s implies a simple (not
+        exhaustive) measure against rabbits: the evaluation costs of
+        those call_outs() executing at the same time are summed up on
+        a per-UID base. If the summed-up costs exceed the given maximum,
+        a 'too long evaluation' error will occur and any remaining
+        call_outs() of this user scheduled for the same time are
+        discarded.
+
+        If two call_out()s were started with the same target time
+        the one that was issued first will be executed first.
+
+EXAMPLES
         call_out("RefreshMe", 10);
 
-        Dies ruft die Funktion RefreshMe() nach Ablauf von 10 Sekunden ohne
-        irgendwelche Argumente auf. Die Funktion RefresMe() kann dann
-        wiederum selbst call_out()s starten, auch auf sich selbst, was
-        eine Schleife erzeugt (keine Rekursion). Mit einer solchen Schleife
-        koennen Anweisungen in einem Objekt in regelmaessigen Zeitintervallen
-        ausgefuehrt werden. Es ist allerdings zu beachten, dass call_out()s
-        in einer linearen Liste gespeichert werden, und deshalb ziemlich
-        rechenaufwendig fuer den Treiber sind.
+        This will call the function RefreshMe() in 10 seconds without
+        any arguments. The function RefreshMe() can then call out
+        itself again which will result in a loop (not in a recursion)
+        which can be used to check or set up things in the object in
+        intervals. Be aware that callouts are stored in a linear
+        list, and so are somewhat expensive for the driver.
 
-        Und JA: selbst-replizierende call_out()s, bei denen jeder call_out()
-        selbst zwei oder mehr call_out()s in einem Loop erzeugt (sogenannte
-        Rabbits) verlangsamen das Mud ungemein und koennen es sogar zum
-        Crash bringen. Kein Grund, es selbst auszuprobieren.
+        And YES: self-replicating call_out()s, where each call_out()
+        creates two or more other call_out()s in a loop (so called
+        'rabbits') slow the mud down very fast, and are even able
+        to crash it. No need to try it yourself.
 
-SIEHE AUCH
+SEE ALSO
         remove_call_out(E), call_out_info(E), find_call_out(E),
         this_player(E), reset(A), heart_beat(A)
