Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/replace_program b/doc/efun/replace_program
new file mode 100644
index 0000000..4812d4e
--- /dev/null
+++ b/doc/efun/replace_program
@@ -0,0 +1,52 @@
+SYNOPSIS
+ void replace_program();
+ void replace_program(string program);
+
+BESCHREIBUNG
+ Ersetzt ein Programm mit dem geerbten Programm (inherit) <program>.
+ Das Argument <program> kann weggelassen werden, wenn nur ein Programm
+ geerbt wird. In diesem Fall waehlt der Treiber automatisch dieses eine
+ geerbte Programm.
+
+ Diese Efun ist nuetzlich, wenn es um Leistung und Speicherverbrauch
+ des Treibers geht. Ein Programm, welches keine zusaetzlichen Variablen
+ oder Funktionen braucht (ausser waehrend der Erstellung), kann
+ replace_program() aufrufen, um die Trefferquote des Treibers auf den
+ Funktionen-Caches zu erhoehen. Dies verringert die Anzahl Programme
+ im System.
+
+ Raeume sind ein gutes Beispiel fuer die Anwendung dieser Funktion, da
+ viele Raeume nur aus einem Inherit und einer Konfigurationsfunktion
+ bestehen. Jedes Objekt kann replace_program() aufrufen, verliert dabei
+ jedoch alle Variablen und Funktionen, die nicht im geerbten Programm
+ definiert sind.
+
+ Wenn replace_program() angewendet wird, werden Shadows vom Objekt
+ entfernt, in dem replace_program() stattfindet. Dies ist so seit
+ 3.2@166.
+
+ Es ist nicht moeglich, replace_program() aufzurufen, wenn es an das
+ Objekt gebundene (Lambda-) Closures gibt. Hingegen ist es moeglich,
+ zuerst das Programm des Objekts zu ersetzen und dann Lambdaclosures
+ daran zu binden.
+
+ Das Ersetzen des Programms findet erst statt, wenn das Objekt
+ vollstaendig abgearbeitet wurde, nicht schon beim Aufruf der Funktion
+ replace_program(). Das kann dazu fuehren, dass Closures auf inzwischen
+ verschwundene Lfuns des Objekts referenzieren. Das stellt allerdings
+ kein Problem dar, solange diese Referenzen nicht ausgefuehrt werden.
+
+BEMERKUNGEN
+ Raeume benutzen replace_program automatisch. Es ist nicht sinnvoll
+ oder notwendig, replace_program selbst ohne Konsultaton mit einem
+ Erzmagier einzusetzen!
+
+BUGS
+ Wenn ein ersetzendes Programm virtuell geerbte Variablen enthaelt,
+ muss dieses Programm als erstes geerbt werden. Ohne diese
+ Einschraenkung ueberleben die falschen Variablen den
+ Ersetzungsprozess.
+
+AENDERUNGEN
+ LDMud 3.2.9 liess zu, dass das Argument <program> weggelassen wird,
+ wenn nur ein Inherit existiert.