diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index f99bf1e..01e2cc8 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -11,10 +11,8 @@
 #include "mgmt/internal-face.hpp"
 #include "mgmt/app-face.hpp"
 
-#include <ndn-cpp-dev/management/fib-management-options.hpp>
 #include <ndn-cpp-dev/encoding/tlv.hpp>
 
-
 namespace nfd {
 
 NFD_LOG_INIT("FibManager");
@@ -103,7 +101,7 @@
   VerbDispatchTable::const_iterator verbProcessor = m_verbDispatch.find (verb);
   if (verbProcessor != m_verbDispatch.end())
     {
-      ndn::FibManagementOptions options;
+      FibManagementOptions options;
       if (!extractOptions(request, options))
         {
           sendResponse(command, 400, "Malformed command");
@@ -120,7 +118,7 @@
 
       NFD_LOG_INFO("command result: processing verb: " << verb);
 
-      ndn::ControlResponse response;
+      ControlResponse response;
       (verbProcessor->second)(this, options, response);
 
       sendResponse(command, response);
@@ -135,7 +133,7 @@
 
 bool
 FibManager::extractOptions(const Interest& request,
-                           ndn::FibManagementOptions& extractedOptions)
+                           FibManagementOptions& extractedOptions)
 {
   const Name& command = request.getName();
   const size_t optionCompIndex =
@@ -156,8 +154,8 @@
 }
 
 void
-FibManager::insertEntry(const ndn::FibManagementOptions& options,
-                        ndn::ControlResponse& response)
+FibManager::insertEntry(const FibManagementOptions& options,
+                        ControlResponse& response)
 {
   NFD_LOG_DEBUG("insert prefix: " << options.getName());
   NFD_LOG_INFO("insert result: OK"
@@ -167,8 +165,8 @@
 }
 
 void
-FibManager::deleteEntry(const ndn::FibManagementOptions& options,
-                        ndn::ControlResponse& response)
+FibManager::deleteEntry(const FibManagementOptions& options,
+                        ControlResponse& response)
 {
   NFD_LOG_DEBUG("delete prefix: " << options.getName());
   NFD_LOG_INFO("delete result: OK"
@@ -185,8 +183,8 @@
 }
 
 void
-FibManager::addNextHop(const ndn::FibManagementOptions& options,
-                          ndn::ControlResponse& response)
+FibManager::addNextHop(const FibManagementOptions& options,
+                       ControlResponse& response)
 {
   NFD_LOG_DEBUG("add-nexthop prefix: " << options.getName()
                 << " faceid: " << options.getFaceId()
@@ -220,8 +218,8 @@
 }
 
 void
-FibManager::removeNextHop(const ndn::FibManagementOptions& options,
-                             ndn::ControlResponse &response)
+FibManager::removeNextHop(const FibManagementOptions& options,
+                          ControlResponse &response)
 {
   NFD_LOG_DEBUG("remove-nexthop prefix: " << options.getName()
                 << " faceid: " << options.getFaceId());
@@ -254,7 +252,7 @@
 }
 
 void
-FibManager::strategy(const ndn::FibManagementOptions& options, ndn::ControlResponse& response)
+FibManager::strategy(const FibManagementOptions& options, ControlResponse& response)
 {
 
 }
diff --git a/daemon/mgmt/fib-manager.hpp b/daemon/mgmt/fib-manager.hpp
index 3b36aeb..79be094 100644
--- a/daemon/mgmt/fib-manager.hpp
+++ b/daemon/mgmt/fib-manager.hpp
@@ -13,11 +13,12 @@
 #include "fw/strategy.hpp"
 #include "mgmt/manager-base.hpp"
 
-#include <ndn-cpp-dev/management/fib-management-options.hpp>
-#include <ndn-cpp-dev/management/control-response.hpp>
+#include <ndn-cpp-dev/management/nfd-fib-management-options.hpp>
 
 namespace nfd {
 
+using ndn::nfd::FibManagementOptions;
+
 class Forwarder;
 class Fib;
 
@@ -35,28 +36,28 @@
 private:
 
   void
-  insertEntry(const ndn::FibManagementOptions& options,
-                ndn::ControlResponse& response);
+  insertEntry(const FibManagementOptions& options,
+              ControlResponse& response);
 
   void
-  deleteEntry(const ndn::FibManagementOptions& options,
-                ndn::ControlResponse& response);
+  deleteEntry(const FibManagementOptions& options,
+              ControlResponse& response);
 
   void
-  addNextHop(const ndn::FibManagementOptions& options,
-               ndn::ControlResponse& response);
+  addNextHop(const FibManagementOptions& options,
+             ControlResponse& response);
 
   void
-  removeNextHop(const ndn::FibManagementOptions& options,
-                  ndn::ControlResponse& response);
+  removeNextHop(const FibManagementOptions& options,
+                ControlResponse& response);
 
   void
-  strategy(const ndn::FibManagementOptions& options,
-             ndn::ControlResponse& response);
+  strategy(const FibManagementOptions& options,
+           ControlResponse& response);
 
   bool
   extractOptions(const Interest& request,
-                   ndn::FibManagementOptions& extractedOptions);
+                 FibManagementOptions& extractedOptions);
 
   // void
   // onConfig(ConfigFile::Node section, bool isDryRun);
@@ -68,8 +69,8 @@
   std::map<Name, shared_ptr<fw::Strategy> > m_namespaceToStrategyMap;
 
   typedef function<void(FibManager*,
-                          const ndn::FibManagementOptions&,
-                          ndn::ControlResponse&)> VerbProcessor;
+                        const FibManagementOptions&,
+                        ControlResponse&)> VerbProcessor;
 
   typedef std::map<Name::Component, VerbProcessor> VerbDispatchTable;
 
diff --git a/daemon/mgmt/manager-base.cpp b/daemon/mgmt/manager-base.cpp
index 8ab06e8..7add7b6 100644
--- a/daemon/mgmt/manager-base.cpp
+++ b/daemon/mgmt/manager-base.cpp
@@ -27,13 +27,13 @@
                           uint32_t code,
                           const std::string& text)
 {
-  ndn::ControlResponse response(code, text);
+  ControlResponse response(code, text);
   sendResponse(name, response);
 }
 
 void
 ManagerBase::sendResponse(const Name& name,
-                          const ndn::ControlResponse& response)
+                          const ControlResponse& response)
 {
   NFD_LOG_DEBUG("responding"
                 << " name: " << name
diff --git a/daemon/mgmt/manager-base.hpp b/daemon/mgmt/manager-base.hpp
index e8da7c9..e8d63cf 100644
--- a/daemon/mgmt/manager-base.hpp
+++ b/daemon/mgmt/manager-base.hpp
@@ -8,10 +8,12 @@
 #define NFD_MGMT_MANAGER_BASE_HPP
 
 #include "common.hpp"
-#include <ndn-cpp-dev/management/control-response.hpp>
+#include <ndn-cpp-dev/management/nfd-control-response.hpp>
 
 namespace nfd {
 
+using ndn::nfd::ControlResponse;
+
 class AppFace;
 
 class ManagerBase
@@ -25,13 +27,13 @@
 protected:
 
   void
-  setResponse(ndn::ControlResponse& response,
+  setResponse(ControlResponse& response,
               uint32_t code,
               const std::string& text);
 
   void
   sendResponse(const Name& name,
-               const ndn::ControlResponse& response);
+               const ControlResponse& response);
 
   void
   sendResponse(const Name& name,
@@ -43,7 +45,7 @@
 };
 
 inline void
-ManagerBase::setResponse(ndn::ControlResponse& response,
+ManagerBase::setResponse(ControlResponse& response,
                          uint32_t code,
                          const std::string& text)
 {
