diff --git a/doc/lfun/InFight b/doc/lfun/InFight
index 73fef03..df311ce 100644
--- a/doc/lfun/InFight
+++ b/doc/lfun/InFight
@@ -6,7 +6,7 @@
 FUNKTION
 ========
 
-   mixed InFight()
+   object InFight()
 
 
 ARGUMENTE
@@ -24,11 +24,14 @@
    Funktion environment gefiltert und so festgestellt, ob
    die Umgebung der beiden Feinde gleich ist.
 
-RUECKGABEWERT:
-   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt im
-   Moment keine Feinde hat bzw. die nicht im selben Raum sind, oder
-   aber das Feindobjekt, das als erstes im Array steht und anwesend
-   ist.
+
+RUECKGABEWERT
+=============
+
+   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt
+   im Moment keine Feinde hat bzw. die nicht im selben Raum
+   sind, oder aber das Feindobjekt, das als erstes im Array
+   steht und anwesend ist.
 
 
 BEISPIEL
diff --git a/doc/lfun/NewDoor b/doc/lfun/NewDoor
index c534be5..6048d53 100644
--- a/doc/lfun/NewDoor
+++ b/doc/lfun/NewDoor
@@ -72,8 +72,6 @@
         ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
            D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
 
-
-
         Default: "Eine Tuer.\n"
 
    D_SHORT
@@ -191,12 +189,15 @@
    ** Tueren mit Bewegungsmeldung:
 
       NewDoor("norden","/room/see2",
+              ({"gitter","eisengitter"}),
               ({ D_MSGS,  ({"nach Norden","schwimmt",
-                            "kommt hereingeschwommen"}) }) );
+                            "schwimmt von Sueden herein"}),
+                 D_GENDER, NEUTER}) );
 
    ** Eine Tuer mit Testfunktion:
 
       NewDoor("osten","/mein/zielraum",
+              ({"tuer"}),
               ({ D_TESTFUNC, "blocker_da" }) );
 
       Die Funktion blocker_da:
@@ -204,11 +205,12 @@
       int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
       {                     // aufgerufen und ausgewertet!
         if ( present("mein_fieses_mo\nster",this_object()) )
-         {
-          write("Ein fieses Monster stellt sich Dir in den Weg.\n");
+        {
+          tell_object(this_player(),
+              "Ein fieses Monster stellt sich Dir in den Weg.\n");
           return 1;
-         }
-        return 0;           // optional
+        }
+        return 0;
       }
 
    ** Nun noch eine Tuer mit einigen Extras:
@@ -216,30 +218,30 @@
       NewDoor("nordwesten","/rooms/kammer",
               ({"tuer","holztuer"}),
               ({
-                D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
-                D_MSGS,   ({"nach Nordwesten","geht",
-                          "kommt durch eine Tuer herein"}),
-                D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
-                D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
-                D_NAME,   "Holztuer",
-                D_FUNC,   "view",
-                D_FUNC2,  "look_up"
+                D_FLAGS, (DOOR_CLOSED|DOOR_RESET_CL),
+                D_MSGS,  ({"nach Nordwesten","geht",
+                         "kommt durch eine Tuer herein"}),
+                D_SHORT, "Im Nordwesten siehst Du eine %se Holztuer.",
+                D_LONG,  "Sie trennt den Laden vom dahinterliegenden Raum.\n",
+                D_NAME,  "Holztuer",
+                D_FUNC,  "view",
+                D_FUNC2, "look_up"
               }) );
 
       Im Startraum:
 
       void view()
       {
-        write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
-              "laesst Dich aber passieren.\n");
+        tell_object(this_player(), break_string("Der Angestellte wirft Dir "
+          "einen missbilligenden Blick zu, laesst Dich aber passieren.",78));
       }
 
       Im Zielraum:
 
       void look_up()
       {
-        write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
-              "wieder in seine Akten.\n");
+        tell_object(this_player(), break_string("Ein alter Mann schaut kurz "
+          "zu Dir auf und vertieft sich dann wieder in seine Akten.",78));
       }
 
 
diff --git a/doc/lfun/move b/doc/lfun/move
index e2bc712..53593f8 100644
--- a/doc/lfun/move
+++ b/doc/lfun/move
@@ -82,6 +82,8 @@
    M_SILENT
         Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
         Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+        (Magier mit 'mschau an' sehen die Bewegungen dennoch, es wird
+         eine Standardmeldung ausgegeben.)
 
    M_GET
         Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
