diff --git a/doc/efun/tell_room b/doc/efun/tell_room
index 77f302c..0f18ab5 100644
--- a/doc/efun/tell_room
+++ b/doc/efun/tell_room
@@ -1,67 +1,36 @@
-FUNKTION:
-        void tell_room(string|object obj, string str);
-        void tell_room(string|object obj, string str, object *exclude);
+SYNOPSIS
+        void tell_room(string|object obj, string str)
+        void tell_room(string|object obj, string str, object *exclude)
 
         void tell_room(string|object obj, mixed *|mapping|struct|object msg)
-        void tell_room(string|object obj, mixed *|mapping|struct|object  msg
-                                        , object *exclude);
+        void tell_room(string|object obj, mixed *|mapping|struct|object msg,
+                                                     object *exclude)
 
-BESCHREIBUNG:
+BESCHREIBUNG
         Gibt einen Text <str> an den Raum <obj> aus. <obj> kann auch der
-        Objektname des Raumes als String sein.
-        Wenn das Raumobjekt mit seinem Namen angegeben ist, sucht der Driver
-        das Objekt unter diesem Namen und laedt es, falls notwendig.
+        Name des Raumes als String sein. Wenn das Objekt, das die Meldung
+        erhaelt, nicht ein interaktives Objekt (also kein User) ist, wird
+        im Empfaenger die Funktion catch_tell() mit dem Text als Argument
+        aufgerufen. Falls ein Lebewesen die Funktion catch_tell() definiert,
+        wird der Text hier ausgewertet und nicht an den User ausgegeben.
+        Wenn das Empfaengerobjekt mit seinem Namen angegeben ist, sucht der
+        Driver das Objekt unter diesem Namen und laedt es, falls notwendig.
+        Wenn das Array <*exclude> angegeben ist, wird der Text an die
+        Objekte in <*exclude> nicht ausgegeben.
 
-        Ist die Nachricht ein String, wird der Text an interaktive Objekte
-        direkt ausgegeben, fuer andere Objekte wird die lfun catch_tell()
-        in diesen aufgerufen.
-        Falls ein Lewebesen die Funktion catch_tell() definiert (-> shadow),
-        so wird der Text hier ausgewertet und nicht an den User ausgegeben.
+        Wenn das zweite Argument ein nicht-String ist, wird in allen
+        Lebewesen, die den Text erhalten, catch_msg() aufgerufen (statt
+        catch_tell()).
 
-        Wenn das zweite Argument, die Nachricht, kein String ist, wird in
-        allen Lebewesen, die den Text erhalten, catch_msg() anstatt
-        catch_tell() aufgerufen.
+BEISPIELE
+        An alle Lebewesen im Raum soll ein simples "Hi!" gesendet werden:
 
-        Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
-        die darin enthaltenen Objekte gesendet wird.
-        Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
-        und diese selbst nicht erhalten soll.
+            tell_object(environment(this_player()), "Hi!\n");
 
-BEMERKUNGEN:
-        - der Eintrag von mehreren Anwesenden in *exclude ist moeglich
-        - wird in einem catch_msg() der Wert von <msg> veraendert, erhalten
-          alle nachfolgenden Objekte das veraenderte <msg> (Referenz!)
+        Folgendes Beispiel zeigt, wie tell_room() zusammen mit catch_tell()
+        funktioniert.
 
-        - say("str") ist verhaltensgleich zu
-          tell_room(environment(), "str", ({this_player()||this_object()}))
-
-BEISPIELE:
-        // Dies ist ein einfaches Beispiel fuer eine Meldung an alle An-
-        // wesenden im Raum.
-
-        tell_room(this_object(),"Ein leichter Wind kommt auf.\n");
-
-        // Diese Meldung wird im Raum /d/ebene/ark/raum.c ausgegeben, dieser
-        // Raum muss nicht derjenige sein, in dem das tell_room() ausgefuehrt
-        // wird.
-
-        tell_room("/d/ebene/ark/raum","Ein leichter Wind kommt auf.\n");
-
-
-        // Diese Meldung wird an alle Anwesenden im Raum AUSSER this_player()
-        // (der diese Meldung ausgeloest hat) ausgegeben. Der muss eine ge-
-        // sonderte Meldung ueber sein Stolpern per write() oder
-        // tell_object() bekommen.
-        tell_room(this_object(),
-                  break_string(this_player()->Name()+" stolpert.", 78),
-                  ({ this_player() }));
-        tell_object(this_player(), "Du stolperst.\n");
-
-        // Ein Beispiel mit zwei Objekten, das zeigt, wie das Zusammenspiel
-        // von catch_tell() und tell_room() ablaueft. Objekt1 ist ein
-        // Lebewesen mit Namen "Dummymonster", Objekt2 verteilt die Meldung:
-
-        Objekt1 (ein Lebewesen, steht im Env von this_player()):
+        Objekt1 (ein Lebewesen):
             void catch_tell(string str) {
                 write("Empfangen: "+str+"\n");
             }
@@ -71,9 +40,9 @@
                 tell_room(environment(this_player()), "Hallo Welt!\n");
             }
 
-SIEHE AUCH
-        Aehnlich:   tell_object(E), write(E), shout(E), say(E), printf(E)
-        Verwandt:   catch_tell(E), catch_msg(A)
-        Sonstiges:  object_name(E)
+GESCHICHTE
+        LDMud 3.3.686 erlaubt die Verwendung eines mapping/struct/object als
+        zweites Argument.
 
-7.Aug 2007 Gloinson
+SIEHE AUCH
+        write(E), say(E), tell_object(E), catch_tell(A), catch_msg(A)
