diff --git a/doc/applied/__INIT b/doc/applied/__INIT
index dc56f6c..baf6b4c 100644
--- a/doc/applied/__INIT
+++ b/doc/applied/__INIT
@@ -3,7 +3,7 @@
 
 DESCRIPTION
         This function is constructed automagically by the parser at
-        compiler, if the parser was compiled with #define
+        compile time, if the parser was compiled with #define
         INITIALISATION__INIT. This function is not intended to be
         defined by the lpc objects, and never to be called from lpc
         objects. This man page is here just for completeness.
diff --git a/doc/applied/catch_msg b/doc/applied/catch_msg
index d244af4..c38cee0 100644
--- a/doc/applied/catch_msg
+++ b/doc/applied/catch_msg
@@ -2,10 +2,10 @@
         void catch_msg(mixed *|struct|mapping|object msg, object obj)
 
 DESCRIPTION
-        When say(), tell_room() or tell_object() are used with an
+        When say(), tell_room() or tell_object() are used with a
         non-string as message, the value will be passed to catch_msg()
         in all living objects that can hear it, instead of writing to
-        the user resp.  sending to catch_tell(). This can be used to
+        the user resp. sending to catch_tell(). This can be used to
         implement communication protocols between livings. The second
         argument denotes the object that has sent the message.
 
diff --git a/doc/applied/catch_tell b/doc/applied/catch_tell
index 942a81a..48c6eeb 100644
--- a/doc/applied/catch_tell
+++ b/doc/applied/catch_tell
@@ -11,11 +11,11 @@
         object's catch_tell() lfun, _if it has one_. If the receiver
         (or one of its shadows) doesn't have that lfun, the text is sent
         to the socket directly. Only messages sent by an interactive
-        object to itself inside a catch_tell always written to the socket
-        immediately.
+        object to itself inside a catch_tell are always written to the
+        socket immediately.
 
-        This allows to filter and process text before it is written
-        to a player.
+        This allows text to be filtered and processed before it is
+        written to a player.
 
 SEE ALSO
         enable_commands(E), say(E), tell_object(E), tell_room(E),
diff --git a/doc/applied/clean_up b/doc/applied/clean_up
new file mode 100644
index 0000000..ed066bf
--- /dev/null
+++ b/doc/applied/clean_up
@@ -0,0 +1,51 @@
+SYNOPSIS
+        int <lfun> (int refcount)
+        int <closure>(int ref, object ob)
+
+DESCRIPTION
+        The hook H_CLEAN_UP defines a lfun or a closure used to clean
+        up an object. In older drivers this was hardwired to the lfun
+        clean_up().
+
+        The function is applied by the driver when an object hasn't been
+        used for a long time, to give it a chance to self-destruct. The
+        refcount <ref> passed as argument will be 0 for clone objects,
+        1 for a simple loaded object, and greater when the object is
+        cloned or inherited by some existing object. It is recommended
+        not to self_destruct the object when the reference count is
+        greater than one.
+
+        By convention, a refcount < 0 is used if some other object
+        asks the called object to clean_up.
+
+        If the function is a closure, the second argument <ob> is the
+        object to clean up.
+
+        If the hook specifies a non-existing lfun, or if the call
+        returns 0, no further attempt to clean up this object will be made.
+
+        Returning a non-zero value is only recommended when the reason
+        why the object can't self-destruct is likely to vanish without
+        the object being touched, that is, when no local function is
+        called in it, (and in compat mode also when the object is not
+        being moved around).
+
+        A typical mud configuration defines the time to wait for
+        clean_up() so long that you can assert reset() has been
+        called since the object has been touched last time.
+
+EXAMPLES
+        A clone of /std/drink defines clean_up() to self-destruct if
+        it is empty, not carried a living being and not touched for
+        a long time.
+
+        A room that inherits /std/room defines clean_up() to
+        self-destruct if it is neither inherited nor used as a
+        blueprint, is empty and was not entered for a long time.
+
+HISTORY
+        Before 3.2.1, the function was hardwired to the lfun clean_up().
+
+SEE ALSO
+        reset(A), heart_beat(A), call_out(E), destruct(E), remove(A),
+        hooks(C)
diff --git a/doc/applied/heart_beat b/doc/applied/heart_beat
index 9876b03..96abdee 100644
--- a/doc/applied/heart_beat
+++ b/doc/applied/heart_beat
@@ -18,9 +18,6 @@
         The function this_player() will return this object, but only if
         it is living. Otherwise, this_player() will return 0.
 
-        The function will be called only if there is at least one interactive
-        user in the game.
-
         Note that error messages will be given to the current user
         which will be the object itself or nobody.
 
diff --git a/doc/applied/id b/doc/applied/id
index bdb1fb2..c0ffd32 100644
--- a/doc/applied/id
+++ b/doc/applied/id
@@ -1,9 +1,9 @@
 SYNOPSIS
-        varargs int id(string str, int lvl);
+        int id(string str)
 
 DESCRIPTION
         Let the object identify itself. If str matches an id of the
-        current object then return a none zero value.
+        current object then return a non-zero value.
 
         This lfun is applied for the efun present().
 
@@ -14,4 +14,3 @@
 
 SEE ALSO
         present(E)
-        id(L)
diff --git a/doc/applied/init b/doc/applied/init
index 17675da..4e8c46f 100644
--- a/doc/applied/init
+++ b/doc/applied/init
@@ -55,10 +55,10 @@
            n2
 
         If we now move another living object l3 into l1, the call
-        suequence of the init() functions looks like this:
+        sequence of the init() functions looks like this:
 
         l1->init()  first init() of the destination will be called
-        n1->init()  now iterate throw the inventory of the destination
+        n1->init()  now iterate through the inventory of the destination
         l3->init()
         l2->init()
         n2->init()
diff --git a/doc/applied/query_weight b/doc/applied/query_weight
index 7d30b85..7a3ab92 100644
--- a/doc/applied/query_weight
+++ b/doc/applied/query_weight
@@ -4,7 +4,7 @@
 
 DESCRIPTION
         In compat mode this lfun is used by the efun transfer().
-        Not that no set_weight() is required by the parser.
+        Note that no set_weight() is required by the parser.
 
 HISTORY
         Deprecated in LDMud 3.3 as transfer() has been deprecated.
diff --git a/doc/applied/remove b/doc/applied/remove
index bb732b2..48228ef 100644
--- a/doc/applied/remove
+++ b/doc/applied/remove
@@ -7,7 +7,7 @@
 
         This lfun is not applied by the parser, but by other objects
         to tell the current object to self-destruct. remove() should
-        be supplied by the base classes of the library.  Return 1 if
+        be supplied by the base classes of the library. Return 1 if
         actually self-destructed, 0 otherwise.
 
         An alternative way to ensure the housekeeping on destruction
diff --git a/doc/applied/reset b/doc/applied/reset
index db08bec..9a83018 100644
--- a/doc/applied/reset
+++ b/doc/applied/reset
@@ -9,7 +9,7 @@
         implementations still follow this tradition.
 
         In compat mode, reset() was called with arg 0 after the object
-        was compiled, and with arg != 0 every once in a while.        In
+        was compiled, and with arg != 0 every once in a while. In
         native mode, create() is called after compiling, and reset()
         is called without arguments every once in a while.
 
@@ -18,7 +18,7 @@
         called, you're on the new version and reset() is not called
         for object creation. You may call reset() from create() and
         vice versa, but make sure they do not call each other
-        recursive on either type of driver.
+        recursively on either type of driver.
 
         reset() will be called only in objects that have been used
         since the last call to reset(), i.e. a function in them was
