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);
 
