diff --git a/doc/lfun/NotifyDestruct b/doc/lfun/NotifyDestruct
index 48e71ee..31e02e9 100644
--- a/doc/lfun/NotifyDestruct
+++ b/doc/lfun/NotifyDestruct
@@ -1,47 +1,66 @@
+
 NotifyDestruct()
+****************
 
-FUNKTION:
-     public int|string NotifyRemove(object zerstoerer);
 
-ARGUMENTE:
-     zerstoerer
-          Das Objekt, welches destruct() auf dieses Objekt anwendet.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
-     welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
-     aufzuraeumen.
-     Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
-     in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
-     gruendlich.
-     Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
-     die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
-     aktualisiert wird.
+   public int|string NotifyRemove(object zerstoerer);
 
-     Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
-     Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
-     verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
-     string zurueckgeliefert, wird dieser die Fehlermeldung des
-     prepare_destruct() im Master sein.
-     Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
-     _kein_ Abbruch der Zerstoerung moeglich!
 
-RUeCKGABEWERT:
-     Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
-     Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
-     grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
-     Verhinderung eines destructs nutzlos.
-     Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
-     Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
-     in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
-     ist ein save_object() in remove() und NotifyDestruct() vollstaendig
-     ueberfluessig.
+   zerstoerer
+        Das Objekt, welches destruct() auf dieses Objekt anwendet.
 
-SIEHE AUCH:
-    NotifyLeave(), NotifyInsert(), NotifyRemove()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
+   welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
+   aufzuraeumen.
+   Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
+   in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
+   gruendlich.
+   Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
+   die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
+   aktualisiert wird.
+
+   Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
+   Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
+   verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
+   string zurueckgeliefert, wird dieser die Fehlermeldung des
+   prepare_destruct() im Master sein.
+   Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
+   _kein_ Abbruch der Zerstoerung moeglich!
+
+
+RUeCKGABEWERT
+=============
+
+   Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
+   Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.
+
+
+BEMERKUNGEN
+===========
+
+   Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
+   grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
+   Verhinderung eines destructs nutzlos.
+   Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
+   Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
+   in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
+   ist ein save_object() in remove() und NotifyDestruct() vollstaendig
+   ueberfluessig.
+
+
+SIEHE AUCH
+==========
+
+   NotifyLeave(), NotifyInsert(), NotifyRemove()
+
 Last modified: 25.02.2009, Zesstra
