diff --git a/ndn-cpp/name.cpp b/ndn-cpp/name.cpp
index 03b6168..40dbab5 100644
--- a/ndn-cpp/name.cpp
+++ b/ndn-cpp/name.cpp
@@ -276,21 +276,31 @@
 }
 
 bool 
+Name::equals(const Name& name) const
+{
+	if (components_.size() != name.components_.size())
+    return false;
+
+  for (size_t i = 0; i < components_.size(); ++i) {
+    if (*components_[i].getValue() != *name.components_[i].getValue())
+      return false;
+  }
+
+	return true;
+}
+
+bool 
 Name::match(const Name& name) const
 {
   // Imitate ndn_Name_match.
   
 	// This name is longer than the name we are checking it against.
 	if (components_.size() > name.components_.size())
-    return 0;
+    return false;
 
 	// Check if at least one of given components doesn't match.
-  size_t i;
-  for (i = 0; i < components_.size(); ++i) {
-    const Component &selfComponent = components_[i];
-    const Component &nameComponent = name.components_[i];
-
-    if (*selfComponent.getValue() != *nameComponent.getValue())
+  for (size_t i = 0; i < components_.size(); ++i) {
+    if (*components_[i].getValue() != *name.components_[i].getValue())
       return false;
   }
 
diff --git a/ndn-cpp/name.hpp b/ndn-cpp/name.hpp
index 256bd59..647d2a3 100644
--- a/ndn-cpp/name.hpp
+++ b/ndn-cpp/name.hpp
@@ -353,6 +353,14 @@
   }
   
   /**
+   * Check if this name has the same component count and components as the given name.
+   * @param name The Name to check.
+   * @return true if the names are equal, otherwise false.
+   */
+  bool
+  equals(const Name& name) const;
+  
+  /**
    * Check if the N components of this name are the same as the first N components of the given name.
    * @param name The Name to check.
    * @return true if this matches the given name, otherwise false.  This always returns true if this name is empty.
