diff --git a/std/living/comm.c b/std/living/comm.c
index 61c5b70..812ea6f 100644
--- a/std/living/comm.c
+++ b/std/living/comm.c
@@ -138,8 +138,42 @@
   return MT_LOOK;
 }
 
+// ReceiveMsg() wird in <player/comm.c> und <npc/comm.c> implementiert und ist
+// hier nicht erforderlich (Cross-Defintion von LPC sei Dank).
+//public varargs int ReceiveMsg(string msg, int msg_type, string msg_action,
+//                              string msg_prefix, object origin)
+//{}
+
+
 // Wrapper fuer ReceiveMsg()
 
+// Bekommt ein wave_s oder davon geerbte Struct uebergeben, welche daher
+// mindestens Nachricht, Typ und Prefix enthaelt. Ist ansonsten
+// funktionsgleich zu ReceiveMsg().
+public int ReceiveWave(struct wave_s wave, string msg_action, object origin)
+{
+  if (!wave) return MSG_FAILED;
+  return ReceiveMsg(wave.msg, wave.type, msg_action, wave.prefix,
+                    origin);
+}
+
+// Bekommt ein wave_s oder davon geerbte Struct uebergeben, welche daher
+// mindestens Nachricht, Typ und Prefix enthaelt. Wird ein wave_dyn_s
+// uebergeben und ist das <cl>-Element eine Closure, wird diese ausgewertet
+// und kann Nachricht, Typ und Prefix veraendern. Ansonsten ist diese Funktion
+// funktionsgleich zu ReceiveWave().
+public int ReceiveDynWave(struct wave_s wave, string msg_action, object origin)
+{
+  if (!wave) return MSG_FAILED;
+  // Falls ein wave_dyn_s uebergeben wurde, ist ein Element cl enthalten und
+  // -> gibt das zurueck. ( . funktioniert nicht, weil der Compiler von einem
+  // wave_s ausgeht.
+  if (closurep(wave->cl))
+      wave = funcall(wave->cl, wave);
+  return ReceiveMsg(wave.msg, wave.type, msg_action, wave.prefix,
+                    origin);
+}
+
 public int ReceiveNotify(string msg, string action)
 {
   // Da MT_NOTIFICATION immer zugestellt wird, ist keine Fehlerbehandlung
diff --git a/sys/living/comm.h b/sys/living/comm.h
index 500641a..79a1283 100644
--- a/sys/living/comm.h
+++ b/sys/living/comm.h
@@ -101,6 +101,11 @@
 public varargs int ReceiveMsg(string msg, int msg_type = 0,
     string msg_action = comm_guess_action(), string msg_prefix = 0,
     object origin = previous_object());
+public int ReceiveWave(struct wave_s wave,
+    string msg_action = comm_guess_action(), object origin = previous_object());
+public int ReceiveDynWave(struct wave_s wave,
+    string msg_action = comm_guess_action(), object origin = previous_object());
+
 public int ReceiveNotify(string msg, string action = comm_guess_action());
 
 #endif // __LIVING_COMM_H_PROTO__
