diff --git a/d/seher/haeuser/bausparvertrag.c b/d/seher/haeuser/bausparvertrag.c
index 44d9976..1985e3b 100644
--- a/d/seher/haeuser/bausparvertrag.c
+++ b/d/seher/haeuser/bausparvertrag.c
@@ -42,23 +42,23 @@
   SetProp(P_ARTICLE,1);
   SetProp(P_WEIGHT, 0);
   SetProp(P_GENDER,1);
+  
   AddId( ({"bausparvertrag", "vertrag", "sehe\rvertrag"}) );
+
   AddCmd("lies","lesen");
-  AddCmd( ({ "unterschreibe", "unterschreib" }), lambda( ({}),
-    ({#',, ({#'notify_fail, "Hier kannst Du den Vertrag nicht unterschreiben!\n" }),
-	   ({#'return, 0})
-    }) ) );
-  AddCmd( ({ "zerreiss", "zerreisse" }), lambda( ({ 'str }),
-    ({#',, ({#'notify_fail, "Was willst Du zerreissen?\n"}),
-	   ({#'?!, ({#'id, 'str}), ({#'return, 0}) }),
-	   ({#'=, 'blk, ({#'present, "\n block", ({#'this_player}) }) }),
-	   ({#'write, "Du zerreisst Deinen Vertrag.\n"}),
-	   ({#'write_file, PATH+"log/BANK.LOG", ({#'sprintf, "%s - Vertrag: %s zerriss ihn.\n",
-	       ({#'dtime, ({#'time}) }), ({#'getuid, ({#'this_player})})})}),
-	   ({#'?, 'blk, ({#'call_other, 'blk, "remove", 1}) }),
-	   ({#'remove, 1}),
-	   ({#'return, 1})
-    }) ) );
+  AddCmd("unterschreibe|unterschreib&\nimp", 0,
+      "Hier kannst Du den Vertrag nicht unterschreiben!\n");
+  AddCmd("zerreiss|zerreisse&@ID", function int (string str) {
+      object blk = present_clone(HAEUSERPFAD+"block", this_player());
+      write("Du zerreisst Deinen Vertrag.\n");
+      write_file(HAEUSERPFAD+"log/BANK.LOG", sprintf(
+          "%s - Vertrag: %s zerriss ihn.\n", 
+          dtime(time()), getuid(this_player())));
+      if (objectp(blk)) 
+        blk->remove(1);
+      remove(1);
+      return 1;
+    }, "Was willst Du zerreissen?");
 }
 
 string _query_long()
@@ -112,7 +112,7 @@
   Set(P_AUTOLOADOBJ, ({ Query(P_AUTOLOADOBJ)[0], flag }) );
 }
 
-public int move(mixed dest, int meth)
+varargs public int move(object|string dest, int meth)
 {
   object penv;
   int ret;
diff --git a/d/seher/haeuser/queue.c b/d/seher/haeuser/queue.c
index bf2ca56..2c003b5 100644
--- a/d/seher/haeuser/queue.c
+++ b/d/seher/haeuser/queue.c
@@ -27,7 +27,6 @@
 static void enqueue(object ob);
 private void leaveQueue(object ob, int silent);
 
-private object *queuedPeople();
 private int queueScan();
 private object adjust(int thresh);
 
@@ -35,7 +34,7 @@
 void BecomesNetDead(object player);
 void PlayerQuit(object player);
 
-create()
+protected void create()
 {
   if (IS_BLUE(this_object())) return;
 
@@ -78,8 +77,8 @@
 
 int clean_up(int i) { return 0; }
 
-int
-remove()
+public varargs int
+remove(int silent)
 {
   string *wer;
   mixed raus;
@@ -100,30 +99,19 @@
     peopleInQueue[wer[i],1]->move(raus, M_GO | M_SILENT | M_NO_SHOW);
     }
   }
-  return ::remove();
+  return ::remove(silent);
 }
 
 string
 _query_long()
 {
-  string ret, add;
-  mixed *people, ob;
-  closure n;
-
-  people = filter(all_inventory(this_object()), #'interactive/*'*/);
-
-  ret = Query(P_LONG);
-  add = "In der Schlange stehen " + QueryProp(Q_LENGTH) + " Leute.";
+  <string|object>* people = filter(all_inventory(ME), #'interactive);
+  string ret = Query(P_LONG);
+  string add = "In der Schlange stehen " + QueryProp(Q_LENGTH) + " Leute.";
   if (sizeof(people)) {
-    n = lambda( ({ 'ob }), ({#'call_other, 'ob, "Name", WER}) );
-    people = map(people, n);
-    add += " Unter anderem steh";
-    if (sizeof(people) == 1)
-      add += ( "t dort " + people[0] + "." );
-    else {
-      add += ( "en dort " + implode(people[0..<2], ", ") +
-         " und " + people[<1] + "." );
-    }
+    people = people->Name(WER);
+    add += sprintf(" Unter anderem steh? dort %s.", 
+                   sizeof(people)==1?"t":"en", CountUp(people));
   }
   return ret + break_string(add, 76);
 }
@@ -333,7 +321,7 @@
   return ret;
 }
 
-rotate()
+void rotate()
 {
   object ich;
   string oth, *msgs;
@@ -381,7 +369,7 @@
   call_out("rotate", QueryProp(Q_CYCLE_TIME));
 }
 
-funny()
+void funny()
 {
   string m;
 
diff --git a/d/seher/haeuser/seherbank.c b/d/seher/haeuser/seherbank.c
index 4e47265..cb4fb63 100644
--- a/d/seher/haeuser/seherbank.c
+++ b/d/seher/haeuser/seherbank.c
@@ -7,7 +7,7 @@
 
 inherit "/std/room";
 
-create()
+protected void create()
 {
     object q;
     
