diff --git a/doc/sphinx/props/P_ARRIVEMSG.rst b/doc/sphinx/props/P_ARRIVEMSG.rst
index 9adeb84..fb70ed9 100644
--- a/doc/sphinx/props/P_ARRIVEMSG.rst
+++ b/doc/sphinx/props/P_ARRIVEMSG.rst
@@ -19,12 +19,19 @@
 
      Die Property enthaelt die Meldungen, die beim Erreichen eines 
      Haltepunktes an die Reisenden und an den Haltepunkt-Raum ausgegeben
-     werden. Sie muss ein String-Array mit zwei Elementen enthalten.
+     werden. Sie muss ein String-Array mit zwei Elementen enthalten, von
+     denen die erste an den Reisenden, die zweite an den Haltepunkt
+     gesendet werden.
 
-     Fuer den Umbruch muss der Nutzer selbst Sorge tragen.
+     Der Platzhalter @WO kann verwendet werden, um die Bezeichnung des
+     aktuellen Haltepunktes (Rueckgabewert von QueryArrived()) einfuegen
+     zu lassen. Es werden alle Vorkommen des Platzhalters ersetzt.
+
+     Die Meldungen werden mit BS_LEAVE_MY_LFS umbrochen, d.h. man kann bei
+     Bedarf eigene Umbrueche einfuegen.
 
 LETZTE AENDERUNG
 ----------------
 ::
 
-     2020-09-01 Arathorn
+     2020-09-06 Arathorn
diff --git a/doc/sphinx/props/P_DEPARTMSG.rst b/doc/sphinx/props/P_DEPARTMSG.rst
index 266ad28..d900a2a 100644
--- a/doc/sphinx/props/P_DEPARTMSG.rst
+++ b/doc/sphinx/props/P_DEPARTMSG.rst
@@ -19,12 +19,19 @@
 
      Die Property enthaelt die Meldungen, die beim Verlassen eines 
      Haltepunktes an die Reisenden und an den Haltepunkt-Raum ausgegeben
-     werden. Sie muss ein String-Array mit zwei Elementen enthalten.
+     werden. Sie muss ein String-Array mit zwei Elementen enthalten, von
+     denen die erste an den Reisenden, die zweite an den Haltepunkt
+     gesendet werden.
 
-     Fuer den Umbruch muss der Nutzer selbst Sorge tragen.
+     Der Platzhalter @WO kann verwendet werden, um die Bezeichnung des
+     aktuellen Haltepunktes (Rueckgabewert von QueryArrived()) einfuegen
+     zu lassen. Es werden alle Vorkommen des Platzhalters ersetzt.
+
+     Die Meldungen werden mit BS_LEAVE_MY_LFS umbrochen, d.h. man kann bei
+     Bedarf eigene Umbrueche einfuegen.
 
 LETZTE AENDERUNG
 ----------------
 ::
 
-     2020-09-01 Arathorn
+     2020-09-06 Arathorn
diff --git a/std/transport.c b/std/transport.c
index 9fbe381..af68623 100644
--- a/std/transport.c
+++ b/std/transport.c
@@ -17,6 +17,7 @@
 #include <transport.h>
 #include <regexp.h>
 #include <hook.h>
+#include <break_string.h>
 
 
 /* transport.c
@@ -479,15 +480,19 @@
 
 static varargs void disconnect(int change, int change_time)
 {
-  object room;
-  mixed *departmsg;
+  string* departmsg = ({string*})QueryProp(P_DEPARTMSG);
+  string departmsg_me =  regreplace(departmsg[0], "@WO", QueryArrived(), 1);
+  string departmsg_env = regreplace(departmsg[1], "@WO", QueryArrived(), 1);
 
-  departmsg = QueryProp(P_DEPARTMSG);
+  send_room(this_object(),
+    break_string(departmsg_me, 78, 0, BS_LEAVE_MY_LFS),
+    MT_LOOK|MT_LISTEN);
 
-  if ((room = environment()) && pointerp(departmsg))
+  if (objectp(environment()))
   {
-    tell_room(this_object(),process_string(departmsg[0]));
-    tell_room(room,process_string(departmsg[1]));
+    send_room(environment(),
+      break_string(departmsg_env, 78, 0, BS_LEAVE_MY_LFS),
+      MT_LOOK|MT_LISTEN);
   }
 
   roomCode = 0;
@@ -497,8 +502,9 @@
 
 static varargs void connect(string room, string code)
 {
-  mixed *arrivemsg, *t;
-  object *trav;
+  mixed *t;
+  object *trav, ob;
+  string *trs, *msgs;
   int i;
 
   if (roomCode) disconnect();
@@ -511,13 +517,16 @@
     return;
   }
 
-  arrivemsg = QueryProp(P_ARRIVEMSG);
+  string* arrivemsg = ({string*})QueryProp(P_ARRIVEMSG);
+  string arrivemsg_me =  regreplace(arrivemsg[0], "@WO", QueryArrived(), 1);
+  string arrivemsg_env = regreplace(arrivemsg[1], "@WO", QueryArrived(), 1);
 
-  if (pointerp(arrivemsg))
-  {
-    tell_room(this_object(),process_string(arrivemsg[0]));
-    tell_room(room,process_string(arrivemsg[1]));
-  }
+  send_room(this_object(),
+    break_string(arrivemsg_me, 78, 0, BS_LEAVE_MY_LFS),
+    MT_LOOK|MT_LISTEN);
+  send_room(room,
+    break_string(arrivemsg_env, 78, 0, BS_LEAVE_MY_LFS),
+    MT_LOOK|MT_LISTEN);
 
   trav = filter(all_inventory(this_object()),#'living);
 
