diff --git a/doc/efun/first_inventory b/doc/efun/first_inventory
new file mode 100644
index 0000000..99be7fd
--- /dev/null
+++ b/doc/efun/first_inventory
@@ -0,0 +1,34 @@
+SYNOPSIS
+        object first_inventory();
+        object first_inventory(string ob);
+        object first_inventory(object ob);
+
+BESCHREIBUNG
+        Liefert das erste Objekt im Inventory von <obj>, wobei <obj> entweder
+        ein Objekt oder der Name eines Objekts ist. Wenn <obj> nicht angegeben
+        wird, wird standardmaessig this_object() verwendet.
+
+BEISPIELE
+        Diese Efun verwendet man am haeufigsten im folgenden Kontext:
+
+            for(obj=first_inventory(container);obj;obj=next_inventory(obj))
+            {
+                <irgendwelcher Code>
+            }
+
+        ACHTUNG: Wenn das Objekt <obj> innerhalb von <irgendwelcher Code>
+        bewegt wird, liefert next_inventory() ein Objekt aus dem neuen
+        Inventory von <obj>. Auch sollte next_inventory() nicht fuer
+        zerstoerte Objekte <obj> aufgerufen werden. Fuer den Fall, dass
+        <obj> bewegt und/oder zerstoert wird, ist folgende Loesung
+        vorzuziehen:
+
+            for(obj=first_inventory(container);obj;)
+            {
+                next=next_inventory(obj);
+                <irgendwelcher Code mit Moves oder Removes>
+                obj=next;
+            }
+
+SIEHE AUCH
+        next_inventory(E), all_inventory(E), environment(E), deep_inventory(E)
