diff --git a/doc/efun/first_inventory b/doc/efun/first_inventory
index d571d8c..612b3c8 100644
--- a/doc/efun/first_inventory
+++ b/doc/efun/first_inventory
@@ -3,45 +3,42 @@
         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.
+DESCRIPTION
+        Get the first object in the inventory of ob, where ob is
+        either an object or the file name of an object. If ob is not
+        given, the current object is assumed.
 
-BEISPIELE
-        Diese Efun verwendet man am haeufigsten im folgenden Kontext:
+EXAMPLES
+        This efun is mostly used in the following context:
 
-            for(obj=first_inventory(container);obj;obj=next_inventory(obj))
-            {
-                <irgendwelcher Code>
-            }
+        for(ob=first_inventory(container);ob;ob=next_inventory(ob)) {
+           <some actions>
+        }
 
-        Wer solche Aufrufe haeufig verwendet, findet es moeglicherweise
-        sinnvoll, ein Praeprozessor-Makro zu verwenden:
+        If you use such calls frequently then it would be very useful
+        to use a preprocessor macro:
 
-            #define FORALL(x, y) for(x=first_inventory(y);x;
-                x=next_inventory(x))
+        #define FORALL(x, y) for(x=first_inventory(y);x;x=next_inventory(x))
 
-        Damit vereinfacht sich das obige Beispiel zu:
+        So the above example could be written like this:
 
-            FORALL(obj, container)
-            {
-                <irgendwelcher Code>
-            }
+        FORALL(ob, container) {
+           <some actions>
+        }
 
-        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:
+        Warning: If the object ob is moved inside <some actions>, then
+        next_inventory() will return an object from the new inventory
+        of ob. You also shouldn't call next_inventory() on destructed
+        objects. So in case of move and/or destruction the following
+        is a better solution:
 
-            for(obj=first_inventory(container);obj;)
-            {
-                next=next_inventory(obj);
-                <irgendwelcher Code mit Moves oder Removes>
-                obj=next;
-            }
+        for(ob=first_inventory(container);ob;) {
+           next=next_inventory(ob);
+           <some actions and moves and/or removes>
+           ob=next;
+        }
 
-SIEHE AUCH
-        next_inventory(E), all_inventory(E), environment(E), deep_inventory(E)
+
+SEE ALSO
+        next_inventory(E), all_inventory(E), environment(E),
+        deep_inventory(E)
