diff --git a/doc/sefun/read_data b/doc/sefun/read_data
new file mode 100644
index 0000000..b0707ac
--- /dev/null
+++ b/doc/sefun/read_data
@@ -0,0 +1,18 @@
+SYNOPSIS
+        string read_data(string file, int start, int anzahl)
+
+BESCHREIBUNG
+        Diese Funktion macht genau das, was read_file() tut (also siehe dort),
+        allerdings stellt sie sicher, dass <file> immer mit einem /data/
+        beginnt (setzt es also notfalls davor).
+        Es wird also immer irgendwo unterhalb von /data/ gelesen.
+
+BEISPIEL
+        # read_data("/d/ebene/zesstra/blupp");
+        -> liest das File /data/d/ebene/zesstra/blupp.
+        # read_data("/data/d/ebene/zesstra/blupp");
+        -> tut dasselbe.
+
+SIEHE AUCH
+        write_data()
+        read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/doc/sefun/write_data b/doc/sefun/write_data
new file mode 100644
index 0000000..5a205d5
--- /dev/null
+++ b/doc/sefun/write_data
@@ -0,0 +1,23 @@
+SYNOPSIS
+        string write_data(string file, int start, int anzahl)
+
+BESCHREIBUNG
+        Diese Funktion macht genau das, was write_file() tut (also siehe dort),
+        allerdings stellt sie sicher, dass <file> immer mit einem /data/
+        beginnt (setzt es also notfalls davor).
+        Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+
+        Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
+        ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
+        Code getrennt abgelegt sind. Dies vereinfacht z.B. die
+        Datensicherung.
+
+BEISPIEL
+        # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
+        -> schreibt in das File /data/d/ebene/zesstra/blupp.
+        # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
+        -> tut dasselbe.
+
+SIEHE AUCH
+        read_data()
+        read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/secure/simul_efun/files.c b/secure/simul_efun/files.c
new file mode 100644
index 0000000..291bef6
--- /dev/null
+++ b/secure/simul_efun/files.c
@@ -0,0 +1,45 @@
+#include "/sys/files.h"
+
+public varargs string read_data(string file, int start, anzahl)
+{
+    if (!stringp(file))
+      raise_error("Bad arg 1 to read_data(): expected 'string'.\n");
+
+    // Wenn Pfad nicht absolut, ist das nen Fehler, daher wird das nicht
+    // korrigiert.
+
+    // wenn kein /data/ vorn steht, wird es vorangestellt.
+    if (strstr(file,"/"LIBDATADIR"/") != 0)
+    {
+      file = "/"LIBDATADIR + file;
+    }
+    // read_file() nicht direkt rufen, sondern vorher als closure ans
+    // aufrufende Objekt binden. Sonst laeuft die Rechtepruefung in
+    // valid_write() im Master unter der Annahme, dass die simul_efun.c mit
+    // ihrer root id was will.
+    return funcall(bind_lambda(#'efun::read_file, previous_object()),
+                   file, start, anzahl);
+}
+
+public varargs int write_data(string file, string str, int flags)
+{
+    if (!stringp(file))
+      raise_error("Bad arg 1 to write_data(): expected 'string'.\n");
+    if (!stringp(str))
+      raise_error("Bad arg 2 to write_data(): expected 'string'.\n");
+
+    // Wenn Pfad nicht absolut, ist das nen Fehler, daher wird das nicht
+    // korrigiert.
+
+    // wenn kein /data/ vorn steht, wird es vorangestellt.
+    if (strstr(file,"/"LIBDATADIR"/") != 0)
+    {
+      file = "/"LIBDATADIR + file;
+    }
+    // write_file() nicht direkt rufen, sondern vorher als closure ans
+    // aufrufende Objekt binden. Sonst laeuft die Rechtepruefung in
+    // valid_write() im Master unter der Annahme, dass die simul_efun.c mit
+    // ihrer root id was will.
+    return funcall(bind_lambda(#'efun::write_file, previous_object()),
+                   file, str, flags);
+}
diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index 2a89fcf..e36d141 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -86,6 +86,7 @@
 #include __DIR__"shadow.c"
 #include __DIR__"livings.c"
 #include __DIR__"comm.c"
+#include __DIR__"files.c"
 
 #define TO        efun::this_object()
 #define TI        efun::this_interactive()
