diff --git a/src/route/fib.cpp b/src/route/fib.cpp
index 1815b27..16ed8a8 100644
--- a/src/route/fib.cpp
+++ b/src/route/fib.cpp
@@ -294,12 +294,7 @@
                 const CommandSucceedCallback& onSuccess,
                 const CommandFailCallback& onFailure)
 {
-  ndn::nfd::ControlParameters faceParameters;
-  faceParameters
-    .setUri(faceUri);
-  m_controller.start<ndn::nfd::FaceCreateCommand>(faceParameters,
-                                                  onSuccess,
-                                                  onFailure);
+  m_faceController.createFace(faceUri, onSuccess, onFailure);
 }
 
 void
diff --git a/src/route/fib.hpp b/src/route/fib.hpp
index e49727b..d1737d2 100644
--- a/src/route/fib.hpp
+++ b/src/route/fib.hpp
@@ -31,6 +31,7 @@
 #include "face-map.hpp"
 #include "fib-entry.hpp"
 #include "test-access-control.hpp"
+#include "utility/face-controller.hpp"
 
 namespace nlsr {
 
@@ -48,6 +49,7 @@
     , m_table()
     , m_refreshTime(0)
     , m_controller(face)
+    , m_faceController(face.getIoService(), m_controller)
     , m_faceMap()
     , m_adjacencyList(adjacencyList)
     , m_confParameter(conf)
@@ -186,6 +188,7 @@
   std::list<FibEntry> m_table;
   int32_t m_refreshTime;
   ndn::nfd::Controller m_controller;
+  util::FaceController m_faceController;
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   FaceMap m_faceMap;
diff --git a/src/utility/face-controller.cpp b/src/utility/face-controller.cpp
new file mode 100644
index 0000000..a0c615f
--- /dev/null
+++ b/src/utility/face-controller.cpp
@@ -0,0 +1,81 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014  University of Memphis,
+ *                     Regents of the University of California
+ *
+ * This file is part of NLSR (Named-data Link State Routing).
+ * See AUTHORS.md for complete list of NLSR authors and contributors.
+ *
+ * NLSR is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ **/
+
+#include "face-controller.hpp"
+#include "logger.hpp"
+
+namespace nlsr {
+namespace util {
+
+INIT_LOGGER("FaceController");
+
+using ndn::util::FaceUri;
+
+const ndn::time::seconds FaceController::TIME_ALLOWED_FOR_CANONIZATION = ndn::time::seconds(4);
+
+void
+FaceController::createFace(const std::string& request,
+                           const CommandSuccessCallback& onSuccess,
+                           const CommandFailureCallback& onFailure)
+{
+  FaceUri uri(request);
+
+  _LOG_TRACE("Converting " << uri << " to canonical form");
+  uri.canonize(bind(&FaceController::onCanonizeSuccess, this, _1, onSuccess, onFailure, uri),
+               bind(&FaceController::onCanonizeFailure, this, _1, onSuccess, onFailure, uri),
+               m_ioService, TIME_ALLOWED_FOR_CANONIZATION);
+}
+
+void
+FaceController::createFaceInNfd(const FaceUri& uri,
+                                const CommandSuccessCallback& onSuccess,
+                                const CommandFailureCallback& onFailure)
+{
+  ndn::nfd::ControlParameters faceParameters;
+  faceParameters.setUri(uri.toString());
+
+  _LOG_DEBUG("Creating Face in NFD with face-uri: " << uri);
+  m_controller.start<ndn::nfd::FaceCreateCommand>(faceParameters, onSuccess, onFailure);
+}
+
+void
+FaceController::onCanonizeSuccess(const FaceUri& uri,
+                                  const CommandSuccessCallback& onSuccess,
+                                  const CommandFailureCallback& onFailure,
+                                  const FaceUri& request)
+{
+  _LOG_DEBUG("Converted " << request << " to canonical form: " << uri);
+
+  createFaceInNfd(uri, onSuccess, onFailure);
+}
+
+void
+FaceController::onCanonizeFailure(const std::string& reason,
+                                  const CommandSuccessCallback& onSuccess,
+                                  const CommandFailureCallback& onFailure,
+                                  const FaceUri& request)
+{
+  _LOG_WARN("Could not convert " << request << " to canonical form: " << reason);
+  onFailure(CANONIZE_ERROR_CODE, "Could not canonize face-uri: " + request.toString());
+}
+
+} // namespace util
+} // namespace nlsr
diff --git a/src/utility/face-controller.hpp b/src/utility/face-controller.hpp
new file mode 100644
index 0000000..3c42afe
--- /dev/null
+++ b/src/utility/face-controller.hpp
@@ -0,0 +1,77 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014  University of Memphis,
+ *                     Regents of the University of California
+ *
+ * This file is part of NLSR (Named-data Link State Routing).
+ * See AUTHORS.md for complete list of NLSR authors and contributors.
+ *
+ * NLSR is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ **/
+
+#ifndef NLSR_UTIL_FACE_CONTROLLER_HPP
+#define NLSR_UTIL_FACE_CONTROLLER_HPP
+
+#include <ndn-cxx/util/face-uri.hpp>
+#include <ndn-cxx/management/nfd-controller.hpp>
+
+namespace nlsr {
+namespace util {
+
+class FaceController : boost::noncopyable
+{
+public:
+  typedef ndn::function<void(const ndn::nfd::ControlParameters&)> CommandSuccessCallback;
+  typedef ndn::function<void(uint32_t,const std::string&)> CommandFailureCallback;
+
+  FaceController(boost::asio::io_service& io, ndn::nfd::Controller& controller)
+    : m_ioService(io)
+    , m_controller(controller)
+  {
+  }
+
+  void
+  createFace(const std::string& request,
+             const CommandSuccessCallback& onSuccess,
+             const CommandFailureCallback& onFailure);
+
+private:
+  void
+  createFaceInNfd(const ndn::util::FaceUri& uri,
+                  const CommandSuccessCallback& onSuccess,
+                  const CommandFailureCallback& onFailure);
+
+  void
+  onCanonizeSuccess(const ndn::util::FaceUri& uri,
+                    const CommandSuccessCallback& onSuccess,
+                    const CommandFailureCallback& onFailure,
+                    const ndn::util::FaceUri& request);
+
+  void
+  onCanonizeFailure(const std::string& reason,
+                    const CommandSuccessCallback& onSuccess,
+                    const CommandFailureCallback& onFailure,
+                    const ndn::util::FaceUri& request);
+
+private:
+  boost::asio::io_service& m_ioService;
+  ndn::nfd::Controller& m_controller;
+
+  static const uint32_t CANONIZE_ERROR_CODE = 408;
+  static const ndn::time::seconds TIME_ALLOWED_FOR_CANONIZATION;
+};
+
+} // namespace util
+} // namespace nlsr
+
+#endif // NLSR_UTIL_FACE_CONTROLLER_HPP
