diff --git a/README b/README
index e7308e4..4217fd1 100644
--- a/README
+++ b/README
@@ -73,8 +73,11 @@
 13. Ein weiteres Beispiel fuer eine dynamische Langbeschreibung, dynamisches
     Detail. Ausserdem ein NPC, der eine selbstdefinierte Prop benutzt.
   room/huette13.c
-14. Ein Beispiel fuer einen Call_out.
+14. Ein Beispiel fuer call_out().
   room/huette14.c
+15. Ein Beispiel mit einem Raum, wo etwas im init() passiert. Gleichzeitig
+  ein weiteres Beispiel fuer call_out().
+  room/huette15.c
 
 
 B. Unser erster eigener NPC
diff --git a/room/huette15.c b/room/huette15.c
new file mode 100644
index 0000000..25885bb
--- /dev/null
+++ b/room/huette15.c
@@ -0,0 +1,48 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+private void greeting();
+private string* greeted = ({});
+
+
+protected void create() {
+  ::create();
+
+  SetProp(P_INT_SHORT, "Eine schummrige Huette");
+  SetProp(P_INT_LONG, BSLF(
+    "In diesem Raum hier ist nichts los. Du kannst also eigentlich einfach "
+    "weitergehen."));
+
+  SetProp(P_LIGHT, 1);
+  SetProp(P_INDOORS, 1);
+  SetProp(P_LIGHT_TYPE, LT_GLOWING);
+}
+
+void reset() {
+  ::reset();
+  /* Bei Raumreset "vergessen" wir, wer alles schon die verzoegerte Meldung
+     bekommen hat, damit man die auch mehrmals erhalten kann, ohne dass man
+     jedesmal von ihr bespammt wird. */
+  greeted = ({});
+}
+
+public varargs void init(object origin) {
+  ::init();
+
+  if (TP &&
+      interactive(TP) &&
+      member(greeted, getuuid(TP)) == -1 &&
+      find_call_out(#'greeting) == -1)
+    call_out(#'greeting, 3);
+}
+
+private void greeting() {
+  /* Wir pruefen hier, ob der Spieler, der den Callout ausgeloest hat,
+     ueberhaupt noch anwesend ist. Wenn der Spieler gestorben ist, ausgeloggt
+     hat oder den Raum verlassen hat, machen wir gar nichts. */
+  if (ENV(TP) == TO)
+    greeted += ({getuuid(TP)});
+    tell_object(TP, BSPS(
+      "Tatsaechlich. In diesem Raum hier ist ueberhaupt nichts los."));
+}
