diff --git a/std/player/comm_vault.c b/std/player/comm_vault.c
new file mode 100644
index 0000000..81541d6
--- /dev/null
+++ b/std/player/comm_vault.c
@@ -0,0 +1,58 @@
+#pragma strict_types, rtt_checks, lightweight
+
+#define NEED_PROTOTYPES
+#include <player/comm.h>
+
+inherit "/std/player/comm_structs";
+
+nosave string uuid;
+// nosave ist wichtig - niemand soll den buffer mit save_value() auslesen
+// koennen!
+nosave struct stored_msg_s *buffer = ({});
+
+protected void create_lw()
+{
+    uuid = getuuid(previous_object());
+}
+
+public string uuid()
+{
+    return uuid;
+}
+
+public struct stored_msg_s *Retrieve()
+{
+//    if (getuid(this_object()) == getuid(previous_object()))
+    {
+        return buffer;
+    }
+    return 0;
+}
+
+public void Empty()
+{
+//    if (getuid(this_object()) == getuid(previous_object()))
+    {
+        buffer = ({});
+    }
+}
+
+public int store_msg(string msg, int msg_type, string msg_action,
+                     string msg_prefix, object origin)
+{
+    // Nur KOBOLD in /secure darf Nachrichten speichern und es werden nur
+    // Nachrichten von Spielern/Magiern gespeichert.
+    if (object_name(previous_object()) != KOBOLD
+        || !query_once_interactive(origin))
+        return MSG_FAILED;
+    if (sizeof(buffer) >= MAX_KOBOLD_LIMIT)
+        return MSG_BUFFER_FULL;
+
+    buffer += ({ (<stored_msg_s> msg:msg, type:msg_type,
+                  prefix: msg_prefix, action: msg_action,
+                  sendername: ({string})origin.query_real_name(),
+                  timestamp: time())
+               });
+    return MSG_BUFFERED;
+}
+
