diff --git a/doc/efun/inherit_list b/doc/efun/inherit_list
index 62b12ee..98d1cb4 100644
--- a/doc/efun/inherit_list
+++ b/doc/efun/inherit_list
@@ -5,57 +5,59 @@
         string * inherit_list(object|lwobject ob)
         string * inherit_list(object|lwobject ob, int flags)
 
-BESCHREIBUNG
-        Liefert die Namen von allen Dateien, die von <ob> geerbt werden,
-        inklusive <ob>s eigener Dateiname. Wird <ob> nicht angegeben, wird
-        standarndmaessig das aktuelle Objekt verwendet.
 
-        Der Wert von <flags> bestimmt die Struktur des Rueckgabewertes:
-          - <flag> = INHLIST_FLAT (0, default):
-            inherit_list() liefert ein Array von Dateinamen, beginnend mit dem
-            Namen von <ob> selbst, gefolgt von den Namen aller geerbten
-            Objekten.
-          - <flag> = INHLIST_TREE (1):
-            inherit_list() liefert ein Array von Dateinamen, beginnend mit dem
-            Namen von <ob> selbst. Wenn ein geerbte File selbst keine Files
-            erbt, wird sein Name direkt in das Ergebnis eingetragen. Wenn ein
-            geerbtes File selbst Files erbt, wird ein Untervektor erzeugt, in
-            dem die Inherits eingetragen werden. Der Untervektor hat die
-            gleiche Struktur wie der Haupvektor.
-          - <flag> = INHLIST_TAG_VIRTUAL (2):
-            Alle Namen im Ergebnisvektor haben ein leeres Tag "  " (zwei
-            Leerschlaege) fuer normale Inherits und "v " fuer virtuelle
-            Inherits als Praefix vorangestellt.
+DESCRIPTION
+        Returns the names of all files inherited by <ob>, including
+        <ob>s own filename. If <ob> is omitted, it defaults to the current
+        object. The value of <flags> determines the structure of the output.
 
-        Alle Flags koennen mit einem binaeren Oder | verbunden werden, wobei
-        INHLIST_FLAT und INHLIST_TREE sich gegenseitig ausschliessen.
+        <flag> = INHLIST_FLAT (0, default):
+          The result is an array of filenames, starting the with the filename
+          of <ob> itself, followed by the names of all inherited objects
+          in breadth order.
 
-        Wenn ein Objekt inklusive <ob> einem replace_program() unterworfen
-        war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
-        wider.
+        <flag> = INHLIST_TREE (1):
+          The result is an array starting the with the filename
+          of <ob> itself, followed by the all directly inherited
+          objects. If one of the inherited objects has no inherits by itself,
+          then its name will be stored directly in the array. If one inherited
+          object has inherits by itself, a subvector will be created and
+          stored in the result vector. The subvector(s) have the same
+          structure as the main result vector.
 
-        Die Inheritpfade, die geliefert werden, beginnen immer mit '/'
-        (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
+        <flag> = INHLIST_TAG_VIRTUAL (2):
+          All names in the result are prefixed with a tag: "  " (two spaces)
+          for normal inherits, "v " for virtual inherits.
+
+        All flags can be combined with binary-|, just _FLAT and _TREE are
+        mutually exclusive.
+
+        If objects, including <ob>, had been undergone a replace_program(),
+        the returned filenames will reflect the actual active program.
+
+        The returned names always begin with '/' (absolute path), except
+        when the parser runs in COMPAT mode.
 
 
-BEISPIELE
-        Gegeben folgende Vererbungsstruktur:
+EXAMPLES
+        Given this inheritance structure:
 
             / c - d
           a
             \ b
 
-        Wobei d virtuell geerbt wird, ergeben sich folgende Resultate:
+        the efun will give the following results:
 
-            inherit_list(a) -> ({ "a", "c", "b", "d" })
-            inherit_list(c) -> ({ "c", "d" })
-            inherit_list(a, 1) -> ({ "a", ({ "c", "d" }), "b" })
-            inherit_list(a, 3) -> ({ "  a", ({ " c", "v d" }), "  b" })
+          inherit_list(a) -> ({ "a", "c", "b", "d" })
+          inherit_list(c) -> ({ "c", "d" })
+          inherit_list(a, 1) -> ({ "a", ({ "c", "d" }), "b" })
 
-GESCHICHTE
-        Vor 3.2.8, begannen die gelieferten Namen niemals mit einem '/'.
-        LDMud 3.2.9 fuehrte die Baumstruktur (_TREE) und Tags fuer virtuelle
-            Inherits ("v ") ein.
 
-SIEHE AUCH
+HISTORY
+        Before 3.2.8, the returned names never started with a '/'.
+        LDMud 3.2.9/3.3.111 added the tree representation.
+        LDMud 3.2.9/3.3.125 added the tagging of virtual inherits.
+
+
+SEE ALSO
         debug_info(E), include_list(E)
