diff --git a/daemon/mgmt/app-face.cpp b/daemon/mgmt/app-face.cpp
new file mode 100644
index 0000000..79bf39f
--- /dev/null
+++ b/daemon/mgmt/app-face.cpp
@@ -0,0 +1,17 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "app-face.hpp"
+
+namespace nfd {
+
+void
+AppFace::sign(Data& data)
+{
+  m_keyChain.sign(data);
+}
+
+} // namespace nfd
diff --git a/daemon/mgmt/app-face.hpp b/daemon/mgmt/app-face.hpp
index af58cdf..b6e2ab5 100644
--- a/daemon/mgmt/app-face.hpp
+++ b/daemon/mgmt/app-face.hpp
@@ -9,9 +9,11 @@
 
 #include "common.hpp"
 
+#include <ndn-cpp-dev/security/key-chain.hpp>
+
 namespace nfd {
 
-typedef ndn::func_lib::function<void(const Name&, const Interest&)> OnInterest;
+typedef function<void(const Name&, const Interest&)> OnInterest;
 
 class AppFace
 {
@@ -21,10 +23,16 @@
                     OnInterest onInterest) = 0;
 
   virtual void
+  sign(Data& data);
+
+  virtual void
   put(const Data& data) = 0;
 
   virtual
   ~AppFace() { }
+
+protected:
+  ndn::KeyChain m_keyChain;
 };
 
 } // namespace nfd
diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index 5885e48..69be19f 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -33,41 +33,34 @@
   FibManager::FIB_MANAGER_COMMAND_UNSIGNED_NCOMPS +
   0; // No signed Interest support in mock, otherwise 3 (timestamp, signed info tlv, signature tlv)
 
-const Name::Component FibManager::FIB_MANAGER_COMMAND_VERB_INSERT = "insert";
-const Name::Component FibManager::FIB_MANAGER_COMMAND_VERB_DELETE = "delete";
-const Name::Component FibManager::FIB_MANAGER_COMMAND_VERB_ADD_NEXTHOP = "add-nexthop";
-const Name::Component FibManager::FIB_MANAGER_COMMAND_VERB_REMOVE_NEXTHOP = "remove-nexthop";
-const Name::Component FibManager::FIB_MANAGER_COMMAND_VERB_STRATEGY = "strategy";
-
-
 const FibManager::VerbAndProcessor FibManager::FIB_MANAGER_COMMAND_VERBS[] =
   {
     // Unsupported
 
     // VerbAndProcessor(
-    //                  FibManager::FIB_MANAGER_COMMAND_VERB_INSERT,
+    //                  "insert",
     //                  &FibManager::fibInsert
     //                  ),
 
     // VerbAndProcessor(
-    //                  FibManager::FIB_MANAGER_COMMAND_VERB_DELETE,
+    //                  "delete",
     //                  &FibManager::fibDelete
     //                  ),
 
     VerbAndProcessor(
-                     FibManager::FIB_MANAGER_COMMAND_VERB_ADD_NEXTHOP,
+                     "add-nexthop",
                      &FibManager::fibAddNextHop
                      ),
 
     // Unsupported
 
     // VerbAndProcessor(
-    //                  FibManager::FIB_MANAGER_COMMAND_VERB_REMOVE_NEXTHOP,
+    //                  "remove-nexthop",
     //                  &FibManager::fibRemoveNextHop
     //                  ),
 
     // VerbAndProcessor(
-    //                  FibManager::FIB_MANAGER_COMMAND_VERB_STRATEGY,
+    //                  "strategy",
     //                  &FibManager::fibStrategy
     //                  )
 
@@ -99,7 +92,7 @@
       commandNComps < FIB_MANAGER_COMMAND_SIGNED_NCOMPS)
     {
       NFD_LOG_INFO("Unsigned command: " << command);
-      sendResponse(command, 401, "SIGREQ");
+      sendResponse(command, 401, "Signature required");
 
       return;
     }
@@ -107,7 +100,7 @@
       !FIB_MANAGER_COMMAND_PREFIX.isPrefixOf(command))
     {
       NFD_LOG_INFO("Malformed command: " << command);
-      sendResponse(command, 400, "MALFORMED");
+      sendResponse(command, 400, "Malformed command");
       return;
     }
 
@@ -123,7 +116,7 @@
   else
     {
       NFD_LOG_INFO("Unsupported command verb: " << verb);
-      sendResponse(request.getName(), 404, "UNSUPPORTED");
+      sendResponse(request.getName(), 501, "Unsupported command");
     }
 
 }
@@ -160,7 +153,7 @@
   catch (const ndn::Tlv::Error& e)
     {
       NFD_LOG_INFO("Bad command option parse: " << command);
-      sendResponse(request.getName(), 400, "MALFORMED");
+      sendResponse(request.getName(), 400, "Malformed command");
       return;
     }
 
@@ -168,7 +161,7 @@
   if (false)
     {
       NFD_LOG_INFO("Unauthorized command attempt: " << command);
-      sendResponse(request.getName(), 403, "UNAUTHORIZED");
+      sendResponse(request.getName(), 403, "Unauthorized command");
       return;
     }
 
@@ -177,7 +170,7 @@
                << " Cost: " << options.getCost());
 
   shared_ptr<Face> nextHopFace = m_getFace(options.getFaceId());
-  if (nextHopFace != 0)
+  if (static_cast<bool>(nextHopFace))
     {
       std::pair<shared_ptr<fib::Entry>, bool> insertResult = m_managedFib.insert(options.getName());
       insertResult.first->addNextHop(nextHopFace, options.getCost());
@@ -186,7 +179,7 @@
   else
     {
       NFD_LOG_INFO("Unknown FaceId: " << command);
-      sendResponse(request.getName(), 400, "MALFORMED");
+      sendResponse(request.getName(), 400, "Malformed command");
     }
 }
 
diff --git a/daemon/mgmt/fib-manager.hpp b/daemon/mgmt/fib-manager.hpp
index 60b2385..d77a2f2 100644
--- a/daemon/mgmt/fib-manager.hpp
+++ b/daemon/mgmt/fib-manager.hpp
@@ -55,8 +55,6 @@
   function<shared_ptr<Face>(FaceId)> m_getFace;
   std::map<Name, shared_ptr<fw::Strategy> > m_namespaceToStrategyMap;
 
-
-
   typedef function<void(FibManager*,
                         const Interest&)> VerbProcessor;
 
@@ -77,12 +75,6 @@
   // 5 in mock (see UNSIGNED_NCOMPS), 8 with signed Interest support.
   static const size_t FIB_MANAGER_COMMAND_SIGNED_NCOMPS;
 
-  static const Name::Component FIB_MANAGER_COMMAND_VERB_INSERT;
-  static const Name::Component FIB_MANAGER_COMMAND_VERB_DELETE;
-  static const Name::Component FIB_MANAGER_COMMAND_VERB_ADD_NEXTHOP;
-  static const Name::Component FIB_MANAGER_COMMAND_VERB_REMOVE_NEXTHOP;
-  static const Name::Component FIB_MANAGER_COMMAND_VERB_STRATEGY;
-
   static const VerbAndProcessor FIB_MANAGER_COMMAND_VERBS[];
 
 };
diff --git a/daemon/mgmt/internal-face.cpp b/daemon/mgmt/internal-face.cpp
index ec1baab..7af328f 100644
--- a/daemon/mgmt/internal-face.cpp
+++ b/daemon/mgmt/internal-face.cpp
@@ -44,7 +44,7 @@
   // match or there is no matching prefix in the map.
 
 
-  if (filter == m_interestFilters.end())
+  if (filter == m_interestFilters.end() && filter != m_interestFilters.begin())
     {
       // We hit the end, check if the previous element
       // is a match
@@ -59,7 +59,7 @@
           NFD_LOG_DEBUG("no Interest filter found for " << interestName << " (before end)");
         }
     }
-  else if (filter->first.isPrefixOf(interestName))
+  else if (filter->first == interestName)
     {
       NFD_LOG_DEBUG("found Interest filter for " << filter->first << " (exact match)");
       filter->second(interestName, interest);
diff --git a/daemon/mgmt/manager-base.cpp b/daemon/mgmt/manager-base.cpp
index 2b27f85..55787b6 100644
--- a/daemon/mgmt/manager-base.cpp
+++ b/daemon/mgmt/manager-base.cpp
@@ -40,7 +40,7 @@
   Data response(name);
   response.setContent(encodedControl);
 
-  m_keyChain.sign(response);
+  m_face->sign(response);
   m_face->put(response);
 }
 
diff --git a/daemon/mgmt/manager-base.hpp b/daemon/mgmt/manager-base.hpp
index fd3bcef..d62b1c0 100644
--- a/daemon/mgmt/manager-base.hpp
+++ b/daemon/mgmt/manager-base.hpp
@@ -8,7 +8,7 @@
 #define NFD_MGMT_MANAGER_BASE_HPP
 
 #include "common.hpp"
-#include <ndn-cpp-dev/security/key-chain.hpp>
+
 
 namespace nfd {
 
@@ -31,7 +31,6 @@
 
 protected:
   shared_ptr<AppFace> m_face;
-   ndn::KeyChain m_keyChain;
 };
 
 
