diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index b8506ac..ac9085c 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -150,9 +150,9 @@
                          const ControlParameters& parameters,
                          const ndn::mgmt::CommandContinuation& done)
 {
-  shared_ptr<Face> target = m_faceTable.get(parameters.getFaceId());
-  if (target) {
-    target->close();
+  Face* face = m_faceTable.get(parameters.getFaceId());
+  if (face != nullptr) {
+    face->close();
   }
 
   done(ControlResponse(200, "OK").setBody(parameters.wireEncode()));
@@ -228,7 +228,7 @@
   // and is initialized synchronously with IncomingFaceId field enabled.
   BOOST_ASSERT(incomingFaceIdTag != nullptr);
 
-  auto face = m_faceTable.get(*incomingFaceIdTag);
+  Face* face = m_faceTable.get(*incomingFaceIdTag);
   if (face == nullptr) {
     NFD_LOG_DEBUG("FaceId " << *incomingFaceIdTag << " not found");
     done(ControlResponse(410, "Face not found"));
@@ -241,7 +241,7 @@
     return nullptr;
   }
 
-  return face.get();
+  return face;
 }
 
 void
diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index b7ac209..1c15ebf 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -24,6 +24,7 @@
  */
 
 #include "fib-manager.hpp"
+#include "fw/face-table.hpp"
 #include <ndn-cxx/management/nfd-fib-entry.hpp>
 
 namespace nfd {
@@ -31,12 +32,12 @@
 NFD_LOG_INIT("FibManager");
 
 FibManager::FibManager(Fib& fib,
-                       function<shared_ptr<Face>(FaceId)> getFace,
+                       const FaceTable& faceTable,
                        Dispatcher& dispatcher,
                        CommandValidator& validator)
   : NfdManagerBase(dispatcher, validator, "fib")
   , m_fib(fib)
-  , m_getFace(getFace)
+  , m_faceTable(faceTable)
 {
   registerCommandHandler<ndn::nfd::FibAddNextHopCommand>("add-nexthop",
     bind(&FibManager::addNextHop, this, _2, _3, _4, _5));
@@ -61,7 +62,7 @@
                 << " faceid: " << faceId
                 << " cost: " << cost);
 
-  shared_ptr<Face> face = m_getFace(faceId);
+  Face* face = m_faceTable.get(faceId);
   if (face != nullptr) {
     fib::Entry* entry = m_fib.insert(prefix).first;
     entry->addNextHop(*face, cost);
@@ -89,7 +90,7 @@
   NFD_LOG_TRACE("remove-nexthop prefix: " << parameters.getName()
                 << " faceid: " << parameters.getFaceId());
 
-  shared_ptr<Face> face = m_getFace(parameters.getFaceId());
+  Face* face = m_faceTable.get(parameters.getFaceId());
   if (face != nullptr) {
     fib::Entry* entry = m_fib.findExactMatch(parameters.getName());
     if (entry != nullptr) {
diff --git a/daemon/mgmt/fib-manager.hpp b/daemon/mgmt/fib-manager.hpp
index 94300cb..9599a01 100644
--- a/daemon/mgmt/fib-manager.hpp
+++ b/daemon/mgmt/fib-manager.hpp
@@ -33,6 +33,8 @@
 
 namespace nfd {
 
+class FaceTable;
+
 /**
  * @brief implement the FIB Management of NFD Management Protocol.
  * @sa http://redmine.named-data.net/projects/nfd/wiki/FibMgmt
@@ -44,12 +46,12 @@
    * @brief construct a FibManger
    *
    * @param fib the managed FIB
-   * @param getFace a function used to retrive a face by FaceId from the face table
+   * @param faceTable FaceTable for querying available faces
    * @param dispatcher the management dispatcher
    * @param validator the command validator
    */
   FibManager(Fib& fib,
-             function<shared_ptr<Face>(FaceId)> getFace,
+             const FaceTable& faceTable,
              Dispatcher& dispatcher,
              CommandValidator& validator);
 
@@ -74,7 +76,7 @@
 
 private:
   Fib& m_fib;
-  function<shared_ptr<Face>(FaceId)> m_getFace;
+  const FaceTable& m_faceTable;
 };
 
 } // namespace nfd
