diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index f27bdea..7bf096c 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -829,6 +829,7 @@
   mapping save;
   mixed index, res;
   int i;
+  string oldpath;
 
   // nur Strings und 0 zulassen
   if ((!stringp(name) || !sizeof(name)) && 
@@ -839,6 +840,24 @@
          "sefun::save_object()! Argument was %O\n",name));
   }
 
+  if (stringp(name)) {
+    // abs. Pfad erzeugen. *seufz*
+    if (name[0]!='/')
+      name = "/" + name;
+    oldpath = name;
+    // automatisch in LIBDATADIR speichern
+    if (strstr(name,"/"LIBDATADIR"/") != 0) {
+      name = "/"LIBDATADIR + name;
+      // wenn das Verzeichnis nicht existiert, ggf. anlegen
+      string dir = name[0..strrstr(name,"/")-1];
+      if (file_size(dir) != FSIZE_DIR) {
+        if (mkdirp(dir) != 1)
+          raise_error("save_object(): kann Verzeichnis " + dir
+              + " nicht anlegen!");
+      }
+    }
+  }
+
   save = m_allocate(0, 2);
   properties = (mapping)previous_object()->QueryProperties();
 
@@ -862,12 +881,19 @@
   // save object!
   previous_object()->_set_save_data(save);
   // format: wie definiert in config.h
-  if (stringp(name))
+  if (stringp(name)) {
     res = funcall(bind_lambda(#'efun::save_object, previous_object()), name,
        __LIB__SAVE_FORMAT_VERSION__);
+    // wenn erfolgreich und noch nen Savefile existiert, was nicht unter
+    // /data/ liegt, wird das geloescht.
+    if (!res && oldpath
+        && file_size(oldpath+".o") >= 0)
+      rm(oldpath+".o");
+  }
   else
     res = funcall(bind_lambda(#'efun::save_object, previous_object()),
        __LIB__SAVE_FORMAT_VERSION__);
+
   previous_object()->_set_save_data(0);
 
 #ifdef IOSTATS
@@ -900,6 +926,18 @@
   int i;
   closure cl;
 
+  // abs. Pfad erzeugen. *seufz*
+  if (name[0]!='/')
+    name = "/" + name;
+
+  // wenn kein /data/ vorn steht, erstmal gucken, ob das Savefile unter /data/
+  // existiert. Wenn ja, wird das geladen.
+  if (strstr(name,"/"LIBDATADIR"/") != 0) {
+    string path = "/"LIBDATADIR + name;
+    if (file_size(path + ".o") >= 0)
+      name = path;
+  }
+
   // get actual property settings (by create())
   properties = (mapping)previous_object()->QueryProperties();
 
