diff --git a/src/face.cpp b/src/face.cpp
index 0212fd7..a4f3615 100644
--- a/src/face.cpp
+++ b/src/face.cpp
@@ -133,6 +133,12 @@
 
 Face::~Face() = default;
 
+shared_ptr<Transport>
+Face::getTransport()
+{
+  return m_transport;
+}
+
 const PendingInterestId*
 Face::expressInterest(const Interest& interest,
                       const DataCallback& afterSatisfied,
diff --git a/src/face.hpp b/src/face.hpp
index 9a01d17..9e6faa4 100644
--- a/src/face.hpp
+++ b/src/face.hpp
@@ -672,6 +672,13 @@
     return m_ioService;
   }
 
+NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PROTECTED:
+  /**
+   * @brief Get the underlying transport of the face
+   */
+  shared_ptr<Transport>
+  getTransport();
+
 private:
 
   /**
diff --git a/src/util/dummy-client-face.cpp b/src/util/dummy-client-face.cpp
index aadb6bc..1db5b8d 100644
--- a/src/util/dummy-client-face.cpp
+++ b/src/util/dummy-client-face.cpp
@@ -82,17 +82,21 @@
   Signal<Transport, Block> onSendBlock;
 };
 
-DummyClientFace::DummyClientFace(const Options& options, shared_ptr<Transport> transport)
-  : Face(transport)
-  , m_transport(transport)
+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
 {
   this->construct(options);
 }
 
-DummyClientFace::DummyClientFace(const Options& options, shared_ptr<Transport> transport,
-                                 boost::asio::io_service& ioService)
-  : Face(transport, ioService)
-  , m_transport(transport)
+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
 {
   this->construct(options);
 }
@@ -100,7 +104,7 @@
 void
 DummyClientFace::construct(const Options& options)
 {
-  m_transport->onSendBlock.connect([this] (const Block& blockFromDaemon) {
+  static_pointer_cast<Transport>(getTransport())->onSendBlock.connect([this] (const Block& blockFromDaemon) {
     Block packet(blockFromDaemon);
     packet.encode();
     lp::Packet lpPacket(packet);
@@ -151,7 +155,7 @@
     this->sentInterests.push_back(interest);
   });
   onSendData.connect([this] (const Data& data) {
-    this->sentDatas.push_back(data);
+    this->sentData.push_back(data);
   });
   onSendNack.connect([this] (const lp::Nack& nack) {
     this->sentNacks.push_back(nack);
@@ -204,7 +208,7 @@
   if (nextHopFaceIdTag != nullptr) {
     lpPacket.add<lp::NextHopFaceIdField>(*nextHopFaceIdTag);
   }
-  m_transport->receive(lpPacket.wireEncode());
+  static_pointer_cast<Transport>(getTransport())->receive(lpPacket.wireEncode());
 }
 
 template void
@@ -227,15 +231,16 @@
     lpPacket.add<lp::IncomingFaceIdField>(*incomingFaceIdTag);
   }
 
-  m_transport->receive(lpPacket.wireEncode());
+  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, make_shared<DummyClientFace::Transport>()));
+  return shared_ptr<DummyClientFace>(new DummyClientFace(options));
 }
 
 shared_ptr<DummyClientFace>
@@ -243,10 +248,10 @@
                     const DummyClientFace::Options& options)
 {
   // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
-  return shared_ptr<DummyClientFace>(
-         new DummyClientFace(options, make_shared<DummyClientFace::Transport>(),
-                             ref(ioService)));
+  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 8d47a75..b5ec7d7 100644
--- a/src/util/dummy-client-face.hpp
+++ b/src/util/dummy-client-face.hpp
@@ -26,6 +26,8 @@
 #include "signal.hpp"
 #include "../lp/packet.hpp"
 
+#define NDN_UTIL_DUMMY_FACE_KEEP_DEPRECATED
+
 namespace ndn {
 namespace util {
 
@@ -48,6 +50,16 @@
     bool enableRegistrationReply;
   };
 
+  /**
+   * @brief Create a dummy face with internal IO service
+   */
+  DummyClientFace(const Options& options = DummyClientFace::DEFAULT_OPTIONS);
+
+  /**
+   * @brief Create a dummy face with the provided IO service
+   */
+  DummyClientFace(boost::asio::io_service& ioService, const Options& options = DummyClientFace::DEFAULT_OPTIONS);
+
   /** \brief cause the Face to receive a packet
    *  \tparam Packet either Interest or Data
    */
@@ -58,22 +70,9 @@
 private: // constructors
   class Transport;
 
-  // constructors are private; use makeDummyClientFace to create DummyClientFace
-
-  DummyClientFace(const Options& options, shared_ptr<Transport> transport);
-
-  DummyClientFace(const Options& options, shared_ptr<Transport> transport,
-                  boost::asio::io_service& ioService);
-
   void
   construct(const Options& options);
 
-  friend shared_ptr<DummyClientFace>
-  makeDummyClientFace(const DummyClientFace::Options& options);
-
-  friend shared_ptr<DummyClientFace>
-  makeDummyClientFace(boost::asio::io_service& ioService, const DummyClientFace::Options& options);
-
 private:
   void
   enablePacketLogging();
@@ -103,7 +102,11 @@
    *  User of this class is responsible for cleaning up the container, if necessary.
    *  After .put, .processEvents must be called before the Data would show up here.
    */
-  std::vector<Data> sentDatas;
+  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
    *
@@ -130,21 +133,28 @@
    *  After .put, .processEvents must be called before this signal would be emitted.
    */
   Signal<DummyClientFace, lp::Nack> onSendNack;
-
-private:
-  shared_ptr<Transport> m_transport;
 };
 
 template<>
 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
diff --git a/tests/unit-tests/face.t.cpp b/tests/unit-tests/face.t.cpp
index ccd7df4..43164a6 100644
--- a/tests/unit-tests/face.t.cpp
+++ b/tests/unit-tests/face.t.cpp
@@ -23,6 +23,7 @@
 #include "util/scheduler.hpp"
 #include "security/key-chain.hpp"
 #include "util/dummy-client-face.hpp"
+#include "transport/tcp-transport.hpp"
 
 #include "boost-test.hpp"
 #include "unit-test-time-fixture.hpp"
@@ -595,6 +596,22 @@
   // should not segfault
 }
 
+BOOST_AUTO_TEST_CASE(FaceTransport)
+{
+  KeyChain keyChain;
+
+  BOOST_CHECK(Face().getTransport() != nullptr);
+
+  BOOST_CHECK(Face(shared_ptr<Transport>()).getTransport() == nullptr);
+  BOOST_CHECK(Face(shared_ptr<Transport>(), io).getTransport() == nullptr);
+  BOOST_CHECK(Face(shared_ptr<Transport>(), io, keyChain).getTransport() == nullptr);
+
+  auto transport = make_shared<TcpTransport>("localhost", "6363"); // no real io operations will be scheduled
+  BOOST_CHECK(Face(transport).getTransport() == transport);
+  BOOST_CHECK(Face(transport, io).getTransport() == transport);
+  BOOST_CHECK(Face(transport, io, keyChain).getTransport() == transport);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // tests
