diff --git a/doc/efun/reverse b/doc/efun/reverse
index af81403..89b9bd6 100644
--- a/doc/efun/reverse
+++ b/doc/efun/reverse
@@ -1,32 +1,32 @@
 SYNOPSIS
-        int     reverse (int arg)
-        string  reverse (string arg)
-        bytes   reverse (bytes arg)
-        mixed * reverse (mixed * arg)
-        mixed * reverse (mixed * & arg)
+        int     reverse(int arg)
+        string  reverse(string arg)
+        bytes   reverse(bytes arg)
+        mixed * reverse(mixed * arg)
+        mixed * reverse(mixed * & arg)
 
-BESCHREIBUNG
-        Kehrt die Reihenfolge des Inhaltes eines Arrays, Strings oder
-        Bytefolge <arg> um und liefert den neuen Wert als Resultat.
-        Ist <arg> eine Zahl, wird die Reihenfolge der Bits in <arg> umgekehrt.
+DESCRIPTION
+        Reverse the content of array, string or byte sequence <arg> and
+        return the result. If <arg> is an integer, the bits in the
+        integer are reversed.
 
-        Wenn in der Referenz-Variante verwendet, wird das Argumentarray selber
-        invertiert und auch zurueckgegeben.
+        If called in the reference variant, the argument array itself
+        is reversed and then returned.
 
-BEISPIELE
-        reverse (0x306a) - gibt 0x560c0000 zurueck
+EXAMPLES
+        reverse(0x306a) - returns 0x560c0000
 
-        reverse ("test") - gibt "tset" zurueck
+        reverse("test") - returns "tset"
 
-        mixed * a = ({ 1, 2 });
-        reverse(a)  - gibt ({ 2, 1 }) zurueck, a bleibt unveraendert.
-        reverse(&a) - gibt ({ 2, 1 }) zurueck, a ist nun ({ 2, 1 })
+        mixed * arr = ({ 1, 2 });
+        reverse(arr)  - returns ({ 2, 1 }), leaves arr unchanged.
+        reverse(&arr) - returns ({ 2, 1 }), sets arr to ({ 2, 1 })
 
-FEHLER
-        Referenz-Teilarrays wie reverse(&(a[1..2])) werden nicht unterstuetzt.
+BUGS
+        Reference ranges like reverse(&(a[1..2])) are not supported.
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.3.529.
-        LDMud 3.3.532 fuegte die Bitumkehr von Zahlen ein.
+HISTORY
+        Introduced in LDMud 3.3.529.
+        LDMud 3.3.532 added the reversal of bits in an integer.
 
-SIEHE AUCH
+SEE ALSO
