diff --git a/library/lms.c b/library/lms.c
index de38c02..f30f349 100644
--- a/library/lms.c
+++ b/library/lms.c
@@ -83,7 +83,7 @@
 static const unsigned char D_INTR_CONSTANT_BYTES[D_CONST_LEN] = {0x83, 0x83};
 
 
-/* Calculate the value of a leaf node of the merkle tree (which is a hash of a
+/* Calculate the value of a leaf node of the Merkle tree (which is a hash of a
  * public key and some other parameters like the leaf index). This function
  * implements RFC8554 section 5.3, in the case where r >= 2^h.
  *
@@ -95,8 +95,8 @@
  *                      corresponds to the index of this leaf node. This
  *                      is a hash output.
  *
- *  r_node_idx          The index of this node in the merkle tree. Note
- *                      that the root node of the merkle tree is
+ *  r_node_idx          The index of this node in the Merkle tree. Note
+ *                      that the root node of the Merkle tree is
  *                      1-indexed.
  *
  *  out                 The output node value, which is a hash output.
@@ -146,7 +146,7 @@
     return ( mbedtls_lms_error_from_psa( status ) );
 }
 
-/* Calculate the value of an internal node of the merkle tree (which is a hash
+/* Calculate the value of an internal node of the Merkle tree (which is a hash
  * of a public key and some other parameters like the node index). This function
  * implements RFC8554 section 5.3, in the case where r < 2^h.
  *
@@ -156,14 +156,14 @@
  *
  *  left_node           The value of the child of this node which is on
  *                      the left-hand side. As with all nodes on the
- *                      merkle tree, this is a hash output.
+ *                      Merkle tree, this is a hash output.
  *
  *  right_node          The value of the child of this node which is on
  *                      the right-hand side. As with all nodes on the
- *                      merkle tree, this is a hash output.
+ *                      Merkle tree, this is a hash output.
  *
- *  r_node_idx          The index of this node in the merkle tree. Note
- *                      that the root node of the merkle tree is
+ *  r_node_idx          The index of this node in the Merkle tree. Note
+ *                      that the root node of the Merkle tree is
  *                      1-indexed.
  *
  *  out                 The output node value, which is a hash output.
@@ -434,9 +434,9 @@
 
 #if defined(MBEDTLS_LMS_PRIVATE)
 
-/* Calculate a full merkle tree based on a private key. This function
+/* Calculate a full Merkle tree based on a private key. This function
  * implements RFC8554 section 5.3, and is used to generate a public key (as the
- * public key is the root node of the merkle tree).
+ * public key is the root node of the Merkle tree).
  *
  *  ctx                 The LMS private context, containing a parameter
  *                      set and private key material consisting of both
@@ -445,7 +445,7 @@
  *  tree                The output tree, which is 2^(H + 1) hash outputs.
  *                      In the case of H=10 we have 2048 tree nodes (of
  *                      which 1024 of them are leaf nodes). Note that
- *                      because the merkle tree root is 1-indexed, the 0
+ *                      because the Merkle tree root is 1-indexed, the 0
  *                      index tree node is never used.
  */
 static int calculate_merkle_tree( const mbedtls_lms_private_t *ctx,
@@ -491,9 +491,9 @@
     return( 0 );
 }
 
-/* Calculate a path from a leaf node of the merkle tree to the root of the tree,
+/* Calculate a path from a leaf node of the Merkle tree to the root of the tree,
  * and return the full path. This function implements RFC8554 section 5.4.1, as
- * the merkle path is the main component of an LMS signature.
+ * the Merkle path is the main component of an LMS signature.
  *
  *  ctx                 The LMS private context, containing a parameter
  *                      set and private key material consisting of both
