diff --git a/src/backend.cmod b/src/backend.cmod
index 18b92d491e51758721e4136dcca43c3afd835a13..3bddca91f91beef7fb3cc0cc1e5f311b56285256 100644
--- a/src/backend.cmod
+++ b/src/backend.cmod
@@ -434,6 +434,13 @@ PIKECLASS Backend
    * Call outs.
    */
 
+  /*! @class CallOut
+   *!
+   *! Represents a single call_out in the call_out list.
+   *!
+   *! @seealso
+   *!   @[call_out()]
+   */
   PIKECLASS CallOut
     program_flags PROGRAM_USES_PARENT;
     flags ID_PROTECTED|ID_PRIVATE|ID_USED;
@@ -445,6 +452,10 @@ PIKECLASS Backend
     CVAR struct Backend_CallOut_struct **prev_fun;
     CVAR struct Backend_CallOut_struct *next_arr;
     CVAR struct Backend_CallOut_struct **prev_arr;
+    /*! @decl static array args
+     *!
+     *! The array containing the function and arguments.
+     */
     PIKEVAR array args
       flags ID_STATIC;
     CVAR struct object *this;
@@ -654,7 +665,23 @@ PIKECLASS Backend
       EXIT_BLOCK(this);
     }
 
-    /* Start a new call out */
+    /*! @decl void create(int|float seconds, mixed fun, mixed ... args)
+     *!
+     *!   Start a new call out.
+     *!
+     *!   This is the low-level implementation of @[call_out()].
+     *!
+     *!   @[call_out()] is essentially implemented as:
+     *!   @code
+     *!     array call_out(mixed fun, int|float seconds, mixed ... args)
+     *!     {
+     *!       return CallOut(seconds, fun, @@args)->args;
+     *!     }
+     *!   @endcode
+     *!
+     *! @seealso
+     *!   @[call_out()]
+     */
     PIKEFUN void create(int|float seconds, mixed fun, mixed ... extra_args)
       flags ID_PROTECTED;
     {
@@ -812,6 +839,8 @@ PIKECLASS Backend
       UNPROTECT_CALL_OUTS();
     }
   }
+  /*! @endclass
+   */
 
 #undef THIS
 #define THIS THIS_BACKEND
@@ -886,7 +915,8 @@ PIKECLASS Backend
  *!   This value can be sent to eg @[find_call_out()] or @[remove_call_out()].
  *!
  *! @seealso
- *!   @[remove_call_out()], @[find_call_out()], @[call_out_info()]
+ *!   @[remove_call_out()], @[find_call_out()], @[call_out_info()],
+ *!   @[CallOut]
  */
    PIKEFUN array call_out(mixed f, int|float t, mixed ... rest)
      {
@@ -2358,6 +2388,8 @@ PIKECLASS Backend
 #endif
   }
 
+  /*! @decl void create()
+   */
   PIKEFUN void create()
     flags ID_PROTECTED;
   {
@@ -3047,15 +3079,20 @@ PIKECLASS PollDeviceBackend
 
   DECLARE_STORAGE
 
+  /*! @decl void set_signal_event_callback(int signum, function cb)
+   *!
+   *! @note
+   *!   This function is a noop except for the @tt{kqueue@} case.
+   */
   PIKEFUN void set_signal_event_callback(int signum, function cb)
   {
-	int q;
+    int q;
 #ifdef BACKEND_USES_KQUEUE
-  struct kevent ev[2];
-  EV_SET(ev, signum, MY_POLLSIGNAL, EV_ADD, 0, 0, 0);
-  q = kevent(THIS->set, ev, 1, NULL, 0, NULL);
+    struct kevent ev[2];
+    EV_SET(ev, signum, MY_POLLSIGNAL, EV_ADD, 0, 0, 0);
+    q = kevent(THIS->set, ev, 1, NULL, 0, NULL);
 #endif
-	pop_n_elems(args);
+    pop_n_elems(args);
   }
 
   /*
diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index a33c436e562732321330845b08bdb2a087149352..30c56dfac8b19a54e3e936482929f2d9ca227228 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -257,7 +257,7 @@ MK_HASHMEM(simple_hashmem2, p_wchar2)
  *!   This function is byte-order dependant for wide strings.
  *!
  *! @seealso
- *!   @[hash()], @[7.0::hash()]
+ *!   @[predef::hash()], @[7.0::hash()]
  */
 static void f_hash_7_4(INT32 args)
 {
@@ -325,7 +325,7 @@ ATTRIBUTE((const)) static INLINE size_t hashstr(const unsigned char *str, ptrdif
  *!   This function is not NUL-safe, and is byte-order dependant.
  *!
  *! @seealso
- *!   @[hash()], @[7.4::hash()]
+ *!   @[predef::hash()], @[7.4::hash()]
  */
 static void f_hash_7_0( INT32 args )
 {
diff --git a/src/constants.c b/src/constants.c
index 7326db7af990f438242195245ba08111b95dd09f..b8436ccd92d5b845e66e8e82b84ad574d8cbf159 100644
--- a/src/constants.c
+++ b/src/constants.c
@@ -24,6 +24,7 @@ struct mapping *builtin_constants = 0;
 struct callable *first_callable = NULL;
 #endif
 
+/* This is the mapping returned by all_constants(). */
 PMOD_EXPORT struct mapping *get_builtin_constants(void)
 {
   return builtin_constants;
diff --git a/src/cpp.c b/src/cpp.c
index e3c528c0859c77c169e4a480a2008f928c570ce9..b91ec48391f009cac1eded409ad7dc5b609e3c24 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -2396,16 +2396,16 @@ static void insert_callback_define_no_args(struct cpp *this,
  *! The following members are recognized:
  *!
  *! @mapping
- *! 	@member string current_file
- *! 	@member int|string charset
- *! 	@member object handler
- *! 	@member int compat_major
- *! 	@member int compat_minor
- *! 	@member int picky_cpp
- *!	@member int keep_comments
- *! 		This option does not strip comments from the file. Useful
- *! 		in combination with the prefix feature.
- *! 	@member string prefix
+ *! 	@member string "current_file"
+ *! 	@member int|string "charset"
+ *! 	@member object "handler"
+ *! 	@member int "compat_major"
+ *! 	@member int "compat_minor"
+ *! 	@member int "picky_cpp"
+ *!	@member int "keep_comments"
+ *! 		This option causes @[cpp()] not to strip comments.
+ *!             Useful in combination with the prefix feature below.
+ *! 	@member string "prefix"
  *! 		If a prefix is given, only prefixed directives will be
  *! 		processed. For example, if the prefix is @expr{"foo"@}, then
  *! 		@expr{#foo_ifdef COND@} and @expr{foo___LINE__@} would be
@@ -2758,6 +2758,11 @@ void f_cpp(INT32 args)
   }
 }
 
+/*! @module Builtin
+ */
+
+/*! @decl mapping(string:mixed) _take_over_initial_predefines()
+ */
 void f__take_over_initial_predefines (INT32 args)
 {
   pop_n_elems (args);
@@ -2778,6 +2783,9 @@ void f__take_over_initial_predefines (INT32 args)
   else Pike_error ("Initial predefines already taken over.\n");
 }
 
+/*! @endmodule
+ */
+
 void init_cpp()
 {
   struct svalue s;
diff --git a/src/module.c b/src/module.c
index 2cf1cba0000207a28ee5c3190168ea6fb7e69f8e..6b19542d7d33da29766c9f6c0cdb34e524735003 100644
--- a/src/module.c
+++ b/src/module.c
@@ -383,6 +383,25 @@ static const struct static_module module_list[] = {
 #endif
 };
 
+/*! @decl object _static_modules
+ *!
+ *! This is an object containing the classes for all static
+ *! (ie non-dynamic) C-modules.
+ *!
+ *! In a typic Pike with support for dynamic modules the contained
+ *! module classes are:
+ *! @dl
+ *!   @item @[Builtin]
+ *!   @item @[Gmp]
+ *!   @item @[_Stdio]
+ *!   @item @[_math]
+ *!   @item @[_system]
+ *! @enddl
+ *!
+ *! If the Pike binary lacks support for dynamic modules, all C-modules
+ *! will show up here.
+ */
+
 void init_modules(void)
 {
   struct program *p = NULL;
diff --git a/src/post_modules/Nettle/nettle.cmod b/src/post_modules/Nettle/nettle.cmod
index 54ad16e2aec2d425c69d9b48ca883a273366068c..2d1251c16ac778a7cf210f800a04f95c45c20e48 100644
--- a/src/post_modules/Nettle/nettle.cmod
+++ b/src/post_modules/Nettle/nettle.cmod
@@ -542,12 +542,12 @@ PIKECLASS CBC
     safe_apply(THIS->object, "key_size", args);
   }
 
-  /*! @decl this_program set_encrypt_key(string key)
+  /*! @decl this_program set_encrypt_key(string key, int|void flags)
    *!
    *! Prepare the cipher and the wrapper for encrypting with the given
    *! @[key]. The @[key] memory will be cleared before released.
    */
-  PIKEFUN object set_encrypt_key(string key)
+  PIKEFUN object set_encrypt_key(string key, int|void flags)
     optflags OPT_SIDE_EFFECT;
   {
     assert(THIS->block_size);
@@ -558,12 +558,12 @@ PIKECLASS CBC
     RETURN this_object();
   }
 
-  /*! @decl this_program set_decrypt_key(string key)
+  /*! @decl this_program set_decrypt_key(string key, int|void flags)
    *!
    *! Prepare the cipher and the wrapper for decrypting with the given
    *! @[key]. The @[key] memory will be cleared before released.
    */
-  PIKEFUN object set_decrypt_key(string key)
+  PIKEFUN object set_decrypt_key(string key, int|void flags)
     optflags OPT_SIDE_EFFECT;
   {
     assert(THIS->block_size);
diff --git a/src/program.c b/src/program.c
index 5ff8ba22d4bafb44a15e15199c0602b8a8207619..b3308a23ff8e5e26112a4b5d973ac7f844278b62 100644
--- a/src/program.c
+++ b/src/program.c
@@ -8526,6 +8526,11 @@ static void f_compilation_env_compile(INT32 args)
 
 /*! @decl mixed resolv(string identifier, string filename, @
  *!		       object|void handler)
+ *!
+ *!   Look up @[identifier] in the current context.
+ *!
+ *!   The default implementation calls the corresponding
+ *!   function in the master object.
  */
 static void f_compilation_env_resolv(INT32 args)
 {