diff --git a/obj/kiste.c b/obj/kiste.c
new file mode 100644
index 0000000..6eb488c
--- /dev/null
+++ b/obj/kiste.c
@@ -0,0 +1,35 @@
+/* Leider leider liegt der Standard-Behaelter nicht in der Mudlib, sondern
+   in einer Region, und ausserhalb eines Repos. Hoffentlich aendert sich
+   das bald mal. */
+inherit "/d/wueste/durian/behaelter";
+
+#include __PATH__(1)"defs.h"
+
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  SetProp(P_SHORT, "Eine grosse Kiste");
+  SetProp(P_LONG, BSLF(
+    "Du kannst sie oeffnen, schliessen, Sachen hineinlegen oder "
+    "herausnehmen. Das Uebliche halt."));
+
+  SetProp(P_NAME, "Kiste");
+  SetProp(P_GENDER, FEMALE);
+  AddId(({"kiste"}));
+
+
+  SetProp(P_VALUE, 0);
+  SetProp(P_WEIGHT, 14500);
+  SetProp(P_SIZE, 300);
+  SetProp(P_NOGET, BSLF(
+    "Die Kiste wurde auf eine Tube Pattex gestellt, sie ist damit auf ewig "
+    "untrennbar mit dem Boden verbunden."));
+
+  SetProp(P_MATERIAL, ([MAT_MISC_WOOD:90, MAT_STEEL:10]));
+}
+
diff --git a/room/huette16.c b/room/huette16.c
new file mode 100644
index 0000000..23483a0
--- /dev/null
+++ b/room/huette16.c
@@ -0,0 +1,41 @@
+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(
+    "Du kannst hier im Raum Krempel hinlegen, der wird bei Raumreset in die "
+    "Kiste verschoben. Das kannst Du mit\n"
+    "  xcall $h->reset()\n"
+    "auch provozieren."));
+
+  SetProp(P_LIGHT, 1);
+  SetProp(P_INDOORS, 1);
+  SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+  AddItem(__PATH__(1)"obj/kiste", REFRESH_REMOVE);
+}
+
+void reset() {
+  ::reset();
+
+  object kiste = present_clone(__PATH__(1)"obj/kiste");
+  if (!objectp(kiste)) return; // sollte nicht passieren
+
+  object *zeugs = filter(all_inventory(), #'non_living);
+  if (arrayp(zeugs) && sizeof(zeugs)) {
+    tell_room(TO, BSLF(
+      "Der Raum gurgelt, die Kiste ruelpst."));
+    zeugs->move(kiste, M_PUT);
+  } else {
+    tell_room(TO, BSLF(
+      "Die Kiste geht diesmal leer aus."));
+  }
+}
