diff --git a/gilden/abenteurer.c b/gilden/abenteurer.c
index 313e755..9b67770 100644
--- a/gilden/abenteurer.c
+++ b/gilden/abenteurer.c
@@ -361,11 +361,11 @@
   return GetDetail("karten");
 }
 
-void init() {
+public varargs void init(object origin) {
   int res;
   object ob;
 
-  ::init();
+  ::init(origin);
 
   // Von Ark, an alle Rassenstartpunkte
   if (ob=present("\nentdecker_obj",this_player()))
diff --git a/obj/tools/lupe.c b/obj/tools/lupe.c
index 5d6f109..b3734fb 100644
--- a/obj/tools/lupe.c
+++ b/obj/tools/lupe.c
@@ -155,11 +155,11 @@
 	printf("Error when loading profile: %O\n",pfile);
 }
 
-void init()
+varargs void init(object origin)
 {
   int i,ch;
   
-  ::init();
+  ::init(origin);
   if (environment()!=this_player()) return;
 //  if (!IS_LEARNER(this_player())) return;
   if (!IS_LEARNER(this_player())) return destruct(this_object());
diff --git a/p/service/loco/std/mailcabin.c b/p/service/loco/std/mailcabin.c
index bd91261..134d28d 100644
--- a/p/service/loco/std/mailcabin.c
+++ b/p/service/loco/std/mailcabin.c
@@ -71,7 +71,7 @@
   return r;
 }
 
-void init() {
+public varargs void init(object origin) {
   (commands::init());
   if (environment(this_player())==environment(this_object())) {
     add_action("rein","betrete");
diff --git a/room/death/death_room.c b/room/death/death_room.c
index 5e59f20..1619e39 100644
--- a/room/death/death_room.c
+++ b/room/death/death_room.c
@@ -31,7 +31,8 @@
 public int SmartLog( string creat, string myname, string str, string date );
 public mixed hier_geblieben( mixed dest, int methods, string direction,
                              string textout, string textin );
-public void init()
+
+public varargs void init(object oldenv)
 {
   this_player()->move("/room/death/virtual/death_room_"+getuid(this_player()),
 	     M_NOCHECK|M_SILENT|M_NO_SHOW);
diff --git a/room/death/death_room_vc.c b/room/death/death_room_vc.c
index 71038fb..e0e4986 100644
--- a/room/death/death_room_vc.c
+++ b/room/death/death_room_vc.c
@@ -57,7 +57,7 @@
   return;
 }
 
-public void exit(object liv)
+public varargs void exit(object liv, object dest)
 {
   call_out("test_remove",2);
   return;
@@ -71,12 +71,12 @@
                       lambda( ({'x/*'*/}), ({#'destruct, 'x}) ) );
 }
 
-public void init()
+public varargs void init(object oldenv)
 {  
   string prayroom;
   int res;
 
-  ::init();
+  ::init(oldenv);
   if ( !query_once_interactive(this_player()) ){
       call_out( "deep_destruct", 0, this_player() );
       return;
diff --git a/room/jail.c b/room/jail.c
index 1331223..9cdcc55 100644
--- a/room/jail.c
+++ b/room/jail.c
@@ -22,9 +22,9 @@
   SetProp(P_INDOORS,1);
 }
 
-void init()
+public varargs void init(object oldenv)
 {
-  ::init();
+  ::init(oldenv);
   if (!query_once_interactive(this_player()))
     return;
   if ( IS_DEPUTY(this_player()) ) // EM+ sind sowieso Deputies
@@ -42,7 +42,7 @@
 }
 
 // Move-Hook austragen.
-void exit(object liv) {
+varargs void exit(object liv, object dest) {
   if (objectp(liv) && !IS_DEPUTY(liv))
     liv->HUnregisterFromHook(H_HOOK_MOVE,this_object());
 }
diff --git a/room/welcome/std.c b/room/welcome/std.c
index eae3cee..673681a 100644
--- a/room/welcome/std.c
+++ b/room/welcome/std.c
@@ -39,11 +39,11 @@
   }, F_QUERY_METHOD);
 }
 
-void init() {
+public varargs void init(object oldenv) {
   set_next_reset(300);
   if ( objectp(PL) )
     call_out("Sequenz", 0, 0);
-  return ::init();
+  return ::init(oldenv);
 }
 
 // Nix resetten, aber Raum entsorgen, wenn kein Spieler drin.
