diff --git a/p/daemon/debug.c b/p/daemon/debug.c
index e7270df..3a92cb3 100644
--- a/p/daemon/debug.c
+++ b/p/daemon/debug.c
@@ -12,7 +12,7 @@
     d_end = d_start = e_end = e_start = file_size(__DEBUG_LOG__);
 }
 
-int check_ch_access( string ch, object pl, string cmd, string txt )
+int ch_check_access( string ch, object pl, string cmd, string txt )
 {
     mixed tmp;
     
diff --git a/room/death/death_room.c b/room/death/death_room.c
index 5669267..a7cc64e 100644
--- a/room/death/death_room.c
+++ b/room/death/death_room.c
@@ -16,6 +16,7 @@
 #include <new_skills.h>
 
 inherit "/std/room";
+nosave variables inherit "/std/channel_supervisor";
 
 mixed *players;
 mapping msgCache;
@@ -41,9 +42,10 @@
 
 public void create()
 {
-  if (IS_CLONE(this_object())) return;
+    if (IS_CLONE(this_object())) return;
     ::create();
-    
+    ch_read_init_file();
+
     players = ({});
     flush(0);
 
@@ -65,6 +67,15 @@
              "von denen geheimnisvolle Runen leuchten.\nTod.", 78, 0, 1 ) );
 }
 
+public varargs string name(int casus,int demon)
+{
+    return room::name(casus, demon);
+}
+
+public varargs string Name(int casus, int demon)
+{
+    return room::Name(casus, demon);
+}
 
 public void reset()
 {
diff --git a/secure/misc/twitter.c b/secure/misc/twitter.c
index 99245b2..b749072 100644
--- a/secure/misc/twitter.c
+++ b/secure/misc/twitter.c
@@ -17,8 +17,12 @@
 
 #define DEBUG(x) tell_object(find_player("rumata"),x+"\n")
 
-void create() {
-	seteuid(getuid());
+nosave variables inherit "/std/channel_supervisor";
+
+protected void create() {
+  ::create();
+	ch_read_init_file();
+  seteuid(getuid());
   CHMASTER->join("twitter",this_object());
 }
 
@@ -129,6 +133,10 @@
 	return "(Twitter)";
 }
 
+varargs string name( int casus, int demon ) {
+	return "twitter";
+}
+
 varargs string Name( int casus, int demon ) {
 	return "Twitter";
 }
diff --git a/secure/udp/channel.c b/secure/udp/channel.c
index 3592ffe..d640484 100644
--- a/secure/udp/channel.c
+++ b/secure/udp/channel.c
@@ -16,8 +16,17 @@
 #define COMMAND                "cmd"
 #define CHANNEL                "channel"
 
+inherit "/std/channel_supervisor";
+
 private nosave mixed _name_;
 
+protected void create()
+{
+  ::create();
+  ch_set_sv_name("<Intermud>");
+  ch_read_init_file();
+}
+
 int filter_listeners(object ob, string channel) {
     return ob->QueryProp(P_INTERMUD);
 }
@@ -81,8 +90,14 @@
   return 1;
 }
 
-string name() { return _name_ || "<Intermud>"; }
-string Name() {return capitalize(_name_ || "<Intermud>");}
+public varargs string name()
+{
+  return _name_ || "<Intermud>";
+}
+public varargs string Name()
+{
+  return capitalize(_name_ || "<Intermud>");
+}
 
 private void _send(string mud, mixed data, mapping request)
 {
diff --git a/std/corpse.c b/std/corpse.c
index 05d6424..43e117e 100644
--- a/std/corpse.c
+++ b/std/corpse.c
@@ -20,7 +20,8 @@
 
 //#define NEED_PROTOTYPES
 
-inherit "std/container";
+inherit "/std/container";
+nosave variables inherit "/std/channel_supervisor";
 
 #include <properties.h>
 #include <language.h>
@@ -51,7 +52,7 @@
 object _channel( object ob );
 void transform_into_pile();
 
-void create()
+protected void create()
 {
   if (object_name(ME) == __FILE__[0..<3]) {
     set_next_reset(-1);
@@ -70,7 +71,26 @@
     SetProp(P_ARTICLE, 1);
   }
   else
+  {
     SetProp( P_ARTICLE, 0 );
+    ch_read_init_file();
+    ch_set_sv_name("Lars");
+    CHMASTER->join("moerder",this_object());
+  }
+}
+
+public varargs string name(int casus,int demon)
+{
+  if (!clonep() && object_name(previous_object()) == CHMASTER)
+    return channel_supervisor::name(casus,demon);
+  return container::name(casus, demon);
+}
+
+public varargs string Name(int casus, int demon)
+{
+  if (!clonep() && object_name(previous_object()) == CHMASTER)
+    return channel_supervisor::name(casus,demon);
+  return container::Name(casus, demon);
 }
 
 /* Damit die Leiche nicht voll wird... */
