diff --git a/tests/tools/nfdc/command-definition.t.cpp b/tests/tools/nfdc/command-definition.t.cpp
index bbefe81..3eab402 100644
--- a/tests/tools/nfdc/command-definition.t.cpp
+++ b/tests/tools/nfdc/command-definition.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,9 +24,6 @@
  */
 
 #include "nfdc/command-definition.hpp"
-#include "nfdc/status-report.hpp"
-#include <ndn-cxx/encoding/nfd-constants.hpp>
-#include <ndn-cxx/util/face-uri.hpp>
 
 #include "tests/test-common.hpp"
 
@@ -37,9 +34,6 @@
 
 using namespace nfd::tests;
 
-using ndn::util::FaceUri;
-using ndn::nfd::FacePersistency;
-
 BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestCommandDefinition, BaseFixture)
 
diff --git a/tools/nfdc/command-arguments.hpp b/tools/nfdc/command-arguments.hpp
index 5bf9414..b3175d5 100644
--- a/tools/nfdc/command-arguments.hpp
+++ b/tools/nfdc/command-arguments.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,12 +27,18 @@
 #define NFD_TOOLS_NFDC_COMMAND_ARGUMENTS_HPP
 
 #include "core/common.hpp"
+#include "status-report.hpp"
+#include <ndn-cxx/encoding/nfd-constants.hpp>
+#include <ndn-cxx/util/face-uri.hpp>
 #include <boost/any.hpp>
 
 namespace nfd {
 namespace tools {
 namespace nfdc {
 
+using ndn::nfd::FacePersistency;
+using ndn::util::FaceUri;
+
 /** \brief contains named command arguments
  */
 class CommandArguments : public std::map<std::string, boost::any>
diff --git a/tools/nfdc/command-definition.cpp b/tools/nfdc/command-definition.cpp
index 67ca456..18eee1e 100644
--- a/tools/nfdc/command-definition.cpp
+++ b/tools/nfdc/command-definition.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,9 +24,6 @@
  */
 
 #include "command-definition.hpp"
-#include "status-report.hpp"
-#include <ndn-cxx/encoding/nfd-constants.hpp>
-#include <ndn-cxx/util/face-uri.hpp>
 #include <ndn-cxx/util/logger.hpp>
 
 namespace nfd {
@@ -211,14 +208,14 @@
   return ca;
 }
 
-static ndn::nfd::FacePersistency
+static FacePersistency
 parseFacePersistency(const std::string& s)
 {
   if (s == "persistent") {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
+    return FacePersistency::FACE_PERSISTENCY_PERSISTENT;
   }
   if (s == "permanent") {
-    return ndn::nfd::FACE_PERSISTENCY_PERMANENT;
+    return FacePersistency::FACE_PERSISTENCY_PERMANENT;
   }
   BOOST_THROW_EXCEPTION(std::invalid_argument("unrecognized FacePersistency"));
 }
@@ -251,14 +248,14 @@
       return Name(token);
 
     case ArgValueType::FACE_URI:
-      return ndn::util::FaceUri(token);
+      return FaceUri(token);
 
     case ArgValueType::FACE_ID_OR_URI:
       try {
         return boost::lexical_cast<uint64_t>(token);
       }
       catch (const boost::bad_lexical_cast&) {
-        return ndn::util::FaceUri(token);
+        return FaceUri(token);
       }
 
     case ArgValueType::FACE_PERSISTENCY:
