diff --git a/src/common.hpp b/src/common.hpp
index 281da0b..457ac23 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -36,6 +36,15 @@
 #include <boost/iostreams/categories.hpp>
 #include <boost/iostreams/stream.hpp>
 
+#if defined(__GNUC__) || defined(__clang__)
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#elif defined(_MSC_VER)
+#define DEPRECATED(func) __declspec(deprecated) func
+#else
+#pragma message("DEPRECATED not implemented")
+#define DEPRECATED(func) func
+#endif
+
 #if NDN_CPP_HAVE_CXX11
 
 #if (__cplusplus < 201103L)
diff --git a/src/encoding/tlv-nfd.hpp b/src/encoding/tlv-nfd.hpp
index aa4ed02..ec1b60a 100644
--- a/src/encoding/tlv-nfd.hpp
+++ b/src/encoding/tlv-nfd.hpp
@@ -37,6 +37,7 @@
   TotalOutgoingInterestCounter = 146,
   TotalOutgoingDataCounter     = 147,
   FaceEvent                    = 192,
+  FaceEventKind                = 193,
 
 };
 
diff --git a/src/name.hpp b/src/name.hpp
index 6d7582f..523b200 100644
--- a/src/name.hpp
+++ b/src/name.hpp
@@ -255,39 +255,55 @@
   toUri() const;
   
   /**
+   * @deprecated
    * Append a component with the encoded segment number.
    * @param segment The segment number.
    * @return This name so that you can chain calls to append.
    */  
-  Name& 
+  DEPRECATED(Name& 
   appendSegment(uint64_t segment)
   {
     m_nameBlock.push_back(Component::fromNumberWithMarker(segment, 0x00));
     return *this;
-  }
+  })
 
   /**
+   * @deprecated
    * Append a component with the encoded version number.
    * Note that this encodes the exact value of version without converting from a time representation.
    * @param version The version number.
    * @return This name so that you can chain calls to append.
    */  
-  Name& 
+  DEPRECATED(Name& 
   appendVersion(uint64_t version)
   {
     m_nameBlock.push_back(Component::fromNumberWithMarker(version, 0xFD));
     return *this;
-  }
+  })
 
   /**
+   * @deprecated
    * @brief Append a component with the encoded version number.
    * 
    * This version of the method creates version number based on the current timestamp
    * @return This name so that you can chain calls to append.
    */  
-  Name& 
-  appendVersion();
-  
+  DEPRECATED(Name& 
+             appendVersion());
+
+
+  /**
+   * @brief Append a component with the encoded non-negative number.
+   * @param number The non-negative number
+   * @return This name so that you can chain calls to append.
+   */
+  Name&
+  appendNumber(uint64_t number)
+  {
+    m_nameBlock.push_back(Component::fromNumber(number));
+    return *this;
+  }
+
   /**
    * Check if this name has the same component count and components as the given name.
    * @param name The Name to check.
