diff --git a/doc/efun/deep_inventory b/doc/efun/deep_inventory
index 05200f1..12a2e8a 100644
--- a/doc/efun/deep_inventory
+++ b/doc/efun/deep_inventory
@@ -1,36 +1,40 @@
 SYNOPSIS
-        object * deep_inventory()
+        object * deep_inventory(void)
         object * deep_inventory(object ob)
         object * deep_inventory(object ob, int depth)
 
-BESCHREIBUNG
-        Gibt ein Array der Objekte zurueck, die in <obj> enthalten sind.
-        Wenn <obj> nicht angegeben wird, wird standardmaessig this_object()
-        verwendet. Ebenso werden alle Objekte angegeben, die sich im Inventory
-        der in <obj> enthaltenen Objekte befinden. Die Suche verlaeuft
-        rekursiv absteigend.
+DESCRIPTION
+        Returns an array of the objects contained in the inventory of
+        ob (or this_object() if no arg given) and in the inventories
+        of these objects, climbing down recursively.
 
-        Ist <depth> angegeben und ungleich 0, ist das Resultat wie folgt
-        gefiltert:
-          <depth> > 0: Nur die Objekte in den ersten <depth> Ebenen
-                       werden zurueckgegeben.
-          <depth> < 0: Nur die Objekte in der -<depth>ten Ebene werden
-                       zurueckgegeben.
+        If <depth> is given and not 0, the result is limited as follows:
 
-BEISPIELE 
+          <depth> > 0: Only the objects in the first <depth> levels of
+                       inventory are returned.
+          <depth> < 0: Only the objects in level -<depth> of inventory are
+                       returned.
+
+        In this, level '1' is the inventory of <ob> itself.
+
+EXAMPLES
+        Given the following inventory structure
+
         ob
         +- ob1
         +- ob2
-        |   +- ob21
+        |   `- ob21
         |  ob3
-        |   +- ob31
+        |   `- ob31
         +- ob4
 
-
-        deep_inventory(ob) => ({ob1, ob2, ob3, ob4, ob21, ob31})
-        deep_inventory(ob, 1) => ({ob1, ob2, ob3, ob4})
-        deep_inventory(ob, 2) => ({ob1, ob2, ob3, ob4, ob21, ob31})
+        deep_inventory(ob)     => ({ob1, ob2, ob3, ob4, ob21, ob31})
+        deep_inventory(ob, 1)  => ({ob1, ob2, ob3, ob4})
+        deep_inventory(ob, 2)  => ({ob1, ob2, ob3, ob4, ob21, ob31})
         deep_inventory(ob, -2) => ({ob21, ob31})
 
-SIEHE AUCH
+HISTORY
+        LDMud 3.3.554 added the <depth> parameter.
+
+SEE ALSO
         first_inventory(E), next_inventory(E), all_inventory(E)
