diff --git a/doc/efun/previous_object b/doc/efun/previous_object
new file mode 100644
index 0000000..6a712ad
--- /dev/null
+++ b/doc/efun/previous_object
@@ -0,0 +1,50 @@
+SYNOPSIS
+        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
+        aufrufende Objekt des aufrufenden Objekts. Fuer <i> muss gelten:
+        0 <= i < call_stack_depth(). Ein Wert <i> < 0 liefert das erste
+        aufrufende Object zurueck.
+
+        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.
+
+BEISPIEL
+        int sicherheitscheck()
+        {
+            object prev;
+            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;
+            ...
+        }
+
+        Diese Funktion zeigt, wie man ueberpruefen kann, ob der letzte Aufruf
+        einer Funktion im aktuellen Objekt sicher war, oder ob die
+        Verarbeitung abgebrochen werden sollte.
+
+FEHLER
+        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
