diff --git a/doc/lfun/obsolete/AddInsertHook b/doc/lfun/obsolete/AddInsertHook
index 9a372ba..8f49361 100644
--- a/doc/lfun/obsolete/AddInsertHook
+++ b/doc/lfun/obsolete/AddInsertHook
@@ -2,11 +2,12 @@
 AddInsertHook()
 ***************
 
-********************* OBSOLETE LFUN
-*********************************** * Diese Efun bitte nicht mehr
-benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
-* *******************************************************************
-**** AddInsertHook()
+
+OBSOLETE LFUN
+=============
+
+   Diese Efun existiert nicht mehr. Bitte stattdessen den Hook
+   H_HOOK_INSERT benutzen. (s. /doc/std/hooks)
 
 
 FUNKTION
@@ -15,33 +16,24 @@
    void AddInsertHook(object ob);
 
 
-DEFINIERT IN
-============
-
-   /std/player/restrictions.c
-
-
 ARGUMENTE
 =========
 
-   ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
-        Spielerinventar hinzugefuegt wurde.
+   ob
+      Das Objekt, das informiert werden soll, wenn ein Objekt dem
+      Spielerinventar hinzugefuegt wurde.
 
 
 BESCHREIBUNG
 ============
 
-   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-    vorhanden.)
-
-   Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
-   Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
-   werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
-   Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
-   detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
-   gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
-   uebergeben bekommt.
+   Diese Funktion wurde im Spielerobjekt aufgerufen, um das Objekt ob
+   als Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
+   werden informiert, wenn ein Objekt ins Spielerinventar bewegt
+   wurde. Technisch wird die Bewegung ueber NotifyInsert() im
+   Spielerobjekt detektiert, und im Listener-Objekt wird die Funktion
+   InsertNotify() gerufen, die als Parameter das neu ins
+   Spielerinventar bewegte Objekt uebergeben bekommt.
 
 
 RUeCKGABEWERT
@@ -53,33 +45,13 @@
 BEMERKUNGEN
 ===========
 
-   Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
-   ansonsten wird der eingetragene Hook wieder geloescht.
-
-
-BEISPIEL
-========
-
-   a) Objekt "ob" wird im Spieler als Listener angemeldet:
-      this_player()->AddInsertHook(ob);
-
-   b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
-      informiert "ob" darueber:
-      ob->InsertNotify(new);
-
-   c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
-      loescht, sofern sie vorher brannte:
-      void InsertNotify(object new) {
-        if ( objectp(new) && new->id("\nfackel") &&
-             new->QueryProp(P_LIGHTED) )
-          new->unlight();
-        return;
-      }
+   Das Listener-Objekt muss sich ebenfalls im Spielerinventar
+   befinden, ansonsten wird der eingetragene Hook wieder geloescht.
 
 
 SIEHE AUCH
 ==========
 
-   NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
+   NotifyInsert(), AddInsertHook(), QueryInsertHooks()
 
-Last modified: 14.04.2010, Arathorn
+Last modified: 18.10.2019 Zesstra
