diff --git a/doc/master/compile_object b/doc/master/compile_object
new file mode 100644
index 0000000..1b55658
--- /dev/null
+++ b/doc/master/compile_object
@@ -0,0 +1,11 @@
+SYNOPSIS
+	object compile_object(string filename)
+
+DESCRIPTION
+	This function is caled if the interpreter cannot find the
+	file for an object to be loaded. The master object has now
+	the opportunity to return an object that will then serve as if
+	compiled from the given filename.
+
+	If 0 is returned, the usual ``Could not load descr for'' error
+	will occur.
diff --git a/doc/master/connect b/doc/master/connect
new file mode 100644
index 0000000..a1c7315
--- /dev/null
+++ b/doc/master/connect
@@ -0,0 +1,13 @@
+SYNOPSIS
+	object connect(void)
+
+DESCRIPTION
+	Return a login object that the requested connection should be
+	bound to. Note that the connection is not bound yet.
+
+	The lfun logon() will be applied to the login object after
+	binding the connection to it. That lfun has to return != 0 to
+	indicate success.
+
+SEE ALSO
+	logon(A), disconnect(M), interactive(E), exec(E)
diff --git a/doc/master/dangling_lfun_closure b/doc/master/dangling_lfun_closure
new file mode 100644
index 0000000..6bfaeb5
--- /dev/null
+++ b/doc/master/dangling_lfun_closure
@@ -0,0 +1,26 @@
+SYNOPSIS
+	void dangling_lfun_closure()
+
+DESCRIPTION
+	Handle a dangling lfun-closure.
+
+	This is called when the gamedriver executes a closure using a
+	vanished lfun. A proper handling is to raise a runtime error.
+
+	Technical:
+	  Upon replacing programs (see efun replace_program()), any
+	  existing lambda closures of the object are adjusted to the
+	  new environment. If a closure uses a lfun which vanished in
+	  the replacement process, the reference to this lfun is
+	  replaced by a reference to this function. The error will
+	  then occur when the execution of the adjusted lambda reaches
+	  the point of the lfun reference. There are two reasons for
+	  the delayed handling. First is that the program replacement
+	  and with it the closure adjustment happens at the end of a
+	  backend cycle, outside of any execution thread: noone would
+	  see the error at this time.  Second, smart closures might
+	  know/recognize the program replacement  and skip the call to
+	  the vanished lfun.
+
+SEE ALSO
+	closures(LPC)
diff --git a/doc/master/disconnect b/doc/master/disconnect
new file mode 100644
index 0000000..f7a9f3d
--- /dev/null
+++ b/doc/master/disconnect
@@ -0,0 +1,13 @@
+SYNOPSIS
+	void disconnect(object ob)
+
+DESCRIPTION
+	Handle the loss of the IP connection for the (formerly)
+	interactive object ob. The connection can be lost because the
+	the underlying transport connection was lost (``netdead''), or
+	because of a call to exec() or remove_interactive(). The
+	connection will be unbound upon return from this call.
+
+SEE ALSO
+	connect(M), remove_player(M), remove_interactive(E), exec(E),
+	interactive(E)
diff --git a/doc/master/epilog b/doc/master/epilog
new file mode 100644
index 0000000..eb51d75
--- /dev/null
+++ b/doc/master/epilog
@@ -0,0 +1,24 @@
+SYNOPSIS
+	void epilog(void)		/* compat in 3.2 */
+	string *epilog(int eflag)	/* !compat or 3.2.1 */
+
+DESCRIPTION
+	Perform final actions before opening the system to users.
+	The semantics of this function differ for compat and !compat
+	mode, and between 3.2 and 3.2.1.
+
+	Compat in 3.2: the objects from the INIT_FILE (#defined to
+	"room/init_file" at compile time in the parser) are already
+	loaded at this time. Normally there is nothing left to do for
+	this function.
+
+	!Compat and 3.2.1: the argument is the number of -e options that were
+	given to the parser on the commandline. Normally it is just 0
+	or 1. The function should return an array of strings, which
+	traditionally denote the objects to be preloaded with
+	master->preload(). Any other return value is interpreted as
+	``no object to preload''. The resulting strings will be passed
+	one at a time as arguments to preload().
+
+SEE ALSO	
+	preload(M), master(M)
diff --git a/doc/master/external_master_reload b/doc/master/external_master_reload
new file mode 100644
index 0000000..57913f0
--- /dev/null
+++ b/doc/master/external_master_reload
@@ -0,0 +1,10 @@
+SYNOPSIS
+	void external_master_reload()
+
+DESCRIPTION
+	Master was reloaded on external request by SIGUSR1.
+	It will be called after inaugurate_master() of course.
+	If you plan to do additional magic here, you're welcome.
+
+SEE ALSO
+	inaugurate_master(M)
diff --git a/doc/master/flag b/doc/master/flag
new file mode 100644
index 0000000..e04e91d
--- /dev/null
+++ b/doc/master/flag
@@ -0,0 +1,41 @@
+SYNOPSIS
+	void flag(string arg)
+
+DESCRIPTION
+	Evaluate an argument given as option '-f' to the driver.
+	If several '-f' options are given, this function will be
+	called sequentially with all given arguments.
+	This function can be used to pass the master commands via
+	arguments to the driver. This is useful when building a new
+	mudlib from scratch. It is called only when the system is
+	started.
+
+EXAMPLE
+	// The code given implements these commands:
+	//  '-fcall <ob> <fun> <arg>': call function <fun> in object <ob> with
+	//				argument <arg>.
+	//  '-fshutdown': shutdown the system immediately.
+	// Thus, starting the driver as
+	//	 'parse "-fcall foo bar Yow!" -fshutdown' would
+	// first do foo->bar("Yow!") and then shut down the system.
+
+	{
+	  string obj, fun, rest;
+
+	  if (arg == "shutdown")
+	  {
+	    shutdown();
+	    return;
+	  }
+	  if (sscanf(arg, "call %s %s %s", obj, fun, rest) >= 2)
+	  {
+	    write(obj+"->"+fun+"(\""+rest+"\") = ");
+	    write(call_other(obj, fun, rest));
+	    write("\n");
+	    return;
+	  }
+	  write("master: Unknown flag "+arg+"\n");
+	}
+
+SEE ALSO
+	master(M)
diff --git a/doc/master/get_bb_uid b/doc/master/get_bb_uid
new file mode 100644
index 0000000..5a4dc8b
--- /dev/null
+++ b/doc/master/get_bb_uid
@@ -0,0 +1,18 @@
+SYNOPSIS
+	string get_bb_uid(void)
+
+DESCRIPTION
+	Is called to get the ``backbone id''. Objects whose creator is
+	the backbone id are ``trusted'', and will automagically get
+	the uid and euid of the object that caused to load or clone
+	them.
+
+	The backbone id is also temporary given to objects while being
+	called via process_string().
+
+HISTORY
+	Since 3.2.1, get_bb_uid() is needed just for process_string()
+	if no this_object() is present.
+
+SEE ALSO
+	uids(C), creator_file(M), creator(E), get_root_id(M)
diff --git a/doc/master/get_ed_buffer_save_file_name b/doc/master/get_ed_buffer_save_file_name
new file mode 100644
index 0000000..50a23c3
--- /dev/null
+++ b/doc/master/get_ed_buffer_save_file_name
@@ -0,0 +1,22 @@
+SYNOPSIS
+	string get_ed_buffer_save_object_name(string edited_file)
+
+DESCRIPTION
+	This function is called when an interactive user object is
+	destructed or looses connection through remove_interactive()
+	while editing with ed() the file edite_file (emergency save).
+	this_player() is set to the object that loosing connection.
+	The function should return a file name for the emergency save
+	file.
+
+EXAMPLE
+	string get_ed_buffer_save_object_name(string file) {
+	  return "/players/"+getuid(this_player())+"/.dead_ed_files/"
+		 + explode(file, "/")[<1];
+	}
+
+	This breaks up file into its components and stores it in the
+	user's emergency save directory under the file's basename.
+
+SEE ALSO
+	ed(E), destruct(E), remove_interactive(E), valid_write(M)
diff --git a/doc/master/get_master_uid b/doc/master/get_master_uid
new file mode 100644
index 0000000..a0c6737
--- /dev/null
+++ b/doc/master/get_master_uid
@@ -0,0 +1,12 @@
+SYNOPSIS
+	string get_master_uid(void)
+
+DESCRIPTION
+	Return the string to be used as root-uid.
+	Under !native, the function is expendable.
+
+HISTORY
+	Introduced in 3.2.1@40 replacing get_root_uid().
+
+SEE ALSO
+	get_bb_uid(M), get_master_uid(M), uids(C), creator_file(M), creator(E)
diff --git a/doc/master/get_simul_efun b/doc/master/get_simul_efun
new file mode 100644
index 0000000..88adba0
--- /dev/null
+++ b/doc/master/get_simul_efun
@@ -0,0 +1,24 @@
+SYNOPSIS
+	mixed get_     simul_efun(void)      // 3.2
+	string|string* get_simul_efun(void)  // 3.2.1
+
+DESCRIPTION
+	Load the simul_efun object(s) and return one or more paths of it.
+// Note that the object(s) must be loaded by this function!
+//
+// When you return an array of strings, the first string is taken as path
+// to the simul_efun object, and all other paths are used for backup
+// simul_efun objects to call simul_efuns that are not present in the
+// main simul_efun object. This allows to remove simul_efuns at runtime 
+// without getting errors from old compiled programs that still use the 
+// obsolete simul_efuns. A side use of this mechanism is to provide 
+// a 'spare' simul_efun object in case the normal one fails to load.
+//
+	Should return either the object_name of the simul_efun object as
+	a string, or an array containing as first element a string
+	with the file name of the simul_efun object and the following
+	elements strings with file names of alternate simul_efun
+	objects that will be used if the first one cannot be loaded.
+
+SEE ALSO
+	simul_efun(C)
diff --git a/doc/master/get_wiz_name b/doc/master/get_wiz_name
new file mode 100644
index 0000000..6056965
--- /dev/null
+++ b/doc/master/get_wiz_name
@@ -0,0 +1,13 @@
+SYNOPSIS
+	string get_wiz_name(string file)
+
+DESCRIPTION
+	Argument is a file name, which we want to get the owner of.
+	This used for the wizlist, to determine who gets the score for
+	the file being used.
+
+	For 3.2.1, it is used only to score errors to the right wizard.
+
+SEE ALSO
+	wizlist(E), get_wiz_info(E), query_real_name(A),
+	query_creator(M), getuid(E)
diff --git a/doc/master/handle_external_signal b/doc/master/handle_external_signal
new file mode 100644
index 0000000..6fe81ef
--- /dev/null
+++ b/doc/master/handle_external_signal
@@ -0,0 +1,26 @@
+SYNOPSIS
+        #include <signals.h>
+
+        int handle_external_signal(int signal)
+
+DESCRIPTION
+        If the driver receives a signal from the OS it forwards it to the
+        mudlib master by calling this function. The signal received by the
+        driver is given in <signal> and may be one of the following:
+        SIGHUP, SIGINT, SIGTERM, SIGUSR1, SIGUSR2.
+
+        If this function returns != 0, the driver will assume the signal has
+        been dealt with and take NO further action.
+        The exception is SIGTERM, which can't be handled. The driver will
+        perform a graceful shutdown of the game after this function returns.
+
+        If the master does not handle the signal (returns 0 or this function
+        doe not exit), the driver will perform the following default actions:
+
+        SIGHUP:  begin a graceful shutdown
+        SIGINT:  send itself an unhandled SIGINT. This usually causes an
+                 immediate and non-graceful shutdown.
+        SIGUSR1: the driver will reload the master object
+        SIGUSR2: the driver will re-open its debug log file
+                 (this will happen the next time the driver writes to it)
+
diff --git a/doc/master/heart_beat_error b/doc/master/heart_beat_error
new file mode 100644
index 0000000..d4d15f2
--- /dev/null
+++ b/doc/master/heart_beat_error
@@ -0,0 +1,24 @@
+SYNOPSIS
+	mixed heart_beat_error(object culprit, string err, string prg,
+			       string curobj, int line)
+
+DESCRIPTION
+	This function is called when a runtime error occurs while
+	executing the heart_beat() function of the object culprit. prg
+	is program where the actual error happened, in object curobj
+	at the given line.
+
+	At time of call, the heart_beat has been turned off.
+	Return anything != 0 to restart the heart_beat in culprit.
+
+	If culprit is a user, it should at least get the message ``You
+	have no heartbeat''. A more advanced handling would destruct
+	the offending object curobj and and allow the heartbeat to
+	restart.
+
+	Note that prg denotes the program actually executed (which
+	might be an inherited one) whereas curobj is just the
+	offending object.
+
+SEE ALSO
+	set_heart_beat(E), heart_beat(A), runtime_error(M)
diff --git a/doc/master/inaugurate_master b/doc/master/inaugurate_master
new file mode 100644
index 0000000..85c9526
--- /dev/null
+++ b/doc/master/inaugurate_master
@@ -0,0 +1,30 @@
+SYNOPSIS
+	void inaugurate_master(int arg)
+
+DESCRIPTION
+	This function is called in the master object after it has been
+	created and is fully functional. Note that the create()
+	function is of little use in the master object, because at the
+	time it is called there is no simul_efun object yet, and the
+	interpreter does not know anything about the user-ids and
+	access permissions.
+
+	The argument <arg> denotes why this function is called:
+	  arg = 0: the mud just started, this is the first master of all.
+	      = 1: the master was destructed and then reactivated
+	           (because a new one couldn't be loaded).
+	      = 2: the master was destructed and then reactivated, but
+	           additionally lost all variable contents.
+	      = 3: this is a reloaded master.
+
+	This function has at least to set up the driverhooks to use
+	(in 3.2.1). Also, any mudwho or wizlist handling has to be
+	initialized here.
+
+	Besides that, do whatever you feel you need to do, 
+	e.g. set_auto_include_string(), or give the master a decent euid.
+
+SEE ALSO
+	initialisation(M), create(M), simul_efun(C), get_bb_id(M),
+	get_root_id(M), get_master_uid(M), flag(M),
+	reactivate_destructed_master(M)
diff --git a/doc/master/include_file b/doc/master/include_file
new file mode 100644
index 0000000..68568ee
--- /dev/null
+++ b/doc/master/include_file
@@ -0,0 +1,32 @@
+SYNOPSIS
+        mixed include_file (string file, string compiled_file, int sys_include)
+
+DESCRIPTION
+        Generate the pathname of an included file.
+
+        Arguments:
+          previous_object(): The object causing the compile.
+          file             : The name given in the #include directive.
+          compiled_file    : The object file which is just compiled.
+                             (compat: name given without leading "/")
+          sys_include      : TRUE for #include <> directives.
+
+        Result:
+          0: use the normal include filename generation (""-includes are
+             used as they are, <>-includes are handled according to
+             H_INCLUDE_DIRS).
+
+          <path>: the full absolute pathname of the file to include,
+                  without parentdir parts ("/../"). Leading slashes ("/")
+                  may be omitted.
+
+          else: The include directive is not legal.
+
+        If the function does not generate a valid pathname, the driver
+        will next try to resolve the include using the H_INCLUDE_DIRS hook.
+
+HISTORY
+        Introduced in LDMud 3.2.8.
+
+SEE ALSO
+        hooks(C), inherit_file(M), include_dirs(H)
diff --git a/doc/master/inherit_file b/doc/master/inherit_file
new file mode 100644
index 0000000..7914fac
--- /dev/null
+++ b/doc/master/inherit_file
@@ -0,0 +1,26 @@
+SYNOPSIS
+        mixed inherit_file (string file, string compiled_file)
+
+DESCRIPTION
+        Generate the pathname of an inherited object.
+
+        Arguments:
+          previous_object(): The object causing the compile.
+          file             : The name given in the inherit directive.
+          compiled_file    : The object file which is just compiled.
+                             (compat: name given without leading "/")
+
+        Result:
+          0: use the given filename as it is.
+
+          <path>: the full absolute pathname of the file to inherit,
+                  without parentdir parts ("/../"). Leading slashes ("/")
+                  are ignored.
+
+          else: The inherit directive is not legal.
+
+HISTORY
+        Introduced in LDMud 3.2.8.
+
+SEE ALSO
+        hooks(C), include_file(M)
diff --git a/doc/master/initialisation b/doc/master/initialisation
new file mode 100644
index 0000000..e08d34a
--- /dev/null
+++ b/doc/master/initialisation
@@ -0,0 +1,16 @@
+SYNOPSIS
+	Initialization of the master object (since 3.2.1).
+
+	As since 3.2.1 the lfuns which are called to initialize
+	objects after a load are defined through driver hooks, and
+	these hooks are cleared prior to a master (re)load, the first
+	function called is inaugurate_master(). Anyway it's not very
+	sensible to do anything earlier as the master is not
+	recognized as such at that time, and so a number of
+	(important) things would not work.
+	Which lfun is called during runtime to reset the master is also
+	depending on the driverhook settings. Arbitrary actions may be done
+	on a reset.
+
+SEE ALSO
+	inaugurate_master(M)
diff --git a/doc/master/log_error b/doc/master/log_error
new file mode 100644
index 0000000..afc3385
--- /dev/null
+++ b/doc/master/log_error
@@ -0,0 +1,11 @@
+SYNOPSIS
+	void log_error(string file, string err)
+
+DESCRIPTION
+	Announce a compiler-time error in the named file. Whenever the
+	LPC compiler detects an error, this function is called. It
+	should at least log the error in a file, and also announce it
+	to the active user.
+
+SEE ALSO
+	runtime_error(M)
diff --git a/doc/master/make_path_absolute b/doc/master/make_path_absolute
new file mode 100644
index 0000000..e0a0019
--- /dev/null
+++ b/doc/master/make_path_absolute
@@ -0,0 +1,10 @@
+SYNOPSIS
+	string make_path_absolute(string str)
+
+DESCRIPTION
+	Absolutize a relative filename str given to the editor. Should
+	return the full pathname of the file to use. Any non-string
+	result will act as ``bad file name''.
+
+SEE ALSO
+	ed(E), valid_write(M)
diff --git a/doc/master/master b/doc/master/master
new file mode 100644
index 0000000..7d88855
--- /dev/null
+++ b/doc/master/master
@@ -0,0 +1,30 @@
+NAME
+	master
+
+DESCRIPTION
+	This directory contains descriptions for the functions that
+	Amylaar's version of the LPC parser, expects to find in the
+	master object (similar to lfuns, but for the master object
+	only). The name of the master object is hardcoded in the
+	parser (to "secure/master").
+
+	The master is the gateway between the interpreter and the
+	mudlib to perform actions with mudlib specific effects. Calls
+	to the master by the interpreter have an automatic catch() in
+	effect.
+
+	Note that the master is loaded first of all objects. Thus you
+	shouldn't inherit an other object, nor is the compiler able to
+	search include files (read: they must be specified with full
+	path).
+
+	Amylaar says: actually, you can inherit, but the file will be
+	loaded then before the master, which isn't good for most
+	files.
+
+	Refer to 'master-3.2' and 'master-3.2.1' for the surveys of
+	the masters internals. 
+
+SEE ALSO
+	master-3.2(M), master-3.2.1(M)
+	efun(E), applied(A), concepts(C), driver(D), lpc(LPC)
diff --git a/doc/master/master-3.2 b/doc/master/master-3.2
new file mode 100644
index 0000000..b55a931
--- /dev/null
+++ b/doc/master/master-3.2
@@ -0,0 +1,248 @@
+NAME
+	master for LPMud 3.2
+
+DESCRIPTION
+	This directory contains descriptions for the functions that
+	Amylaar's version of the LPC parser, expects to find in the
+	master object (similar to lfuns, but for the master object
+	only). The name of the master object is hardcoded in the
+	parser (to "secure/master").
+
+	The master is the gateway between the interpreter and the
+	mudlib to perform actions with mudlib specific effects. Calls
+	to the master by the interpreter have an automatic catch() in
+	effect.
+
+	Note that the master is loaded first of all objects. Thus you
+	shouldn't inherit an other object, nor is the compiler able to
+	search include files (read: they must be specified with full
+	path).
+
+	Amylaar says: actually, you can inherit, but the file will be
+	loaded then before the master, which isn't good for most
+	files.
+
+	A short survey of the things that happen at system startup
+	time:
+
+	The Initialisation functions are called after (re)loading the
+	master to establish the most basic operation parameters.
+
+	The initialisation of LPMud on startup follows this schedule:
+	  - The interpreter evaluates the commandline options and
+	    initializes itself.
+	  - The master is loaded, and thus it's create() (!compat only) and
+	    its reset() is called, though it's not much use, since
+	    most of the important things won't work already.
+	  - get_root_uid() is called. If the result is valid, it
+	    becomes the masters uid and euid.
+	  - get_bb_uid() is called.
+	  - inaugurate_master() is called.
+	  - flag() is called for each given '-f' commandline option.
+	  - get_simul_efun() is called.
+	  - define_include_dirs() is called.
+	  - Preloading is done:
+	      compat : The filenames of the objects are read from
+		       INIT_FILE and the objects are loaded. Then
+		       epilog() is called.
+	      !compat: epilog() is called. If it returns an array of
+		       strings, it is considered holding the filenames
+		       of the objects to preload. They are then given
+		       one at a time as argument to preload() which
+		       does the actual preloading.
+	  - The interpreter sets up the IP communication and enters
+	    the backend loop.
+
+	If the master is reloaded during system operation, this
+	actions are taken:
+	  - The master is loaded, and thus it's create() (!compat only) and
+	    its reset() is called.
+	  - Any auto-include string is cleared.
+	  - get_root_uid() is called. If the result is valid, it becomes the
+	    masters uid and euid.
+	  - inaugurate_master() is called.
+
+	If the master was destructed, but couldn't be reloaded, the old
+	master object could be reactivated. In that case:
+	  - reactivate_destructed_master() is called.
+	  - inaugurate_master() is called.
+
+
+	Security hint: most of this functions are not useful to be
+	called directly from other objects and can be made private or
+	static. Unlike create(), these functions that are applied to
+	the master object are found by the interpreter even if not
+	publicly accessible.
+
+
+
+	A short reference to all expected master functions...
+	----------------------------------------------------------------
+	    Initialisation
+
+	void create ()	// !compat
+	  Initialize the object. Not very useful, though.
+
+	void reset (int flag)  // !native
+	void reset ()	       // native
+	  Initialize (compat only) or reset the object.
+
+	void inaugurate_master ()
+	  Perform mudlib specific setup of the master.
+
+	void flag (string arg)
+	  Evaluate an argument given as option '-f' to the driver.
+
+	string *define_include_dirs ()
+	  Define where the include files are searched.
+
+	void	epilog ()	    // compat
+	string *epilog (int eflag)  // !compat
+	  Perform final actions before opening the system to users.
+	  The semantics of this function differ for compat and !compat mode.
+
+	void preload (string file)  // !compat
+	  Preload a given object.
+
+	void external_master_reload ()
+	  Called after a reload of the master on external request.
+
+	void reactivate_destructed_master (int removed)
+	  Reactivate a formerly destructed master.
+
+	string|string * get_simul_efun ()
+	  Load the simul_efun object and return one or more paths of it.
+
+	----------------------------------------------------------------
+	    Handling of user connections
+
+	object connect ()
+	  Handle the request for a new connection.
+
+	void disconnect (object obj)
+	  Handle the loss of an IP connection.
+
+	void remove_player (object user)
+	  Remove a user object from the system.
+
+	-----------------------------------------------------------------
+	    Runtime Support
+
+	object compile_object (string filename)
+	  Compile an virtual object.
+
+	string get_wiz_name (string file)
+	  Return the author of a file.
+
+	string object_name (object obj)
+	  Return a printable name for an object.
+
+	mixed prepare_destruct (object obj)
+	  Prepare the destruction of the given object.
+
+	void quota_demon (void)
+	  Handle quotas in times of memory shortage.
+
+	void receive_udp (string host, string msg)
+	  Handle a received IMP message.
+
+	void slow_shut_down (int minutes)
+	  Schedule a shutdown for the near future.
+
+	void notify_shutdown ()
+	  Notify the master about an immediate shutdown.
+
+	-----------------------------------------------------------------
+	    Error Handling
+
+	void dangling_lfun_closure ()
+	  Handle a dangling lfun-closure.
+
+	void log_error (string file, string err)
+	  Announce a compiler-time error.
+
+	mixed heart_beat_error (object culprit, string err,
+				string prg, string curobj, int line)
+	  Announce an error in the heart_beat() function.
+
+	void runtime_error (string err, string prg, string curobj, int line)
+	  Announce a runtime error.
+
+	-----------------------------------------------------------------
+	    Security and Permissions
+
+	int privilege_violation (string op, mixed who, mixed arg3, mixed arg4)
+	  Validate the execution of a privileged operation.
+
+	int query_allow_shadow (object victim)
+	  Validate a shadowing.
+
+	int query_player_level (string what)
+	  Check if the user is of high enough level for several things.
+
+	int valid_exec (string name)
+	  Validate the rebinding of an IP connection by usage of efun
+	  exec().
+
+	int valid_query_snoop (object obj)
+	  Validate if the snoopers of an object may be revealed by
+	  usage of the efun query_snoop().
+
+	int valid_snoop (object snoopee, object snooper)
+	  Validate the start/stop of a snoop.
+
+	------------------------------------------------------------------
+	    Userids and depending Security
+
+	string creator_file (mixed obj)
+	  Return the name of the creator of an object.
+	  This is called in every mode!
+
+	string get_root_uid ()	// !compat
+	  Return the string to be used as root-uid.
+
+	string get_bb_uid()  // !compat
+	  Return the string to be used as root-uid.
+
+	int valid_seteuid (object obj, string neweuid)	// !compat
+	  Validate the change of an objects euid by efun seteuid().
+
+	int|string valid_read (string path, string euid, string fun, object caller)
+	int|string valid_write (string path, string euid, string fun, object caller)
+	  Validate a reading/writing file operation.
+
+	-----------------------------------------------------------------
+	    ed() Support
+
+	string make_path_absolute (string str)
+	  Absolutize a relative filename given to the editor.
+
+	int save_ed_setup (object who, int code)
+	  Save individual settings of ed for a wizard.
+
+	int retrieve_ed_setup (object who)
+	  Retrieve individual settings of ed for a wizard.
+
+	string get_ed_buffer_save_object_name (string file)
+	  Return a filename for the ed buffer to be saved into.
+
+	----------------------------------------------------------------
+	    parse_command() Support  (!compat)
+
+	string *parse_command_id_list ()
+	  Return generic singular ids.
+
+	string *parse_command_plural_id_list ()
+	  Return generic plural ids.
+
+	string *parse_command_adjectiv_id_list ()
+	  Return generic adjective ids.
+
+	string *parse_command_prepos_list ()
+	  Return common prepositions.
+
+	string parse_command_all_word()
+	  Return the one(!) 'all' word.
+
+SEE ALSO
+	master(M), efun(E), applied(A), concepts(C), driver(D), lpc(LPC)
diff --git a/doc/master/master-3.2.1 b/doc/master/master-3.2.1
new file mode 100644
index 0000000..03e4339
--- /dev/null
+++ b/doc/master/master-3.2.1
@@ -0,0 +1,231 @@
+NAME
+	master for LPMud 3.2.1
+
+DESCRIPTION
+	This directory contains descriptions for the functions that
+	Amylaar's version of the LPC parser, expects to find in the
+	master object (similar to lfuns, but for the master object
+	only). The name of the master object is hardcoded in the
+	parser (to "secure/master").
+
+	The master is the gateway between the interpreter and the
+	mudlib to perform actions with mudlib specific effects. Calls
+	to the master by the interpreter have an automatic catch() in
+	effect.
+
+	Note that the master is loaded first of all objects. Thus you
+	shouldn't inherit an other object, nor is the compiler able to
+	search include files (read: they must be specified with full
+	path).
+
+	Amylaar says: actually, you can inherit, but the file will be
+	loaded then before the master, which isn't good for most
+	files.
+
+	A short survey of the things that happen at system startup
+	time:
+
+	The Initialisation functions are called after (re)loading the
+	master to establish the most basic operation parameters.
+
+	The initialisation of LPMud on startup follows this schedule:
+	  - The interpreter evaluates the commandline options and
+	    initializes itself.
+	  - The master is loaded, but since the driverhooks are not set yet,
+	    no standard initialisation lfun is called.
+	  - get_master_uid() is called. If the result is valid, it becomes the
+	  - inaugurate_master() is called.
+	  - flag() is called for each given '-f' commandline option.
+	  - get_simul_efun() is called.
+	  - the WIZLIST is read in.
+	  - epilog() is called. If it returns an array of strings,
+	    they are given one at a time as argument to preload().
+	    Traditionally, these strings are the filenames of the objects to
+	    preload, which preload() then does.
+	  - The interpreter sets up the IP communication and enters
+	    the backend loop.
+
+	If the master is reloaded during system operation, this
+	actions are taken:
+	  - The master is loaded, and its initialisation lfun is
+	    called according to the settings of the driverhooks (if set).
+	  - Any auto-include string and all driverhooks are cleared.
+	  - get_master_uid() is called. If the result is valid, it becomes the
+	    masters uid and euid.
+	  - inaugurate_master() is called.
+
+	If the master was destructed, but couldn't be reloaded, the old
+	master object could be reactivated. In that case:
+	  - reactivate_destructed_master() is called.
+	  - inaugurate_master() is called.
+
+
+	Security hint: most of this functions are not useful to be
+	called directly from other objects and can be made private or
+	static. Unlike create(), these functions that are applied to
+	the master object are found by the interpreter even if not
+	publicly accessible.
+
+
+
+	A short reference to all expected master functions...
+	----------------------------------------------------------------
+	    Initialisation
+
+	void inaugurate_master ()
+	  Perform mudlib specific setup of the master.
+
+	string get_master_uid ()
+	  Return the string to be used as uid (and -euid) of a
+	  (re)loaded master. 
+
+	void flag (string arg)
+	  Evaluate an argument given as option '-f' to the driver.
+
+	string *define_include_dirs ()
+	  Define where the include files are searched.
+
+	string *epilog (int eflag)
+	  Perform final actions before opening the system to users.
+
+	void preload (string file)
+	  Preload a given object.
+
+	void external_master_reload ()
+	  Called after a reload of the master on external request.
+
+	void reactivate_destructed_master (int removed)
+	  Reactivate a formerly destructed master.
+
+	string|string * get_simul_efun ()
+	  Load the simul_efun object and return one or more paths of it.
+
+	----------------------------------------------------------------
+	    Handling of user connections
+
+	object connect ()
+	  Handle the request for a new connection.
+
+	void disconnect (object obj)
+	  Handle the loss of an IP connection.
+
+	void remove_player (object user)
+	  Remove a user object from the system.
+
+	void stale_erq (closure callback)
+	  Notify the loss of the erq demon.
+
+	-----------------------------------------------------------------
+	    Runtime Support
+
+	object compile_object (string filename)
+	  Compile an virtual object.
+
+	string get_wiz_name (string file)
+	  Return the author of a file.
+
+	string object_name (object obj)
+	  Return a printable name for an object.
+
+	mixed prepare_destruct (object obj)
+	  Prepare the destruction of the given object.
+
+	void quota_demon (void)
+	  Handle quotas in times of memory shortage.
+
+	void receive_udp (string host, string msg, int port)
+	  Handle a received IMP message.
+
+	void slow_shut_down (int minutes)
+	  Schedule a shutdown for the near future.
+
+	void notify_shutdown ()
+	  Notify the master about an immediate shutdown.
+
+	-----------------------------------------------------------------
+	    Error Handling
+
+	void dangling_lfun_closure ()
+	  Handle a dangling lfun-closure.
+
+	void log_error (string file, string err)
+	  Announce a compiler-time error.
+
+	mixed heart_beat_error (object culprit, string err,
+				string prg, string curobj, int line)
+	  Announce an error in the heart_beat() function.
+
+	void runtime_error (string err, string prg, string curobj, int line)
+	  Announce a runtime error.
+
+	-----------------------------------------------------------------
+	    Security and Permissions
+
+	int privilege_violation (string op, mixed who, mixed arg3, mixed arg4)
+	  Validate the execution of a privileged operation.
+
+	int query_allow_shadow (object victim)
+	  Validate a shadowing.
+
+	int query_player_level (string what)
+	  Check if the user is of high enough level for several things.
+
+	int valid_exec (string name)
+	  Validate the rebinding of an IP connection by usage of efun
+	  exec().
+
+	int valid_query_snoop (object obj)
+	  Validate if the snoopers of an object may be revealed by
+	  usage of the efun query_snoop().
+
+	int valid_snoop (object snoopee, object snooper)
+	  Validate the start/stop of a snoop.
+
+	------------------------------------------------------------------
+	    Userids and depending Security
+
+	string get_bb_uid()  // euids
+	  Return the string to be used as root-uid.
+
+	int valid_seteuid (object obj, string neweuid)	// euids
+	  Validate the change of an objects euid by efun seteuid().
+
+	int|string valid_read (string path, string euid, string fun, object caller)
+	int|string valid_write (string path, string euid, string fun, object caller)
+	  Validate a reading/writing file operation.
+
+	-----------------------------------------------------------------
+	    ed() Support
+
+	string make_path_absolute (string str)
+	  Absolutize a relative filename given to the editor.
+
+	int save_ed_setup (object who, int code)
+	  Save individual settings of ed for a wizard.
+
+	int retrieve_ed_setup (object who)
+	  Retrieve individual settings of ed for a wizard.
+
+	string get_ed_buffer_save_object_name (string file)
+	  Return a filename for the ed buffer to be saved into.
+
+	----------------------------------------------------------------
+	    parse_command() Support  (!compat, SUPPLY_PARSE_COMMAND defined)
+
+	string *parse_command_id_list ()
+	  Return generic singular ids.
+
+	string *parse_command_plural_id_list ()
+	  Return generic plural ids.
+
+	string *parse_command_adjectiv_id_list ()
+	  Return generic adjective ids.
+
+	string *parse_command_prepos_list ()
+	  Return common prepositions.
+
+	string parse_command_all_word()
+	  Return the one(!) 'all' word.
+
+SEE ALSO
+	master(M), efun(E), applied(A), concepts(C), driver(D), lpc(LPC)
diff --git a/doc/master/notify_shutdown b/doc/master/notify_shutdown
new file mode 100644
index 0000000..d23cd98
--- /dev/null
+++ b/doc/master/notify_shutdown
@@ -0,0 +1,29 @@
+SYNOPSIS
+        varargs void notify_shutdown (string crash_reason)
+
+DESCRIPTION
+        Notify the master about an immediate shutdown. If <crash_reason> is 0,
+        it is a normal shutdown, otherwise it is a crash and <crash_reason>
+        gives a hint at the reason.
+
+        The function has the opportunity to perform any cleanup operation,
+        like informing the mudwho server that the mud is down. This can not be
+        done when remove_player() is called because the udp connectivity is
+        already gone then.
+
+        If the gamedriver shuts down normally , this is the last function
+        called before the mud shuts down the udp connections and the accepting
+        socket for new players.
+
+        If the gamedriver crashes, this is the last function called before the
+        mud attempts to dump core and exit. WARNING: Since the driver is in an
+        unstable state, this function may not be able to run to completion!
+        The following crash reasons are defined:
+          "Fatal Error": an internal sanity check failed.
+
+HISTORY
+        LDMud 3.2.9 added the <crash_reason> argument and that the function
+        is called for a crash at all.
+
+SEE ALSO
+        slow_shut_down(M), remove_player(M),
diff --git a/doc/master/object_name b/doc/master/object_name
new file mode 100644
index 0000000..2990b6d
--- /dev/null
+++ b/doc/master/object_name
@@ -0,0 +1,10 @@
+SYNOPSIS
+	string object_name(object ob)
+
+DESCRIPTION
+	Return a printable name for an object. This function is called
+	by sprintf() to print a meaningful name in addition to the
+	normal object_name().
+
+SEE ALSO
+	sprintf(E), object_name(E)
diff --git a/doc/master/parse_command_all_word b/doc/master/parse_command_all_word
new file mode 100644
index 0000000..b57ab05
--- /dev/null
+++ b/doc/master/parse_command_all_word
@@ -0,0 +1,9 @@
+SYNOPSIS
+	string *parse_command_all_word(void)
+
+DESCRIPTION
+	Used by parse_command(). Return the word for ``all'' in the
+	installations native language.
+
+SEE ALSO
+	parse_command(E)
diff --git a/doc/master/parse_command_prepos_list b/doc/master/parse_command_prepos_list
new file mode 100644
index 0000000..24706ce
--- /dev/null
+++ b/doc/master/parse_command_prepos_list
@@ -0,0 +1,9 @@
+SYNOPSIS
+	string *parse_command_prepos_list(void)
+
+DESCRIPTION
+	Used by parse_command(). Return an array of common
+	prepositions in the installations native language.
+
+SEE ALSO
+	parse_command(E)
diff --git a/doc/master/preload b/doc/master/preload
new file mode 100644
index 0000000..95f27d7
--- /dev/null
+++ b/doc/master/preload
@@ -0,0 +1,18 @@
+SYNOPSIS
+	void preload(string file)
+
+DESCRIPTION
+	Load the object with the given file name, that was returned by
+	epilog(). It is task of the epilog()/preload() pair to ensure
+	the validity of the given strings (e.g. filtering out comments
+	and blank lines). For preload itself a call_other(file, "???")
+	s sufficient, but it should be guarded by a catch() to avoid
+	premature blockings. Also it is wise to change the master's
+	euid from root_uid to something less privileged for the time
+	of the preload.
+
+	You can of course do anything else with the passed strings -
+	preloading is just the traditional task.
+
+SEE ALSO
+	epilog(M), master(M)
diff --git a/doc/master/prepare_destruct b/doc/master/prepare_destruct
new file mode 100644
index 0000000..3121b88
--- /dev/null
+++ b/doc/master/prepare_destruct
@@ -0,0 +1,22 @@
+SYNOPSIS
+	mixed prepare_destruct(object obj)
+
+DESCRIPTION
+	Prepare the destruction of the object obj. Return 0 if the
+	object is ready for destruction, any other value will abort
+	the attempt. If a string is returned, an error with the string
+	as message will be issued.
+
+	The interpreter calls this function whenever an object shall
+	be destructed. It expects, that this function cleans the
+	inventory of the object, or the destruct will fail.
+	Furthermore, the function could notify the former inventory
+	objects that their holder is under destruction (useful to move
+	users out of rooms which re updated); and it could announce
+	systemwide the destruction(quitting) of users.
+
+	Strange things will happen if the mastor object does not
+	provide this function.
+
+SEE ALSO
+	remove_player(M), destruct(E)
diff --git a/doc/master/privilege_violation b/doc/master/privilege_violation
new file mode 100644
index 0000000..957a4b9
--- /dev/null
+++ b/doc/master/privilege_violation
@@ -0,0 +1,63 @@
+SYNOPSIS
+	int privilege_violation(string op, mixed who, mixed arg3, mixed arg4)
+
+DESCRIPTION
+	Validate the execution of a privileged operation.
+	op denotes the requested operation, who is the object
+	requesting the operation (object_name or object pointer), arg3
+	and arg4 are additional arguments, depending on the operation.
+
+	The function should return >0 to grant the privilege, 0 to
+	indicate that the caller was probably misleaded and the error
+	might be fixed, and anything else to indicate a real
+	violation, that will be handled as run time error.
+
+	The privileged operations are:
+	attach_erq_demon  Attach the erq demon to object <arg> with
+	                  flag <args>. 
+	bind_lambda	  Bind a lambda-closure to object arg3.
+	call_out_info	  Return an array with all call_out
+			  informations.
+	nomask simul_efun Attempt to get an efun <arg> via efun:: when
+	                  it is shadowed by a nomask type simul_efun.
+	rename_object	  The object who tries to rename the object
+			  arg3 to the name arg4.
+	send_udp	  Send UDP-data to host arg3.
+	set_auto_include_string Set the string automatically included
+			  by the compiler into every object.
+	get_extra_wizinfo Get the additional wiz-list info for user
+			  arg3.
+	set_extra_wizinfo Set the additional wiz-list info for user
+			  arg3.
+	set_extra_wizinfo_size Set the size of the additional user
+			  info in the wiz-list to arg3.
+	set_driver_hook   : Set hook <arg> to <arg2>.
+	set_this_object	  Set this_object() to arg3.
+	shadow_add_action Add an action to function arg4 that is
+			  shadowed by the object arg3.
+	symbol_variable	  Attempt to make a symbol from a hidden
+			  inherited variable. arg3 is the object in
+			  question, arg4 the number of the variable in
+			  the variable table.
+	wizlist_info	  Return an array with all wiz-list
+			  information.
+
+	call_out_info() can return the arguments to functions and
+	lambda closures to be called by call_out(); you should
+	consider that read access to closures, mappings and arrays
+	means write access and/or other privileges. 
+	wizlist_info() will return an array which holds, among others,
+	the extra wizlist field. While a toplevel array, if found,
+	will be copied, this does not apply to nested arrays or to any
+	mappings. You might also have some sensitive closures there.
+	send_udp() should be watched as it could be abused to mess up
+	the IMP.
+	The xxx_extra_wizinfo operations are necessary for a proper
+	wizlist and should therefore be restricted to admins.
+	All other operations are potential sources for direct security
+	breaches - any use of them should be scrutinized closely.
+
+SEE ALSO	
+	simul_efun(C), call_out_info(E), shadow(E), add_action(E),
+	wizlist(E), set_this_object(E), rename_object(E),
+	bind_lambda(E), send_udp(E), set_auto_include_string(E)
diff --git a/doc/master/query_allow_shadow b/doc/master/query_allow_shadow
new file mode 100644
index 0000000..47d2e95
--- /dev/null
+++ b/doc/master/query_allow_shadow
@@ -0,0 +1,23 @@
+query_allow_shadow(M)
+FUNKTION:
+     int query_allow_shadow(object victim)
+
+DEFINITION:
+     /secure/master.c
+
+BESCHREIBUNG:
+     Gibt 1 zurueck, wenn das Objekt victim von previous_object() beschattet 
+     werden darf, 0 sonst.
+
+     Die Funktion prueft, ob das Objekt victim ein Root-Objekt ist, oder
+     ob es beim Aufruf von query_prevent_shadow() 1 zurueckgibt.
+
+BEMERKUNGEN:
+     Wird automatisch bei shadow() ausgefuehrt.
+
+SIEHE AUCH:
+     Rechte:	     query_prevent_shadow(L)
+     Generell:	     shadow(E), unshadow(E)
+     Informationen:  query_shadowing(E)
+
+20. Mai 2004 Gloinson
\ No newline at end of file
diff --git a/doc/master/query_player_level b/doc/master/query_player_level
new file mode 100644
index 0000000..484e18e
--- /dev/null
+++ b/doc/master/query_player_level
@@ -0,0 +1,15 @@
+SYNOPSIS
+	int query_player_level(string what)
+
+DESCRIPTION
+	Check if the user is of high enough level for several things.
+
+	The argument denotes the action for which permission is to be
+	checked:
+
+	"trace"		Is the user allowed to use tracing?
+	"inspect memory" Is the user allowed to issue the
+			special command "showsmallnewmalloced"? 
+
+SEE ALSO
+	trace(E), showsmallnewmalloced(D), malloc(D), status(D), memory(C)
diff --git a/doc/master/quota_demon b/doc/master/quota_demon
new file mode 100644
index 0000000..f7f8d95
--- /dev/null
+++ b/doc/master/quota_demon
@@ -0,0 +1,18 @@
+SYNOPSIS
+	void quota_demon(void)
+
+DESCRIPTION
+	Handle quotas in times of memory shortage.
+
+	This function is called during the final phase of a garbage
+	collection if the reserved user area couldn't be reallocated.
+	This function (or a called demon) has now the opportunity to
+	remove some (still active) objects from the system. If this does
+	not free enough memory to reallocate the user reserve,
+	slow_shut_down() will be called to start Armageddon.
+
+	Up to now, the wizlist lacks various informations needed to
+	detect the memory-hungriest users.
+
+SEE ALSO
+	slow_shut_down(M), wizlist(E)
diff --git a/doc/master/reactivate_destructed_master b/doc/master/reactivate_destructed_master
new file mode 100644
index 0000000..e90d2a1
--- /dev/null
+++ b/doc/master/reactivate_destructed_master
@@ -0,0 +1,15 @@
+SYNOPSIS
+	void reactivate_destructed_master(int flag)
+
+DESCRIPTION
+	This function is called in an already destructed master object
+	if no new master object could be loaded. flag will be 1 if the
+	old master object could be reclaimed form the list of objects
+	that were marked for destruction but not yet terminated. If
+	flag is 0, all variables of the object have been set to 0 and
+	must be re-initialized.
+
+	After this function, inaugurate_master() will be applied again.
+
+SEE ALSO
+	destruct(E), inaugurate_master(M), master(M)
diff --git a/doc/master/receive_udp b/doc/master/receive_udp
new file mode 100644
index 0000000..a1b58c5
--- /dev/null
+++ b/doc/master/receive_udp
@@ -0,0 +1,17 @@
+SYNOPSIS
+	void receive_udp(string host, string msg, int hostport)
+
+DESCRIPTION
+	Handle a received IMP message.
+
+	This function is called for every message received on the IMP
+	port. Usually it is passed on to some object that handles
+	inter mud communications.
+
+HISTORY
+	The 'hostport' argument was added in 3.2.1.
+
+SEE ALSO
+	send_udp(E), query_udp_port(E)
+
+29.10.2006 Zesstra
diff --git a/doc/master/remove_player b/doc/master/remove_player
new file mode 100644
index 0000000..b70a1fb
--- /dev/null
+++ b/doc/master/remove_player
@@ -0,0 +1,14 @@
+SYNOPSIS
+	void remove_player(object ob)
+
+DESCRIPTION
+	Remove an interactive user object ob from the system. This
+	function is called by the interpreter to expell remaining
+	users from the system on shutdown in a polite way. If this
+	functions fails to quit/destruct the user, he will be
+	destructed the hard way by the interpreter.
+
+	This function must not cause runtime errors.
+
+SEE ALSO
+	remove_interactive(E), slow_shut_down(M)
diff --git a/doc/master/retrieve_ed_setup b/doc/master/retrieve_ed_setup
new file mode 100644
index 0000000..4d92ef0
--- /dev/null
+++ b/doc/master/retrieve_ed_setup
@@ -0,0 +1,9 @@
+SYNOPSIS
+	int retrieve_ed_setup(object command_giver)
+
+DESCRIPTION
+	Should return an integer that gives the ed setup flags for the
+	user that is denoted by command_giver.
+
+SEE ALSO
+	save_ed_setup(M)
diff --git a/doc/master/runtime_error b/doc/master/runtime_error
new file mode 100644
index 0000000..d109df8
--- /dev/null
+++ b/doc/master/runtime_error
@@ -0,0 +1,16 @@
+SYNOPSIS
+	void runtime_error(string err, string prg, string curobj, int line)
+
+DESCRIPTION
+	This function has to announce a runtime error to the active
+	user. If the user has enough privileges, it might give him the
+	full error message together with the source line. Else it
+	should issue a decent message ("Your sensitive mind notices a
+	wrongness in the fabric of space").
+
+	Note that prg denotes the program actually executed (which
+	might be an inherited one) whereas curobj is just the
+	offending object.
+
+SEE ALSO
+	log_error(M), heart_beat_error(M), raise_error(E)
diff --git a/doc/master/runtime_warning b/doc/master/runtime_warning
new file mode 100644
index 0000000..80864ab
--- /dev/null
+++ b/doc/master/runtime_warning
@@ -0,0 +1,27 @@
+SYNOPSIS
+        void runtime_warning( string msg, string curobj, string prog, int line
+                            , int inside_catch)
+
+DESCRIPTION
+        This function is called to let the mudlib handle a runtime warning,
+        e.g. by logging it into a database.
+
+        <msg> is the warning message.
+        <curobj> is the name of the current object which caused the message
+              (the object itself might already be destructed), or 0 if there
+              is none.
+        <prog>, <line> determine the name of the program and the line where
+              the error occured if the current object exists, otherwise
+              they are 0.
+        <inside_catch> : != 0 if the warning occurs inside a catch().
+
+        The driver is limited to three nested warnings, to prevent
+        an endless recursion in case runtime_warning() itself causes
+        warnings.
+
+HISTORY
+        Introduced in LDMud 3.3.551.
+        LDMud 3.3.705 added the <inside_catch> argument.
+
+SEE ALSO
+        runtime_error(M)
diff --git a/doc/master/save_ed_setup b/doc/master/save_ed_setup
new file mode 100644
index 0000000..feaaf71
--- /dev/null
+++ b/doc/master/save_ed_setup
@@ -0,0 +1,33 @@
+SYNOPSIS
+	int save_ed_setup(object who, int code)
+
+DESCRIPTION
+	Save individual option settings of the builtin ed, encoded
+	into code, for the user denoted by who. These functions are
+	located in the master object so that the local gods can decide
+	what strategy they want to use. suggestions:
+	A setup file for every user.
+		advantages:	transparent to the user
+				independent of user count
+		disadvantage:	extra file access at ed invocation
+	An array in the master object, users are searched by member_array
+		advantage:	easy to implement
+		disadvantage:	performance degradation with high user counts
+	An AVL-tree to access users by name
+		advantage:	can fit any need
+		disadvantage:	hard to implement, will need more
+				overhead on small and medium
+				installations than it can ever make
+				good by lg(usercount) complexity
+	Dedicated flags in every user object.
+		advantages:	easy to implement
+				independent of user count
+				Will also work for nusers w/o file
+				access privileges.
+		disadvantage:	care has to be taken to avoid
+				collision with other uses of the flags
+				in the user object
+
+SEE ALSO
+	ed(E), retrieve_ed_setup(M), valid_write(M),
+	get_ed_buffer_save_object_name(M)
diff --git a/doc/master/slow_shut_down b/doc/master/slow_shut_down
new file mode 100644
index 0000000..9a7fe8d
--- /dev/null
+++ b/doc/master/slow_shut_down
@@ -0,0 +1,40 @@
+SYNOPSIS
+	void slow_shut_down(int minutes)
+
+DESCRIPTION
+	Schedule a shutdown for the near future. minutes is the
+	desired time in minutes till the shutdown:
+	 six, if just the user reserve has been put into use.
+	 one, if the (smaller) master reserve has been put into use as
+	      well.
+
+	The interpreter calls this function when it runs low on
+	memory. At this time, it has freed its reserve, but since it
+	won't last long, the interpreter needs to be shut down. The
+	delay is to give the users the opportunity to finish their
+	current tasks, but don't take the 'minutes' for granted, just
+	deduce the urgency from it. 
+	It is possible that the driver may reallocate some memory
+	after the function has been called, and then run again into a
+	low memory situation, calling this function again.
+	This function might load an 'Armageddon' object and tell it
+	what to do. It is the Armageddon object then which performs
+	the shutdown.
+
+	Technical: The memory handling of the interpreter includes
+	three reserved areas: user, system and master. All three are
+	there to insure that the system shuts down gracefully when the
+	memory runs out: the user area to give the users time to
+	quit normally, the others to enable emergency-logouts when the
+	user reserve is used up as well.
+	The areas are allocated at start of the interpreter, and
+	released when no more memory could be obtained from the host.
+	In such a case, one of the remaining areas is freed (so the
+	operation can continue a short while) and a garbage collection
+	is initiated. If the garbage collection recycles enough memory
+	(either true garbage or by the aid of the quota_demon) to
+	reallocate the areas, all is fine, else the system shut down
+	is invoked by a call to this function. 
+
+SEE ALSO
+	quota_demon(M), notify_shutdown(M), shutdown(E), malloc(D), memory(C)
diff --git a/doc/master/stale_erq b/doc/master/stale_erq
new file mode 100644
index 0000000..a05ca31
--- /dev/null
+++ b/doc/master/stale_erq
@@ -0,0 +1,17 @@
+SYNOPSIS
+	void stale_erq (closure callback)
+
+DESCRIPTION
+	Notify the loss of the erq demon.
+	Argument is the callback closure set for an erq request.
+
+	If the erq connection dies prematurely, the driver will call
+	this lfun for every pending request with set callback. This
+	function should notify the originating object that the answer
+	will never arrive. 
+
+HISTORY
+	Introduced in 3.2.1@61.
+
+SEE ALSO
+	erq(C)
diff --git a/doc/master/valid_exec b/doc/master/valid_exec
new file mode 100644
index 0000000..2c0b67b
--- /dev/null
+++ b/doc/master/valid_exec
@@ -0,0 +1,15 @@
+SYNOPSIS
+	int valid_exec(string name, object ob, object obfrom)
+
+DESCRIPTION
+	Validate the rebinding of an IP connection by usage of efun
+	exec(). Arguments are the <name> of the _program_ attempting
+	to rebind the connection, the object <ob> to receive the
+	connection, and the object <obfrom> giving the connection.
+	Note that the program name is not the object_name() of the
+	object, and has no leading slash.
+
+	Return 0 to disallow the action, any other value to allow it.
+
+SEE ALSO
+	exec(E)
diff --git a/doc/master/valid_query_snoop b/doc/master/valid_query_snoop
new file mode 100644
index 0000000..e92378a
--- /dev/null
+++ b/doc/master/valid_query_snoop
@@ -0,0 +1,12 @@
+SYNOPSIS
+	valid_query_snoop(object ob)
+
+DESCRIPTION
+	Should return 1 if previous_object() (the one that called the
+	efun query_snoop()) is allowed to query wether ob is being
+	snooped, 0 if not.
+
+	The master object is always allowed to use query_snoop().
+
+SEE ALSO
+	valid_snoop(M), query_snoop(E), snoop(E)
diff --git a/doc/master/valid_read b/doc/master/valid_read
new file mode 100644
index 0000000..2dafbae
--- /dev/null
+++ b/doc/master/valid_read
@@ -0,0 +1,32 @@
+SYNOPSIS
+	string valid_read(string path, string uid, string func, object ob)
+
+DESCRIPTION
+	This function is called to check if the object ob with the
+	user-id uid has read permissions for the file given by path
+	for the operation named by func. It should return 0 if
+	permission is denied, or the normalized path if permission is
+	granted. You can also return 1 to indicate that the path can
+	be used unchanged.
+
+	The returned pathname must not contain ``..'', a leading /
+	will be stripped by the interpreter.
+
+	Func denotes the efun call or other operation that caused
+	valid_read() to be called:
+	ed_start (check if the file to be edited is readable),
+	file_size,
+	get_dir,
+	print_file (efun cat()),
+	read_bytes,
+	read_file,
+	restore_object,
+	tail.
+
+	Note that this function is called in compat mode as well. If
+	you need to be compatible with the old 2.4.5-mudlib, redirect
+	these calls to the valid_read/valid_write in the user
+	object.
+
+SEE ALSO
+	valid_write(M), make_path_absolute(M)
diff --git a/doc/master/valid_seteuid b/doc/master/valid_seteuid
new file mode 100644
index 0000000..3afc0d2
--- /dev/null
+++ b/doc/master/valid_seteuid
@@ -0,0 +1,9 @@
+SYNOPSIS
+	int valid_seteuid(object ob, string newid)
+
+DESCRIPTION
+	Should return 1 if ob is allowed to set its euid to newid.
+	Objects are always allowed to set their euid to 0.
+
+SEE ALSO
+	seteuid(E), uids(C)
diff --git a/doc/master/valid_snoop b/doc/master/valid_snoop
new file mode 100644
index 0000000..5bff987
--- /dev/null
+++ b/doc/master/valid_snoop
@@ -0,0 +1,8 @@
+SYNOPSIS
+	int valid_snoop(object me, object you)
+
+DESCRIPTION
+	Should return 1 if me is allowed to snoop you, 0 if not.
+
+SEE ALSO
+	snoop(E), query_snoop(E), valid_query_snoop(M)
diff --git a/doc/master/valid_write b/doc/master/valid_write
new file mode 100644
index 0000000..31fe43b
--- /dev/null
+++ b/doc/master/valid_write
@@ -0,0 +1,33 @@
+SYNOPSIS
+	string valid_write(string path, string uid, string func, object ob)
+
+DESCRIPTION
+	This function is called to check if the object ob with the
+	user-id uid has write permissions to the file given by path
+	for the operation named by func. It should return 0 if
+	permission is denied, or the normalized path if permission is
+	granted. You can also return 1 to indicate that the path can
+	be used unchanged.
+
+	The returned pathname must not contain ``..'', a leading /
+	will be stripped by the interpreter.
+
+	Func denotes the efun call or other operation that caused
+	valid_write() to be called:
+	cindent,
+	do_rename (efun rename(), for the old and then for the new name),
+	ed_start (whenever the builtin ed tries to write to a file),
+	mkdir,
+	remove_file (efun rm()),
+	rmdir,
+	save_object,
+	write_bytes,
+	write_file.
+
+	Note that this function is called in compat mode as well. If
+	you need to be compatible with the old 2.4.5-mudlib, redirect
+	these calls to the valid_read/valid_write in the user
+	object.
+
+SEE ALSO
+	valid_read(M), make_path_absolute(M)
