diff --git a/doc/driver/invocation b/doc/driver/invocation
index 5760b46..5cc4800 100644
--- a/doc/driver/invocation
+++ b/doc/driver/invocation
@@ -1,335 +1,365 @@
 NAME
-    driver/invocation
+        driver/invocation
 
 PURPOSE
-    Description of the invocation of the gamedriver, especially of the command
-    arguments. This document describes the commandline version of the driver
-    only; non-commandline versions are platform specific and described in
-    the related documentation.
+        Description of the invocation of the gamedriver, especially of the
+        command arguments. This document describes the commandline version of
+        the driver only; non-commandline versions are platform specific and
+        described in the related documentation.
 
 DESCRIPTION
-    The driver is invoked from the commandline as other normal programs.
-    Neither the current directory nor the directory the executable is in need
-    to be in any special relation the directory of the mudlib. Once the driver
-    is running, it emits two streams of outputs:
+        The driver is invoked from the commandline as other normal programs.
+        Neither the current directory nor the directory the executable is in
+        need to be in any special relation the directory of the mudlib. Once
+        the driver is running, it emits two streams of outputs:
 
-      - driver-related messages on stderr; this unfortunately includes
-        LPC compiler diagnostics
-      - LPC runtime-related messages in the logfile <mudlib>/<host>.parse.log
-        (the name can be changed).
+            - driver-related messages on stderr; this unfortunately includes
+              LPC compiler diagnostics
+            - LPC runtime-related messages in the logfile
+              <mudlib>/<host>.parse.log (the name can be changed).
 
-    It is possible to start the driver without any commandline arguments as
-    suitable defaults are specified at compile time. The invocation syntax
-    is:
+        It is possible to start the driver without any commandline arguments as
+        suitable defaults are specified at compile time. The invocation syntax
+        is:
 
-        driver [options] [<portnumber>]...
+            driver [options] [<portnumber>]...
 
-    <portnumber> the number of the port the driver shall use to accept
-    connections. The maximum number of ports is determined by MAXNUMPORTS
-    in the source file config.h.
+        <portnumber> the number of the port the driver shall use to accept
+        connections. The maximum number of ports is determined by MAXNUMPORTS
+        in the source file config.h.
 
-    The options modify the behaviour of the gamedriver. Some of them are only
-    available if a certain compile-time option was enabled (typically in
-    the source file config.h). The following options are recognized:
+        The options modify the behaviour of the gamedriver. Some of them are
+        only available if a certain compile-time option was enabled (typically
+        in the source file config.h). The following options are recognized:
 
-      -P|--inherit <fd-number>
-        Inherit filedescriptor <fd-number> from the parent process
-        as socket to listen for connections.
-        Only available if compiled with MAXNUMPORTS.
+          -P|--inherit <fd-number>
+            Inherit filedescriptor <fd-number> from the parent process
+            as socket to listen for connections.
+            Only available if compiled with MAXNUMPORTS.
 
-      -u|--udp <portnumber>
-        Specify the <portnumber> for the UDP port, overriding the compiled-in
-        default.
-        Only available if compiled with CATCH_UDP_PORT.
+          -u|--udp <portnumber>
+            Specify the <portnumber> for the UDP port, overriding the
+            compiled-in default.
+            Only available if compiled with CATCH_UDP_PORT.
 
-      -D|--define <macro>[=<text>]
-        Add <macro> (optionally to be expanded to <text>) to the list of
-        predefined macros known by the LPC compiler.
+          -D|--define <macro>[=<text>]
+            Add <macro> (optionally to be expanded to <text>) to the list of
+            predefined macros known by the LPC compiler.
 
-      -E|--eval-cost <ticks>
-        Set the number of <ticks> available for one evaluation thread.
-        If 0, execution is unlimited.
+          -E|--eval-cost <ticks>
+            Set the number of <ticks> available for one evaluation thread.
+            If 0, execution is unlimited.
 
-      -M|--master <filename>
-        Use <filename> for the master object.
+          -M|--master <filename>
+            Use <filename> for the master object.
 
-      -m|--mudlib <pathname>
-        Use <pathname> as the top directory of the mudlib.
+          -m|--mudlib <pathname>
+            Use <pathname> as the top directory of the mudlib.
 
-      --debug-file <filename>
-        Log all debug output in <filename> instead of
-        <mudlib>/<host>.debug.log .
+          --debug-file <filename>
+            Log all debug output in <filename> instead of
+            <mudlib>/<host>.debug.log .
 
-      --hostname <name>
-        Use <name> as hostname instead of what the system says.
+          --hostname <name>
+            Use <name> as hostname instead of what the system says.
 
-      --hostaddr <addr>
-        Use <addr> as address of this machine, instead of what the
-        system says.  In particular this address will be used to open
-        the driver ports.
+          --hostaddr <addr>
+            Use <addr> as address of this machine, instead of what the
+            system says. In particular this address will be used to open
+            the driver ports.
 
-      --no-compat
-      --compat
-        Select the mode (plain or compat) of the driver.
-        This choice does not affect the default name of the master object.
+          --no-compat
+          --compat
+            Select the mode (plain or compat) of the driver.
+            This choice does not affect the default name of the master object.
 
-      -d|--debug
-        Generate debug output; repeat the argument for even more output:
-          >= 1: log resets, clean ups, swaps, reception of urgend data,
-                   telnet negotiation states.
-                check_a_lot_of_refcounts() on startup when swapping of
-                   variables is disabled.
-          >= 2: log all add_message()s, name lookup failures, new players.
-          >= 3: progress of garbage collection
-          >= 4: even more junk from garbage collection
+          -d|--debug
+            Generate debug output; repeat the argument for even more output:
+              >= 1: log resets, clean ups, swaps, reception of urgend data,
+                       telnet negotiation states.
+                    check_a_lot_of_refcounts() on startup when swapping of
+                       variables is disabled.
+              >= 2: log all add_message()s, name lookup failures, new players.
+              >= 3: progress of garbage collection
+              >= 4: even more junk from garbage collection
 
-      -c|--list-compiles
-        List the name of every compiled file on stderr.
+          -c|--list-compiles
+            List the name of every compiled file on stderr.
 
-      -e|--no-preload
-        Pass a non-zero argument (the number of occurences of this option)
-        to master->preload(), which usually inhibits all preloads of castles
-        and other objects.
+          -e|--no-preload
+            Pass a non-zero argument (the number of occurrences of this option)
+            to master->preload(), which usually inhibits all preloads of
+            castles and other objects.
 
-      --erq <filename>
-      --erq "<filename> <erq args>"
-        Use <filename> instead of 'erq' as the basename of the ERQ executable.
-        If the name starts with a '/', it is take to be an absolute pathname,
-        otherwise it is interpreted relative to <bindir>. If not specified,
-        'erq' is used as the executable name.
+          --erq <filename>
+          --erq "<filename> <erq args>"
+            Use <filename> instead of 'erq' as the basename of the ERQ
+            executable. If the name starts with a '/', it is take to be an
+            absolute pathname, otherwise it is interpreted relative to
+            <bindir>. If not specified, 'erq' is used as the executable name.
 
-        By enclosing the argument value in quotes, it is possible to pass
-        arguments (e.g. --execdir) to the erq. These arguments however must
-        not contain embedded spaces.
+            By enclosing the argument value in quotes, it is possible to pass
+            arguments (e.g. --execdir) to the erq. These arguments however must
+            not contain embedded spaces.
 
-      -N|--no-erq
-        Don't start the erq demon (if it would be started at all).
+          -N|--no-erq
+            Don't start the erq demon (if it would be started at all).
 
-      --alarm-time <seconds>
-        Set the granularity of call_out() and heartbeat timing. Minimum
-        value is 1.
+          --alarm-time <seconds>
+            Set the granularity of call_out() and heartbeat timing. Minimum
+            value is 1.
 
-      --heart-interval <seconds>
-        Set the interval between two heartbeats. Minimum value is 1.
+          --heart-interval <seconds>
+            Set the interval between two heartbeats. Minimum value is 1.
 
-      --sync-heart
-        All heartbeats occur at the same time (modulo granularity).
-      
-      --async-heart
-        Heartbeats occur when they are due (modulo granularity).
+          --sync-heart
+            All heartbeats occur at the same time (modulo granularity).
 
-      -t|--no-heart
-        Disable heartbeats and call_outs.
+          --async-heart
+            Heartbeats occur when they are due (modulo granularity).
 
-      -f|--funcall <word>
-        The lfun master->flag() is called with <word> as argument before the
-        gamedriver accepts netword connections.
+          -t|--no-heart
+            Disable heartbeats and call_outs.
 
-      --regexp pcre | traditional
-        Select the default regexp package.
+          -f|--funcall <word>
+            The lfun master->flag() is called with <word> as argument before
+            the gamedriver accepts netword connections.
 
-      --max-array <size>
-        The maximum number of elements an array can hold.
-        Set to 0, arrays of any size are allowed.
+          --regexp pcre | traditional
+            Select the default regexp package.
 
-      --max-mapping <size>
-        The maximum number of elements a mapping can hold.
-        Set to 0, mappings of any size are allowed.
+          --max-array <size>
+            The maximum number of elements an array can hold.
+            Set to 0, arrays of any size are allowed.
 
-      --max-mapping-keys <size>
-        The maximum number of entries a mapping can hold.
-        Set to 0, mappings of any size are allowed.
+          --max-mapping <size>
+            The maximum number of elements a mapping can hold.
+            Set to 0, mappings of any size are allowed.
 
-      --max-callouts <size>
-        The maximum number of callouts at one time.
-        Set to 0, any number is allowed.
+          --max-mapping-keys <size>
+            The maximum number of entries a mapping can hold.
+            Set to 0, mappings of any size are allowed.
 
-      --max-bytes <size>
-        The maximum number of bytes one read_bytes()/write_bytes() call
-        can handle.
-        Set to 0, reads and writes of any size are allowed.
+          --max-callouts <size>
+            The maximum number of callouts at one time.
+            Set to 0, any number is allowed.
 
-      --max-file <size>
-        The maximum number of bytes one read_file()/write_file() call
-        can handle.
-        Set to 0, reads and writes of any size are allowed.
+          --max-bytes <size>
+            The maximum number of bytes one read_bytes()/write_bytes() call
+            can handle.
+            Set to 0, reads and writes of any size are allowed.
 
-      --max-thread-pending <size>\n"
-        The maximum number of bytes to be kept pending by the socket write
-        thread.
-        Set to 0, an unlimited amount of data can be kept pending.
+          --max-file <size>
+            The maximum number of bytes one read_file()/write_file() call
+            can handle.
+            Set to 0, reads and writes of any size are allowed.
 
-        This option is ignored if pthreads are not used.
+          --max-thread-pending <size>\n"
+            The maximum number of bytes to be kept pending by the socket write
+            thread.
+            Set to 0, an unlimited amount of data can be kept pending.
 
-      --cleanup-time <time>
-        The idle time in seconds for an object before the driver tries to
-        clean it up. It should be substantially longer than the reset time.
-        A time <= 0 disables the cleanup mechanism.
+            This option is ignored if pthreads are not used.
+
+          --cleanup-time <time>
+            The idle time in seconds for an object before the driver tries to
+            clean it up. It should be substantially longer than the reset time.
+            A time <= 0 disables the cleanup mechanism.
+
+          --reset-time <time>
+            The time in seconds before an object is reset. A time <= 0 disables
+            the reset mechanism.
+
+          -s <time>  | --swap-time <time>
+          -s v<time> | --swap-variables <time>
+            Time in seconds before an object (or its variables) are swapped
+            out. A time less or equal 0 disables swapping.
+
+          -s f<name> | --swap-file <name>
+            Swap into file '<name>' instead of '<mudlib>/LP_SWAP.<host>'.
+
+          -s c       | --swap-compact
+            Reuse free space in the swap file immediately.
+            Giving this option results in smaller, but also more fragmented
+            swapfiles, and the swap performance may degrade.
 
-      --reset-time <time>
-        The time in seconds before an object is reset. A time <= 0 disables
-        the reset mechanism.
+          --hard-malloc-limit <size>
+            Restrict total memory allocation to <size> bytes.
+            A <size> of 0 or 'unlimited' removes any restriction.
 
-      -s <time>  | --swap-time <time>
-      -s v<time> | --swap-variables <time>
-        Time in seconds before an object (or its variables) are swapped out.
-        A time less or equal 0 disables swapping.
+          --soft-malloc-limit <size>
+            This value gives a soft limit of the allocated memory (kind of low
+            watermark). If this value is exceeded, the driver will call
+            low_memory() in the master to inform the mudlib about the
+            (potentially) developing low memory situation.
+            A <size> of 0 or 'unlimited' removes this threshold.
 
-      -s f<name> | --swap-file <name>
-        Swap into file <name> instead of <mudlib>/LP_SWAP.<host> .
+          --min-malloc <size>
+          --min-small-malloc <size>
+            Determine the sizes for the explicit initial large resp. small
+            chunk allocation. A size of 0 disables the explicit initial
+            allocations.
 
-      -s c       | --swap-compact
-        Reuse free space in the swap file immediately.
-        Giving this option results in smaller, but also more fragmented
-        swapfiles, and the swap performance may degrade.
+          -r u<size> | --reserve-user <size>
+          -r m<size> | --reserve-master <size>
+          -r s<size> | --reserve-system <size>
+            Reserve <size> amount of memory for user/master/system allocations
+            to be held until main memory runs out.
 
-      --max-malloc <size>
-        Restrict total memory allocations to <size> bytes.
-        A <size> of 0 or 'unlimited' removes any restriction.\n"
+          --filename-spaces
+          --no-filename-spaces
+            Allow/disallow the use of spaces in filenames.
 
-      --min-malloc <size>
-      --min-small-malloc <size>
-        Determine the sizes for the explicite initial large resp. small chunk
-        allocation. A size of 0 disables the explicite initial allocations.
+          --strict-euids
+          --no-strict-euids
+            Enable/disable the enforced use of euids.
 
-      -r u<size> | --reserve-user <size>
-      -r m<size> | --reserve-master <size>
-      -r s<size> | --reserve-system <size>
-        Reserve <size> amount of memory for user/master/system allocations to
-        be held until main memory runs out.
+          --share-variables
+          --init-variables
+            Select how clones initialize their variables:
+              - by sharing the current values of their blueprint
+              - by initializing them afresh (using __INIT()).
 
-      --filename-spaces
-      --no-filename-spaces
-        Allow/disallow the use of spaces in filenames.
+          --pidfile <filename>\n"
+            Write the pid of the driver process into <filename>.\n"
 
-      --strict-euids
-      --no-strict-euids
-        Enable/disable the enforced use of euids.
+          --tls-key <pathname>
+            Use <pathname> as the x509 keyfile, default is 'key.pem'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --share-variables
-      --init-variables
-        Select how clones initialize their variables:
-          - by sharing the current values of their blueprint
-          - by initializing them afresh (using __INIT()).
+          --tls-cert <pathname>
+            Use <pathname> as the x509 certfile, default is 'cert.pem'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --pidfile <filename>\n"
-        Write the pid of the driver process into <filename>.\n"
+          --tls-crlfile <pathname>
+            Use <pathname> as the filename holding your certificate revocation
+            lists. If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --tls-key <pathname>
-          Use <pathname> as the x509 keyfile, default is 'key.pem'.
-          If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-crldirectory <pathname>
+            Use <pathname> as the directory where your certificate revocation
+            lists reside. If relative, <pathname> is interpreted relative to
+            <mudlib>.
 
-      --tls-cert <pathname>
-         Use <pathname> as the x509 certfile, default is 'cert.pem'.
-         If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-trustfile <pathname>
+            Use <pathname> as the filename holding your trusted PEM
+            certificates. If relative, <pathname> is interpreted relative to
+            <mudlib>.
 
-      --tls-trustfile <pathname>
-        Use <pathname> as the filename holding your trusted PEM certificates.
-        If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-trustdirectory <pathname>
+            Use <pathname> as the directory where your trusted
+            PEM certificates reside, default is '/etc/ssl/certs'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --tls-trustdirectory <pathname>
-        Use <pathname> as the directory where your trusted
-        PEM certificates reside, default is '/etc/ssl/certs'.
-        If relative, <pathname> is interpreted relative to <mudlib>.
+          --wizlist-file <filename>
+          --no-wizlist-file
+            Read and save the wizlist in the named file (always interpreted
+            relative the mudlib); resp. don't read or save the wizlist.
 
-      --wizlist-file <filename>
-      --no-wizlist-file
-        Read and save the wizlist in the named file (always interpreted
-        relative the mudlib); resp. don't read or save the wizlist.
+          --gcollect-outfd <filename>|<num>
+            Garbage collector output (like a log of all reclaimed memory
+            blocks) is sent to <filename> (or inherited fd <num>) instead of
+            stderr. Only available if compiled with MALLOC_smalloc.
 
-      --gcollect-outfd <filename>|<num>
-        Garbage collector output (like a log of all reclaimed memory blocks)
-        is sent to <filename> (or inherited fd <num>) instead of stderr.
-        Only available if compiled with MALLOC_smalloc.
+          --y|--yydebug
+            Enable debugging of the LPC compiler.
+            Only available if compiled with YYDEBUG.
 
-      --y|--yydebug
-        Enable debugging of the LPC compiler.
-        Only available if compiled with YYDEBUG.
+          --randomdevice <filename>
+            Chooses the source of the seed for the random number generator.
+            Default is /dev/urandom, Fall-back if <filename> is not readable
+            is the system clock. If you want to seed the PRNG with a specific
+            seed, you can use a filename with the seed and give it here instead
+            of using --random-seed. (Note: the last one of --randominit and
+            --random-seed wins!)
 
-      --random-seed <num>
-        Seed value for the random number generator. If not given, the
-        driver chooses a seed value on its own.
-        This option is for debugging.
+          --random-seed <num>
+            Seed value for the random number generator. If not given, the
+            driver chooses a seed value on its own.
+            This option is for debugging.
 
-      --check-state <lvl>
-        Perform a regular simplistic check of the virtual machine according
-        to <lvl>:
-          = 0: no check
-          = 1: once per backend loop
-          = 2: at various points in the backend loop
-        Only available if compiled with DEBUG.
+          --check-state <lvl>
+            Perform a regular simplistic check of the virtual machine according
+            to <lvl>:
+              = 0: no check
+              = 1: once per backend loop
+              = 2: at various points in the backend loop
+            Only available if compiled with DEBUG.
 
-      --check-refcounts
-        Every backend cycle, all refcounts in the system are checked.
-        SLOW! Only available if compiled with DEBUG.
+          --check-refcounts
+            Every backend cycle, all refcounts in the system are checked.
+            SLOW! Only available if compiled with DEBUG.
 
-      --gobble-descriptors <num>
-        <num> (more) filedescriptors are used up. You'll know when you need it.
-        Only available if compiled with DEBUG.
+          --gobble-descriptors <num>
+            <num> (more) filedescriptors are used up. You'll know when you need
+            it. Only available if compiled with DEBUG.
 
-      --check-strings
-        Every backend cycle, all shared strings in the system are checked.
-        SLOW! Only available if compiled with DEBUG and CHECK_STRINGS.
+          --check-strings
+            Every backend cycle, all shared strings in the system are checked.
+            SLOW! Only available if compiled with DEBUG and CHECK_STRINGS.
 
-      -V|--version
-        Print the version of the driver and exit.
+          -V|--version
+            Print the version of the driver and exit.
 
-      --options
-        Print the version and compilation options of the driver and exit.
+          --options
+            Print the version and compilation options of the driver and exit.
 
-      -h|-?|--help
-        Display a command help and exit.
+          -h|-?|--help
+            Display a command help and exit.
 
-      --longhelp
-        Display a long command help and exit.
+          --longhelp
+            Display a long command help and exit.
 
-      --args <filename>
-        The driver reads and parses the given file and treats its contents
-        as if given on the commandline right where the --args option
-        occured. The file itself can again contain --args options.
+          --args <filename>
+            The driver reads and parses the given file and treats its contents
+            as if given on the commandline right where the --args option
+            occurred. The file itself can again contain --args options.
 
 
-DESCRIPTION -- Argument Parser
-    The parser analyses the commandline arguments given with the driver
-    invocation and distinguishes 'options', which start with a '-', from
-    proper arguments. Options are further distinguished by their name and
-    may take an additional value. In general, options and arguments can be
-    givein in any order.
+DESCRIPTION
+        -- Argument Parser
+        The parser analyses the commandline arguments given with the driver
+        invocation and distinguishes 'options', which start with a '-', from
+        proper arguments. Options are further distinguished by their name and
+        may take an additional value. In general, options and arguments can be
+        given in any order.
 
-    Options are recognized in two forms. In the short form the option must
-    be given as a single '-' followed by a single letter. In the long form,
-    options start with '--' followed by a string of arbitrary length. The
-    short options are case sensitive, the long options aren't.
-    Most options can be specified in both the short and long form, but that
-    is not mandatory. Examples: '-r' and '--recursive'.
+        Options are recognized in two forms. In the short form the option must
+        be given as a single '-' followed by a single letter. In the long
+        form, options start with '--' followed by a string of arbitrary length.
+        The short options are case sensitive, the long options aren't. Most
+        options can be specified in both the short and long form, but that is
+        not mandatory. Examples: '-r' and '--recursive'.
 
-    If an option takes a value, it must follow the option immediately after
-    a separating space or '='. Additionally, the value for a short option
-    may follow the option without separator. Examples are: '-fMakefile',
-    '-f Makefile', '--file=Makefile' and '--file Makefile'.
+        If an option takes a value, it must follow the option immediately after
+        a separating space or '='. Additionally, the value for a short option
+        may follow the option without separator. Examples are: '-fMakefile',
+        '-f Makefile', '--file=Makefile' and '--file Makefile'.
 
-    Short options may be collated into one argument, e.g. '-rtl', but
-    of these only the last may take a value.
+        Short options may be collated into one argument, e.g. '-rtl', but
+        of these only the last may take a value.
 
-    The option '--' marks the end of options. All following command arguments
-    are considered proper arguments even if they start with a '-' or '--'.
+        The option '--' marks the end of options. All following command
+        arguments are considered proper arguments even if they start with a '-'
+        or '--'.
 
-    The arguments are usually taken from the commandline; but the parser
-    is also able to read them from a textfiles, which can be nested. The
-    content of the textfiles is broken down into words delimited by whitespace,
-    which are then treated as given on the commandline at the place where
-    the instruction to read the textfile stood.
+        The arguments are usually taken from the commandline; but the parser
+        is also able to read them from a textfiles, which can be nested. The
+        content of the textfiles is broken down into words delimited by
+        whitespace, which are then treated as given on the commandline at the
+        place where the instruction to read the textfile stood.
 
-    The file parser recognizes simple double-quoted strings, which must be
-    contained on a single line. Additionally, the '#' character given by
-    itself is a comment marker - everthing after the '#' until the end
-    of the current line is ignored.
+        The file parser recognizes simple double-quoted strings, which must be
+        contained on a single line. Additionally, the '#' character given by
+        itself is a comment marker - everthing after the '#' until the end
+        of the current line is ignored.
 
 HISTORY
-    LDMud 3.2.9 added the --max-thread-pending, --hostname,
-      --hostaddr, --args and --random-seed options.
-    LDMud 3.2.10 added the --filename-spaces options.
-    LDMud 3.3.378 added --share-variables, --init-variables.
-    LDMud 3.3.475/3.2.11 added --tls-key, --tls-cert.
-    LDMud 3.3.672/3.2.11 added --tls-trustfile, --tls-trustdirectory.
-    LDMud 3.3.677 added --max-mapping-keys.
+        LDMud 3.2.9 added the --max-thread-pending, --hostname,
+            --hostaddr, --args and --random-seed options.
+        LDMud 3.2.10 added the --filename-spaces options.
+        LDMud 3.3.378 added --share-variables, --init-variables.
+        LDMud 3.3.475/3.2.11 added --tls-key, --tls-cert.
+        LDMud 3.3.672/3.2.11 added --tls-trustfile, --tls-trustdirectory.
+        LDMud 3.3.677 added --max-mapping-keys.
+        LDMud 3.3.714/3.2.15 added --tls-crlfile, --tls-crldirectory.
+        LDMud 3.3.x added --randominit.
