diff --git a/src/name.hpp b/src/name.hpp
index 9743a96..a9716e9 100644
--- a/src/name.hpp
+++ b/src/name.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -223,20 +223,11 @@
    * Get a new name, constructed as a subset of components.
    * @param iStartComponent The index if the first component to get.
    * @param nComponents The number of components starting at iStartComponent.
+   *                    Use npos to get the sub Name until the end of this Name.
    * @return A new name.
    */
   Name
-  getSubName(size_t iStartComponent, size_t nComponents) const;
-
-  /**
-   * @brief Get a new name, constructed as a subset of components starting at
-   *        iStartComponent until the end of the name.
-   *
-   * @param iStartComponent The index if the first component to get.
-   * @return A new name.
-   */
-  Name
-  getSubName(size_t iStartComponent) const;
+  getSubName(size_t iStartComponent, size_t nComponents = npos) const;
 
   /**
    * @brief Return a new Name with the first nComponents components of this Name.
@@ -460,14 +451,28 @@
    * std::sort gives: /a/b/d /a/b/cc /c /c/a /bb .  This is intuitive because all names with
    * the prefix /a are next to each other.  But it may be also be counter-intuitive because
    * /c comes before /bb according to NDN canonical ordering since it is shorter.  @param
-   * other The other Name to compare with.  @return 0 If they compare equal, -1 if *this
-   * comes before other in the canonical ordering, or 1 if *this comes after other in the
-   * canonical ordering.
+   * other The other Name to compare with.
+   *
+   * @retval 0 if they compare equal
+   * @retval -1 if *this comes before other in the canonical ordering
+   * @retval 1 if *this comes after other in the canonical ordering
    *
    * @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
    */
   int
-  compare(const Name& other) const;
+  compare(const Name& other) const
+  {
+    return this->compare(0, npos, other);
+  }
+
+  /** \brief compares [pos1, pos1+count1) components in this Name
+   *         to [pos2, pos2+count2) components in \p other
+   *
+   *  This is equivalent to this->getSubName(pos1, count1).compare(other.getSubName(pos2, count2));
+   */
+  int
+  compare(size_t pos1, size_t count1,
+          const Name& other, size_t pos2 = 0, size_t count2 = npos) const;
 
   /**
    * Append the component
@@ -591,6 +596,11 @@
     return const_reverse_iterator(begin());
   }
 
+public:
+  /** \brief indicates "until the end" in getSubName and compare
+   */
+  static const size_t npos;
+
 private:
   mutable Block m_nameBlock;
 };
