diff --git a/doc/efun/previous_object b/doc/efun/previous_object
index 6a712ad..086c2fa 100644
--- a/doc/efun/previous_object
+++ b/doc/efun/previous_object
@@ -1,14 +1,12 @@
 SYNOPSIS
-        object previous_object();
-        object previous_object(int i);
+        object previous_object()
+        object previous_object(int i)
 
 BESCHREIBUNG
         Liefert einen Pointer auf das letzte Objekt, das einen Aufruf (mittels
         call_other(), funcall() etc.) auf das aktuelle Objekt this_object()
         gemacht hat. Wenn dieses aufrufende Objekt inzwischen zerstoert wurde,
         liefert previous_object() 0.
-        Bei einem Aufruf einer eigenen Funktion durch ein Objekt bleibt das
-        bisherige previous_object() unveraendert.
 
         Wird das Argument <i> angegeben, so verfolgt previous_object() den
         Aufruf <i> Stufen zurueck. Zum Beispiel liefert previous_object(1) das
@@ -18,23 +16,22 @@
 
         Es gibt einen wichtigen Spezialfall: in Funktionen, die vom Gamedriver
         auf Grund eines externen Ereignises aufgerufen wurden (zum Beispiel
-        Kommandi, die mit add_action() definiert wurden), liefert
-        previous_object() this_object(), previous_object(0) hingegen 0.
+        Kommandos, die mit add_action() definiert wurden), liefert
+        previous_object() den Wert von this_object(), previous_object(0)
+        hingegen 0.
 
-BEISPIEL
-        int sicherheitscheck()
-        {
+BEISPIELE
+        int sicherheitscheck() {
             object prev;
-            if(!(prev=previous_object()));
-            else if(getuid(prev)!=getuid(this_object()));
-            else if(geteuid(prev)!=geteuid(this_object()));
+            if (!(prev=previous_object()));
+            else if (getuid(prev)  != getuid(this_object()));
+            else if (geteuid(prev) != geteuid(this_object()));
             else return 1;
             return 0;
         }
-        void sensible_funktion()
-        {
-            if(!sicherheitscheck())
-            return;
+        void sensible_funktion() {
+            if (!sicherheitscheck())
+                return;
             ...
         }
 
@@ -46,5 +43,5 @@
         Werte von <i> < 0 werden wie <i> == 0 behandelt - dies ist historisch.
 
 SIEHE AUCH
-        call_other(E), this_object(E), this_player(E)
-        caller_stack(E), caller_stack_depth(E), extern_call(E)
\ No newline at end of file
+        call_other(E), this_object(E), this_player(E), caller_stack(E),
+        caller_stack_depth(E), extern_call(E)
