Index: uspace/lib/bithenge/blob.h
===================================================================
--- uspace/lib/bithenge/blob.h	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/blob.h	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -233,9 +233,13 @@
 }
 
+/** @memberof bithenge_blob_t */
 int bithenge_init_random_access_blob(bithenge_blob_t *,
     const bithenge_random_access_blob_ops_t *);
+/** @memberof bithenge_sequential_blob_t */
 int bithenge_init_sequential_blob(bithenge_sequential_blob_t *,
     const bithenge_sequential_blob_ops_t *);
+/** @memberof bithenge_blob_t */
 int bithenge_new_blob_from_data(bithenge_node_t **, const void *, size_t);
+/** @memberof bithenge_blob_t */
 int bithenge_new_blob_from_buffer(bithenge_node_t **, const void *, size_t,
     bool);
@@ -243,4 +247,5 @@
 int bithenge_new_subblob(bithenge_node_t **, bithenge_blob_t *, aoff64_t,
     aoff64_t);
+/** @memberof bithenge_blob_t */
 int bithenge_blob_equal(bool *, bithenge_blob_t *, bithenge_blob_t *);
 
Index: uspace/lib/bithenge/expression.c
===================================================================
--- uspace/lib/bithenge/expression.c	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/expression.c	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -530,4 +530,10 @@
 };
 
+/** Create an expression that gets a member from one of the current nodes being
+ * created. It searches from the current scope outwards, stopping at barrier
+ * scopes.
+ * @param[out] out Holds the new expression.
+ * @param key The key to search for in nodes being created.
+ * @return EOK on success or an error code from errno.h. */
 int bithenge_scope_member_expression(bithenge_expression_t **out,
     bithenge_node_t *key)
Index: uspace/lib/bithenge/expression.h
===================================================================
--- uspace/lib/bithenge/expression.h	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/expression.h	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -93,4 +93,5 @@
 }
 
+/** The binary operators supported by @a bithenge_binary_expression(). */
 typedef enum {
 	BITHENGE_EXPRESSION_INVALID_BINARY_OP,
Index: uspace/lib/bithenge/failure.c
===================================================================
--- uspace/lib/bithenge/failure.c	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/failure.c	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -27,4 +27,5 @@
  */
 
+/** @cond internal */
 /** @addtogroup bithenge
  * @{
@@ -237,2 +238,3 @@
 /** @}
  */
+/** @endcond */
Index: uspace/lib/bithenge/failure.h
===================================================================
--- uspace/lib/bithenge/failure.h	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/failure.h	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -27,4 +27,5 @@
  */
 
+/** @cond internal */
 /** @addtogroup bithenge
  * @{
@@ -71,2 +72,5 @@
 /** @}
  */
+
+/** @endcond */
+
Index: uspace/lib/bithenge/script.c
===================================================================
--- uspace/lib/bithenge/script.c	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/script.c	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -46,9 +46,13 @@
 #include "tree.h"
 
+/** @cond internal */
+#define BUFFER_SIZE 4096
+/** @endcond */
+
 /** Tokens with more characters than this may be read incorrectly. */
-#define MAX_TOKEN_SIZE 256
-#define BUFFER_SIZE 4096
-
-/** Single-character symbols are represented by the character itself. Every
+static const int MAX_TOKEN_SIZE = 256;
+
+/** @cond internal
+ * Single-character symbols are represented by the character itself. Every
  * other token uses one of these values: */
 typedef enum {
@@ -82,4 +86,5 @@
 	TOKEN_WHILE,
 } token_type_t;
+/** @endcond */
 
 /** Singly-linked list of named transforms. */
@@ -438,4 +443,5 @@
 /***************** Expressions                               *****************/
 
+/** @cond internal */
 typedef enum {
 	PRECEDENCE_NONE,
@@ -446,4 +452,5 @@
 	PRECEDENCE_MULTIPLY,
 } precedence_t;
+/** @endcond */
 
 static bithenge_binary_op_t token_as_binary_operator(token_type_t token)
Index: uspace/lib/bithenge/transform.c
===================================================================
--- uspace/lib/bithenge/transform.c	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/transform.c	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -184,4 +184,5 @@
 /** Create a transform scope. It must be dereferenced with @a
  * bithenge_scope_dec_ref after it is used. Takes ownership of nothing.
+ * @memberof bithenge_scope_t
  * @param[out] out Holds the new scope.
  * @param outer The outer scope, or NULL.
@@ -207,5 +208,6 @@
 
 /** Dereference a transform scope.
- * @param self The scope to dereference. */
+ * @memberof bithenge_scope_t
+ * @param self The scope to dereference, or NULL. */
 void bithenge_scope_dec_ref(bithenge_scope_t *self)
 {
@@ -224,4 +226,5 @@
 
 /** Get the outer scope of a scope, which may be NULL.
+ * @memberof bithenge_scope_t
  * @param self The scope to examine.
  * @return The outer scope, which may be NULL. */
@@ -233,4 +236,5 @@
 /** Get the error message stored in the scope, which may be NULL. The error
  * message only exists as long as the scope does.
+ * @memberof bithenge_scope_t
  * @param scope The scope to get the error message from.
  * @return The error message, or NULL. */
@@ -243,4 +247,5 @@
  * outermost scope, but if any scope already has an error message this error
  * message is ignored.
+ * @memberof bithenge_scope_t
  * @param scope The scope.
  * @param format The format string.
@@ -292,4 +297,5 @@
 
 /** Get the current node being created, which may be NULL.
+ * @memberof bithenge_scope_t
  * @param scope The scope to get the current node from.
  * @return The node being created, or NULL. */
@@ -302,4 +308,5 @@
 
 /** Set the current node being created. Takes a reference to @a node.
+ * @memberof bithenge_scope_t
  * @param scope The scope to set the current node in.
  * @param node The current node being created, or NULL. */
@@ -312,4 +319,5 @@
 
 /** Get the current input node, which may be NULL.
+ * @memberof bithenge_scope_t
  * @param scope The scope to get the current input node from.
  * @return The input node, or NULL. */
@@ -322,4 +330,5 @@
 
 /** Set the current input node. Takes a reference to @a node.
+ * @memberof bithenge_scope_t
  * @param scope The scope to set the input node in.
  * @param node The input node, or NULL. */
@@ -331,4 +340,5 @@
 
 /** Set a scope as a barrier.
+ * @memberof bithenge_scope_t
  * @param self The scope to change. */
 void bithenge_scope_set_barrier(bithenge_scope_t *self)
@@ -339,4 +349,5 @@
 /** Check whether a scope is a barrier, meaning that variable lookup stops at
  * it.
+ * @memberof bithenge_scope_t
  * @param self The scope to check.
  * @return Whether the scope is a barrier. */
@@ -349,4 +360,5 @@
  * bithenge_scope_set_param. This must not be called on a scope that already
  * has parameters.
+ * @memberof bithenge_scope_t
  * @param scope The scope in which to allocate parameters.
  * @param num_params The number of parameters to allocate.
@@ -363,9 +375,10 @@
 }
 
-/** Set a parameter. Takes a reference to @a value. Note that range checking is
+/** Set a parameter. Takes a reference to @a node. Note that range checking is
  * not done in release builds.
+ * @memberof bithenge_scope_t
  * @param scope The scope in which to allocate parameters.
  * @param i The index of the parameter to set.
- * @param value The value to store in the parameter.
+ * @param node The value to store in the parameter.
  * @return EOK on success or an error code from errno.h. */
 int bithenge_scope_set_param( bithenge_scope_t *scope, int i,
@@ -383,4 +396,5 @@
 
 /** Get a parameter. Note that range checking is not done in release builds.
+ * @memberof bithenge_scope_t
  * @param scope The scope to get the parameter from.
  * @param i The index of the parameter to set.
@@ -867,4 +881,5 @@
 }
 
+/** @cond internal */
 #define MAKE_UINT_TRANSFORM(NAME, TYPE, ENDIAN, PREFIX_LENGTH_FUNC)            \
 	static int NAME##_apply(bithenge_transform_t *self,                    \
@@ -906,4 +921,5 @@
 MAKE_UINT_TRANSFORM(uint64le, uint64_t, uint64_t_le2host, prefix_length_8);
 MAKE_UINT_TRANSFORM(uint64be, uint64_t, uint64_t_be2host, prefix_length_8);
+/** @endcond */
 
 
Index: uspace/lib/bithenge/transform.h
===================================================================
--- uspace/lib/bithenge/transform.h	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/transform.h	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -62,5 +62,10 @@
 } bithenge_scope_t;
 
-static inline void bithenge_scope_inc_ref(bithenge_scope_t *self) {
+/** Increment a scope's reference count.
+ * @memberof bithenge_scope_t
+ * @param self The scope to reference. */
+static inline void bithenge_scope_inc_ref(bithenge_scope_t *self)
+{
+	assert(self);
 	self->refs++;
 }
@@ -117,8 +122,26 @@
 /** A transform with a name. */
 typedef struct {
+	/** The transform's name. */
 	const char *name;
+	/** The transform. */
 	bithenge_transform_t *transform;
 } bithenge_named_transform_t;
 
+/** Transform that decodes an 8-bit unsigned integer */
+extern bithenge_transform_t bithenge_uint8_transform;
+/** Transform that decodes a 16-bit little-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint16le_transform;
+/** Transform that decodes a 16-bit big-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint16be_transform;
+/** Transform that decodes a 32-bit little-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint32le_transform;
+/** Transform that decodes a 32-bit big-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint32be_transform;
+/** Transform that decodes a 64-bit little-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint64le_transform;
+/** Transform that decodes a 64-bit big-endian unsigned integer */
+extern bithenge_transform_t bithenge_uint64be_transform;
+
+/** @cond */
 extern bithenge_transform_t bithenge_ascii_transform;
 extern bithenge_transform_t bithenge_bit_transform;
@@ -128,22 +151,20 @@
 extern bithenge_transform_t bithenge_known_length_transform;
 extern bithenge_transform_t bithenge_nonzero_boolean_transform;
-extern bithenge_transform_t bithenge_uint8_transform;
-extern bithenge_transform_t bithenge_uint16le_transform;
-extern bithenge_transform_t bithenge_uint16be_transform;
-extern bithenge_transform_t bithenge_uint32le_transform;
-extern bithenge_transform_t bithenge_uint32be_transform;
-extern bithenge_transform_t bithenge_uint64le_transform;
-extern bithenge_transform_t bithenge_uint64be_transform;
 extern bithenge_transform_t bithenge_uint_le_transform;
 extern bithenge_transform_t bithenge_uint_be_transform;
 extern bithenge_transform_t bithenge_zero_terminated_transform;
 extern bithenge_named_transform_t *bithenge_primitive_transforms;
-
+/** @endcond */
+
+/** @memberof bithenge_transform_t */
 int bithenge_init_transform(bithenge_transform_t *,
     const bithenge_transform_ops_t *, int);
+/** @memberof bithenge_transform_t */
 int bithenge_transform_apply(bithenge_transform_t *, bithenge_scope_t *,
     bithenge_node_t *, bithenge_node_t **);
+/** @memberof bithenge_transform_t */
 int bithenge_transform_prefix_length(bithenge_transform_t *,
     bithenge_scope_t *, bithenge_blob_t *, aoff64_t *);
+/** @memberof bithenge_transform_t */
 int bithenge_transform_prefix_apply(bithenge_transform_t *, bithenge_scope_t *,
     bithenge_blob_t *, bithenge_node_t **, aoff64_t *);
@@ -152,17 +173,31 @@
     bithenge_transform_t *);
 
+/** @memberof bithenge_scope_t */
 int bithenge_scope_new(bithenge_scope_t **, bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 void bithenge_scope_dec_ref(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 bithenge_scope_t *bithenge_scope_outer(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 const char *bithenge_scope_get_error(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 int bithenge_scope_error(bithenge_scope_t *, const char *, ...);
+/** @memberof bithenge_scope_t */
 bithenge_node_t *bithenge_scope_get_current_node(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 void bithenge_scope_set_current_node(bithenge_scope_t *, bithenge_node_t *);
+/** @memberof bithenge_scope_t */
 bithenge_node_t *bithenge_scope_in_node(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 void bithenge_scope_set_in_node(bithenge_scope_t *, bithenge_node_t *);
+/** @memberof bithenge_scope_t */
 void bithenge_scope_set_barrier(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 bool bithenge_scope_is_barrier(bithenge_scope_t *);
+/** @memberof bithenge_scope_t */
 int bithenge_scope_alloc_params(bithenge_scope_t *, int);
+/** @memberof bithenge_scope_t */
 int bithenge_scope_set_param(bithenge_scope_t *, int, bithenge_node_t *);
+/** @memberof bithenge_scope_t */
 int bithenge_scope_get_param(bithenge_scope_t *, int, bithenge_node_t **);
 
Index: uspace/lib/bithenge/tree.c
===================================================================
--- uspace/lib/bithenge/tree.c	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/tree.c	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -358,6 +358,5 @@
  * @param a, b Nodes to compare.
  * @return EOK on success or an error code from errno.h.
- * @todo Add support for internal nodes.
- */
+ * @todo Add support for internal nodes. */
 int bithenge_node_equal(bool *out, bithenge_node_t *a, bithenge_node_t *b)
 {
Index: uspace/lib/bithenge/tree.h
===================================================================
--- uspace/lib/bithenge/tree.h	(revision 1a3b95351a712b3761df716b5b170b2587e8b763)
+++ uspace/lib/bithenge/tree.h	(revision 07848698cf523fb02b38628ab8010eaf69c2a3ca)
@@ -56,4 +56,5 @@
 } bithenge_node_type_t;
 
+/** A tree node. It can have any of the types in @a bithenge_node_type_t. */
 typedef struct bithenge_node_t {
 	/** @privatesection */
@@ -61,8 +62,10 @@
 	unsigned int refs;
 	union {
+		/** @privatesection */
 		const struct bithenge_internal_node_ops_t *internal_ops;
 		bool boolean_value;
 		bithenge_int_t integer_value;
 		struct {
+			/** @privatesection */
 			const char *ptr;
 			bool needs_free;
@@ -111,4 +114,5 @@
 }
 
+/** @memberof bithenge_node_t */
 void bithenge_node_dec_ref(bithenge_node_t *node);
 
@@ -126,4 +130,5 @@
 }
 
+/** @memberof bithenge_node_t */
 int bithenge_node_get(bithenge_node_t *, bithenge_node_t *,
     bithenge_node_t **);
@@ -159,12 +164,19 @@
 }
 
+/** @memberof bithenge_node_t */
 int bithenge_init_internal_node(bithenge_node_t *,
     const bithenge_internal_node_ops_t *);
+/** @memberof bithenge_node_t */
 int bithenge_new_empty_internal_node(bithenge_node_t **);
+/** @memberof bithenge_node_t */
 int bithenge_new_simple_internal_node(bithenge_node_t **, bithenge_node_t **,
     bithenge_int_t, bool needs_free);
+/** @memberof bithenge_node_t */
 int bithenge_new_boolean_node(bithenge_node_t **, bool);
+/** @memberof bithenge_node_t */
 int bithenge_new_integer_node(bithenge_node_t **, bithenge_int_t);
+/** @memberof bithenge_node_t */
 int bithenge_new_string_node(bithenge_node_t **, const char *, bool);
+/** @memberof bithenge_node_t */
 int bithenge_node_equal(bool *, bithenge_node_t *, bithenge_node_t *);
 
