diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index 2a723ce..db8054c 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -1,10 +1,13 @@
 /*! @mainpage QCBOR Documentation
 
+QCBOR is available for download @ref https://github.com/laurencelundblade/QCBOR "here on GitHub"
+
 @par Table of Contents
 
-API Reference
+API Reference:
 - Common
    - Error codes and common constants: @ref inc/qcbor/qcbor_common.h "qcbor_common.h"
+   - Functions for managing buffers of binary data: @ref inc/qcbor/UsefulBuf.h "UsefulBuf.h"
 - Encoding
    - Main/Basic encode functions: @ref inc/qcbor/qcbor_main_encode.h "qcbor_main_encode.h"
    - Number encode functions: @ref inc/qcbor/qcbor_number_encode.h "qcbor_number_encode.h"
@@ -15,9 +18,11 @@
    - Tag decode functions: @ref inc/qcbor/qcbor_tag_decode.h "qcbor_tag_decode.h"
    - Number decode functions: @ref inc/qcbor/qcbor_number_decode.h "qcbor_number_decode.h"
 
-Note: the API Reference is largely complete, the subject matter below is partial
+Note:
+- This is for QCBOR v2, but v1 is largely compatible
+- the API Reference is largely complete, the subject matter below is partial
 
-Subject Matter
+Subject Matter:
 - @ref Overview "QCBOR overview and implementation limits"
 - @ref Building "Building QCBOR with make and cmake"
 - @ref CodeSize "Minimizing the amount of code linked and disabling features"
diff --git a/inc/qcbor/UsefulBuf.h b/inc/qcbor/UsefulBuf.h
index 80b5c78..f3b86da 100644
--- a/inc/qcbor/UsefulBuf.h
+++ b/inc/qcbor/UsefulBuf.h
@@ -43,6 +43,7 @@
 
  when         who             what, where, why
  --------     ----            --------------------------------------------------
+ 12/31/2024   llundblade      Minor documentation tweaks for Doxygen.
  08/31/2024   llundblade      Add UsefulBufC_NTH_BYTE().
  08/14/2024   llundblade      Add UsefulOutBuf_RetrieveOutputStorage().
  08/13/2024   llundblade      Add UsefulInputBuf_RetrieveUndecodedInput().
@@ -498,7 +499,15 @@
 static inline UsefulBufC UsefulBuf_FromSZ(const char *szString);
 
 
-/* Get the nth byte from a UsefulBufC. There's no length check! */
+/**
+ * @brief Get the nth byte from a UsefulBufC.
+ *
+ * @param[in] UBC   UsefulBufC from which to get byte
+ * @param[in] n     Index of byte to get
+ *
+ * WARNING: this doesn't check that @c is within the UsefulBufC. This point
+ * of this is to have the ugly cast in just one place.
+ */
 #define UsefulBufC_NTH_BYTE(UBC, n)  (((const uint8_t *)(UBC.ptr))[n])
 
 
@@ -864,11 +873,13 @@
  *   - 16 bytes (15 bytes plus alignment padding) on a 32-bit CPU
  */
 typedef struct useful_out_buf {
-   /* PRIVATE DATA STRUCTURE */
-   UsefulBuf  UB;       /* Memory that is being output to */
-   size_t     data_len; /* length of the valid data, the insertion point */
-   uint16_t   magic;    /* Used to detect corruption and lack
-                         * of initialization */
+   /** @private Memory that is being output to */
+   UsefulBuf  UB;
+   /** @private length of the valid data, the insertion point */
+   size_t     data_len;
+   /** @private Magic number to detect lack of initalization/corruption */
+   uint16_t   magic;
+   /** @private Used to detect corruption and lack of initialization */
    uint8_t    err;
 } UsefulOutBuf;
 
@@ -881,7 +892,7 @@
  * returned @ref UsefulBufC has the size.
  *
  * As one can see, this is just a NULL pointer and very large size.
- * The NULL pointer tells UsefulOutputBuf to not copy any data.
+ * The NULL pointer tells @ref UsefulOutBuf to not copy any data.
  */
 #ifdef __cplusplus
 #define SizeCalculateUsefulBuf {NULL, SIZE_MAX}
@@ -1035,7 +1046,7 @@
 /**
  * @brief Insert a byte into the @ref UsefulOutBuf.
  *
- * @param[in] pUOutBuf  Pointer to the UsefulOutBuf.
+ * @param[in] pUOutBuf  Pointer to the @ref UsefulOutBuf.
  * @param[in] byte      Bytes to insert.
  * @param[in] uPos      Index in output buffer at which to insert.
  *
@@ -1348,7 +1359,7 @@
  * UsefulOutBuf how much was written.
  *
  * Warning: this bypasses the buffer safety provided by
- * UsefulOutBuf!
+ * @ref UsefulOutBuf!
  */
 static inline UsefulBuf
 UsefulOutBuf_GetOutPlace(UsefulOutBuf *pUOutBuf);
@@ -1366,14 +1377,14 @@
  * with UsefulOutBuf_GetOutPlace().
  *
  * Warning: this bypasses the buffer safety provided by
- * UsefulOutBuf!
+ * @ref UsefulOutBuf!
  */
 void
 UsefulOutBuf_Advance(UsefulOutBuf *pUOutBuf, size_t uAmount);
 
 
 /**
- *  @brief Returns the data put into a UsefulOutBuf.
+ *  @brief Returns the data put into a @ref UsefulOutBuf.
  *
  *  @param[in] pUOutBuf Pointer to the @ref UsefulOutBuf.
  *
@@ -1391,7 +1402,7 @@
 
 
 /**
- * @brief Copy out the data put into a UsefulOutBuf.
+ * @brief Copy out the data put into a @ref UsefulOutBuf.
  *
  * @param[in] pUOutBuf  Pointer to the @ref UsefulOutBuf.
  * @param[out] Dest     The destination buffer to copy into.
@@ -1407,7 +1418,7 @@
 
 
 /**
- * @brief Returns data starting at an offset that was put into a UsefulOutBuf.
+ * @brief Returns data starting at an offset that was put into a @ref UsefulOutBuf.
  *
  * @param[in] pUOutBuf  Pointer to the @ref UsefulOutBuf.
  * @param[in] uOffset    Offset to bytes to return.
@@ -1430,7 +1441,7 @@
 UsefulOutBuf_OutUBufOffset(UsefulOutBuf *pUOutBuf, size_t uOffset);
 
 
-/*
+/**
  * @brief Return a substring of the output data.
  *
  * @param[in] pUOutBuf  Pointer to the @ref UsefulOutBuf.
@@ -1573,13 +1584,17 @@
  *   - 32-bit machine: 8 + 4 + 2 + 1 (+ 1 byte padding to align) = 16 bytes
  */
 typedef struct useful_input_buf {
-   /* PRIVATE DATA STRUCTURE */
-   UsefulBufC UB;     /* Data being parsed */
-   size_t     cursor; /* Current offset in data being parse */
-   uint16_t   magic;  /* Check for corrupted or uninitialized UsefulInputBuf */
-   uint8_t    err;    /* Set request goes off end or magic number is bad */
+   /** @private Data being parsed */
+   UsefulBufC UB;
+   /** @private Current offset in data being parse */
+   size_t     cursor;
+   /** @private Check for corrupted or uninitialized UsefulInputBuf */
+   uint16_t   magic;
+   /** @private Set if request goes off end or magic number is bad */
+   uint8_t    err;
 } UsefulInputBuf;
 
+/** @private The  actual value of @c magic in UsefulInputBuf. */
 #define UIB_MAGIC (0xB00F)
 
 
