diff --git a/src/util/dummy-client-face.cpp b/src/util/dummy-client-face.cpp
index cc593ef..bdc8764 100644
--- a/src/util/dummy-client-face.cpp
+++ b/src/util/dummy-client-face.cpp
@@ -86,9 +86,6 @@
 
 DummyClientFace::DummyClientFace(const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
   : Face(make_shared<DummyClientFace::Transport>())
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-  , sentDatas(sentData)
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
   , m_internalKeyChain(new KeyChain)
   , m_keyChain(*m_internalKeyChain)
 {
@@ -98,9 +95,6 @@
 DummyClientFace::DummyClientFace(KeyChain& keyChain,
                                  const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
   : Face(make_shared<DummyClientFace::Transport>(), keyChain)
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-  , sentDatas(sentData)
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
   , m_keyChain(keyChain)
 {
   this->construct(options);
@@ -109,9 +103,6 @@
 DummyClientFace::DummyClientFace(boost::asio::io_service& ioService,
                                  const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
   : Face(make_shared<DummyClientFace::Transport>(), ioService)
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-  , sentDatas(sentData)
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
   , m_internalKeyChain(new KeyChain)
   , m_keyChain(*m_internalKeyChain)
 {
@@ -121,9 +112,6 @@
 DummyClientFace::DummyClientFace(boost::asio::io_service& ioService, KeyChain& keyChain,
                                  const Options& options/* = DummyClientFace::DEFAULT_OPTIONS*/)
   : Face(make_shared<DummyClientFace::Transport>(), ioService, keyChain)
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-  , sentDatas(sentData)
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
   , m_keyChain(keyChain)
 {
   this->construct(options);
@@ -261,24 +249,5 @@
   static_pointer_cast<Transport>(getTransport())->receive(lpPacket.wireEncode());
 }
 
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-
-shared_ptr<DummyClientFace>
-makeDummyClientFace(const DummyClientFace::Options& options)
-{
-  // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
-  return shared_ptr<DummyClientFace>(new DummyClientFace(options));
-}
-
-shared_ptr<DummyClientFace>
-makeDummyClientFace(boost::asio::io_service& ioService,
-                    const DummyClientFace::Options& options)
-{
-  // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
-  return shared_ptr<DummyClientFace>(new DummyClientFace(ref(ioService), options));
-}
-
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-
 } // namespace util
 } // namespace ndn
diff --git a/src/util/dummy-client-face.hpp b/src/util/dummy-client-face.hpp
index c9ea6fc..ae32e14 100644
--- a/src/util/dummy-client-face.hpp
+++ b/src/util/dummy-client-face.hpp
@@ -26,8 +26,6 @@
 #include "signal.hpp"
 #include "../lp/packet.hpp"
 
-#define NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-
 namespace ndn {
 namespace util {
 
@@ -116,10 +114,6 @@
    */
   std::vector<Data> sentData;
 
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-  std::vector<Data>& sentDatas; ///< deprecated alias to sentData
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-
   /** \brief NACKs sent out of this DummyClientFace
    *
    *  Sent NACKs are appended to this container if options.enablePacketLogger is true.
@@ -155,23 +149,6 @@
 void
 DummyClientFace::receive(const lp::Nack& nack);
 
-#ifdef NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-/**
- * @brief Create a dummy face with internal IO service
- * @deprecated Use the DummyFace constructor directly
- */
-shared_ptr<DummyClientFace>
-makeDummyClientFace(const DummyClientFace::Options& options = DummyClientFace::DEFAULT_OPTIONS);
-
-/**
- * @brief Create a dummy face with the provided IO service
- * @deprecated Use the DummyFace constructor directly
- */
-shared_ptr<DummyClientFace>
-makeDummyClientFace(boost::asio::io_service& ioService,
-                    const DummyClientFace::Options& options = DummyClientFace::DEFAULT_OPTIONS);
-#endif // NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
-
 } // namespace util
 } // namespace ndn
 
