diff --git a/src/c/errors.c b/src/c/errors.c
index 152a295..3b6b8bb 100644
--- a/src/c/errors.c
+++ b/src/c/errors.c
@@ -29,8 +29,8 @@
     return      "Header type is out of range";
   case NDN_ERROR_encodeTypeAndValue_miscalculated_N_encoding_bytes:
     return      "EncodeTypeAndValue miscalculated N encoding bytes";
-  case NDN_ERROR_read_a_component_past_the_maximum_number_of_components_allowed_in_the_name:
-    return      "Read a component past the maximum number of components allowed in the name";
+  case NDN_ERROR_attempt_to_add_a_component_past_the_maximum_number_of_components_allowed_in_the_name:
+    return      "Attempt to add a component past the maximum number of components allowed in the name";
   case NDN_ERROR_read_an_entry_past_the_maximum_number_of_entries_allowed_in_the_exclude:
     return      "Read an entry past the maximum number of entries allowed in the exclude";
   case NDN_ERROR_findElementEnd_unexpected_close_tag:
diff --git a/src/c/errors.h b/src/c/errors.h
index 852c892..5906aa3 100644
--- a/src/c/errors.h
+++ b/src/c/errors.h
@@ -23,7 +23,7 @@
   NDN_ERROR_item_is_not_UDATA,
   NDN_ERROR_header_type_is_out_of_range,
   NDN_ERROR_encodeTypeAndValue_miscalculated_N_encoding_bytes,
-  NDN_ERROR_read_a_component_past_the_maximum_number_of_components_allowed_in_the_name,
+  NDN_ERROR_attempt_to_add_a_component_past_the_maximum_number_of_components_allowed_in_the_name,
   NDN_ERROR_read_an_entry_past_the_maximum_number_of_entries_allowed_in_the_exclude,
   NDN_ERROR_findElementEnd_unexpected_close_tag,
   NDN_ERROR_cannot_store_more_header_bytes_than_the_size_of_headerBuffer,
diff --git a/src/c/name.c b/src/c/name.c
index 355636d..147d583 100644
--- a/src/c/name.c
+++ b/src/c/name.c
@@ -4,6 +4,7 @@
  * See COPYING for copyright and distribution information.
  */
 
+#include <string.h>
 #include "util/ndn_memory.h"
 #include "name.h"
 
@@ -54,3 +55,18 @@
 
   return 1;
 }
+
+ndn_Error ndn_Name_appendComponent(struct ndn_Name *self, uint8_t* value, size_t valueLength)
+{
+  if (self->nComponents >= self->maxComponents)
+      return NDN_ERROR_attempt_to_add_a_component_past_the_maximum_number_of_components_allowed_in_the_name;
+  ndn_NameComponent_initialize(self->components + self->nComponents, value, valueLength);
+  ++self->nComponents;
+      
+  return NDN_ERROR_success;
+}
+
+ndn_Error ndn_Name_appendString(struct ndn_Name *self, char* value)
+{
+  return ndn_Name_appendComponent(self, (uint8_t*)value, strlen(value));
+}
diff --git a/src/c/name.h b/src/c/name.h
index 68c3b6d..3a0ba31 100644
--- a/src/c/name.h
+++ b/src/c/name.h
@@ -79,6 +79,34 @@
  */
 int ndn_Name_match(struct ndn_Name *self, struct ndn_Name *name);
 
+/**
+ * Append a component to this name with the bytes in the given array.
+ * @param self pointer to the ndn_Name struct.
+ * @param value The bytes of the component.  This does not copy the bytes.
+ * @param valueLength The number of bytes in value.
+ * @return 0 for success, or an error code if there is no more room in the components array (nComponents is already maxComponents).
+ */
+ndn_Error ndn_Name_appendComponent(struct ndn_Name *self, uint8_t* value, size_t valueLength);
+
+/**
+ * Append a component to this name with the bytes in the given blob.
+ * @param self pointer to the ndn_Name struct.
+ * @param value An ndn_Blob with the bytes of the component.  This does not copy the bytes.
+ * @return 0 for success, or an error code if there is no more room in the components array (nComponents is already maxComponents).
+ */
+static inline ndn_Error ndn_Name_appendBlob(struct ndn_Name *self, struct ndn_Blob *value)
+{
+  return ndn_Name_appendComponent(self, value->value, value->length);
+}
+
+/**
+ * Append a component to this name with the bytes in raw string value.
+ * @param self pointer to the ndn_Name struct.
+ * @param value The null-terminated string, treated as a byte array.  This does not copy the bytes.
+ * @return 0 for success, or an error code if there is no more room in the components array (nComponents is already maxComponents).
+ */
+ndn_Error ndn_Name_appendString(struct ndn_Name *self, char* value);
+
 #ifdef __cplusplus
 }
 #endif
