diff --git a/doc/efun/present b/doc/efun/present
new file mode 100644
index 0000000..7b7d8d3
--- /dev/null
+++ b/doc/efun/present
@@ -0,0 +1,84 @@
+SYNOPSIS
+        object present(string str)
+        object present(string str, int n)
+        object present(string str, object env)
+        object present(string str, int n, object env)
+
+        object present(object ob)
+        object present(object ob, object env)
+
+BESCHREIBUNG
+        Wenn ein Objekt mit der Id <str> sich im Inventar oder in der Umgebung
+        von this_object() befindet, wird es zurueck geliefert.
+        
+        Ist das Argument <n> gegeben, wird das n-te Objekt mit Namen <id>
+        zurueck geliefert. Das heisst, der Driver fuehrt fuer alle Objekte
+        im Inventar und in der Umgebung von this_object() die Funktion
+        id(str) aus, bis ein Treffer erzielt wird (wenn ueberhaupt).
+
+        Ist <n> nicht gegeben, aber <str> hat die Form "<id> <n>" , wird
+        ebenfalls das n-te Objekt mit Namen <id> zurueckgeliefert.
+
+        Es ist: id(str) { return str == <name>; }
+
+        <str> kann auch ein Objekt (anstatt einem object_name()) sein, was den
+        Test schneller und einfacher macht.
+
+        Das Argument <env> ist optional. <env> gibt an, wo nach <str> gesucht
+        wird. Nur das Inventory von <env> wird durchsucht, nicht jedoch dessen
+        Umgebung. Oftmals wird fuer <env> this_player() gesetzt.
+
+
+ANMERKUNG
+        Diese efun kann u.U. _sehr_ teuer sein! Bitte schaut euch auf jeden
+        Fall auch die efun present_clone() an und schaut, ob die evtl. das
+        kann, was ihr machen wollt. present_clone() ist erheblich billiger.
+
+        Wenn die efun sowohl in this_object() als auch dessen Umgebung
+        sucht, werden, soweit es die Numerierung betrifft, die beiden
+        Umgebungen zusammenhaengend betrachtet.
+
+BEISPIELE
+        present("chest");
+          --> findet das erste 'chest' Objekt
+
+        present("chest 2");
+          --> findet das zweite 'chest' Objekt
+
+        present("chest 2", 1);
+          --> findet das erste 'chest 2' Objekt
+
+        Wenn sich eine "chest" im this_object() befindet, und zwei
+        ausserhalb:
+          present("chest", 1) -> findet die chest im Objekt
+          present("chest", 2) -> findet die erste chest ausserhalb
+          present("chest", 3) -> findet die zweite chest ausserhalb
+        
+        Wenn ein Objekt die Forum "<id> <n>" in Verbindung mit einem selbst
+        ueber add_action() gesetzten Verb unterstuetzen soll (damit z. B.
+        "oeffne Kiste 3" funktioniert), kann das folgendermassen geloest
+        werden:
+
+            void init() { add_action("oeffne_kiste", "oeffne"); }
+
+            int oeffne_kiste(string str)
+            {
+                if(present(str) != this_object() )
+                {
+                    return 0; /* nicht diese Kiste */
+                    ...
+                }
+            }
+
+HISTORY
+        LDMud 3.2.11/3.3.610 fuehrte die (str, n)-Form ein.
+        LDMud 3.3.713 aenderte die Numerierung wenn sowohl Inventory
+          als auch Umgebung durchsucht werden. In der vorherigen
+          Implementierung wurde eine Numerierung auf beiden Umgebungen
+          einzeln angewandt, was zur Folge hatte, dass niedere Objekte
+          in der aeusseren Umgebung nicht gefunden werden koennten, da
+          sie von den Objekten in Inneren verdeckt wurden.
+
+SIEHE AUCH
+        move_object(E), environment(E), this_object(E), present_clone(E),
+        id(A), init(A)
