diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index 01e2cc8..0b20c02 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -80,6 +80,8 @@
   const Name& command = request.getName();
   const size_t commandNComps = command.size();
 
+
+
   if (FIB_MANAGER_COMMAND_UNSIGNED_NCOMPS <= commandNComps &&
       commandNComps < FIB_MANAGER_COMMAND_SIGNED_NCOMPS)
     {
@@ -117,7 +119,6 @@
         }
 
       NFD_LOG_INFO("command result: processing verb: " << verb);
-
       ControlResponse response;
       (verbProcessor->second)(this, options, response);
 
@@ -149,6 +150,12 @@
       NFD_LOG_INFO("Bad command option parse: " << command);
       return false;
     }
+
+  if (extractedOptions.getFaceId() == 0)
+    {
+      extractedOptions.setFaceId(request.getIncomingFaceId());
+    }
+
   NFD_LOG_DEBUG("Options parsed OK");
   return true;
 }
@@ -161,7 +168,7 @@
   NFD_LOG_INFO("insert result: OK"
                << " prefix: " << options.getName());
   std::pair<shared_ptr<fib::Entry>, bool> insertResult = m_managedFib.insert(options.getName());
-  setResponse(response, 200, "OK");
+  setResponse(response, 200, "Success", options.wireEncode());
 }
 
 void
@@ -173,7 +180,7 @@
                << " prefix: " << options.getName());
 
   m_managedFib.remove(options.getName());
-  setResponse(response, 200, "OK");
+  setResponse(response, 200, "Success", options.wireEncode());
 }
 
 static inline bool
@@ -202,7 +209,7 @@
                        << " prefix:" << options.getName()
                        << " faceid: " << options.getFaceId()
                        << " cost: " << options.getCost());
-          setResponse(response, 200, "OK");
+          setResponse(response, 200, "Success", options.wireEncode());
         }
       else
         {
@@ -234,7 +241,7 @@
           NFD_LOG_INFO("remove-nexthop result: OK prefix: " << options.getName()
                        << " faceid: " << options.getFaceId());
 
-          setResponse(response, 200, "OK");
+          setResponse(response, 200, "Success", options.wireEncode());
         }
       else
         {
diff --git a/daemon/mgmt/manager-base.hpp b/daemon/mgmt/manager-base.hpp
index e8d63cf..8fb8cd3 100644
--- a/daemon/mgmt/manager-base.hpp
+++ b/daemon/mgmt/manager-base.hpp
@@ -30,6 +30,11 @@
   setResponse(ControlResponse& response,
               uint32_t code,
               const std::string& text);
+  void
+  setResponse(ControlResponse& response,
+              uint32_t code,
+              const std::string& text,
+              const Block& body);
 
   void
   sendResponse(const Name& name,
@@ -53,6 +58,16 @@
   response.setText(text);
 }
 
+inline void
+ManagerBase::setResponse(ControlResponse& response,
+                         uint32_t code,
+                         const std::string& text,
+                         const Block& body)
+{
+  setResponse(response, code, text);
+  response.setBody(body);
+}
+
 
 } // namespace nfd
 
