diff --git a/tests/tools/nfd-status/channel-module.t.cpp b/tests/tools/nfdc/channel-module.t.cpp
similarity index 93%
rename from tests/tools/nfd-status/channel-module.t.cpp
rename to tests/tools/nfdc/channel-module.t.cpp
index f524907..8624cd3 100644
--- a/tests/tools/nfd-status/channel-module.t.cpp
+++ b/tests/tools/nfdc/channel-module.t.cpp
@@ -23,16 +23,16 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/channel-module.hpp"
+#include "nfdc/channel-module.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestChannelModule, ModuleFixture<ChannelModule>)
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -67,9 +67,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestChannelModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/face-module.t.cpp b/tests/tools/nfdc/face-module.t.cpp
similarity index 96%
rename from tests/tools/nfd-status/face-module.t.cpp
rename to tests/tools/nfdc/face-module.t.cpp
index 292ccd8..6d316e6 100644
--- a/tests/tools/nfd-status/face-module.t.cpp
+++ b/tests/tools/nfdc/face-module.t.cpp
@@ -23,16 +23,16 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/face-module.hpp"
+#include "nfdc/face-module.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestFaceModule, ModuleFixture<FaceModule>)
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -138,9 +138,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestFaceModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/fib-module.t.cpp b/tests/tools/nfdc/fib-module.t.cpp
similarity index 95%
rename from tests/tools/nfd-status/fib-module.t.cpp
rename to tests/tools/nfdc/fib-module.t.cpp
index f509461..3ec3775 100644
--- a/tests/tools/nfd-status/fib-module.t.cpp
+++ b/tests/tools/nfdc/fib-module.t.cpp
@@ -23,16 +23,16 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/fib-module.hpp"
+#include "nfdc/fib-module.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestFibModule, ModuleFixture<FibModule>)
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -96,9 +96,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestFibModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/format-helpers.t.cpp b/tests/tools/nfdc/format-helpers.t.cpp
similarity index 92%
rename from tests/tools/nfd-status/format-helpers.t.cpp
rename to tests/tools/nfdc/format-helpers.t.cpp
index 01d7f47..f380544 100644
--- a/tests/tools/nfd-status/format-helpers.t.cpp
+++ b/tests/tools/nfdc/format-helpers.t.cpp
@@ -23,18 +23,18 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/format-helpers.hpp"
+#include "nfdc/format-helpers.hpp"
 
 #include "tests/test-common.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
 using boost::test_tools::output_test_stream;
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_AUTO_TEST_SUITE(TestFormatHelpers)
 
 BOOST_AUTO_TEST_SUITE(Xml)
@@ -66,9 +66,9 @@
 BOOST_AUTO_TEST_SUITE_END() // Text
 
 BOOST_AUTO_TEST_SUITE_END() // TestFormatHelpers
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/forwarder-general-module.t.cpp b/tests/tools/nfdc/forwarder-general-module.t.cpp
similarity index 96%
rename from tests/tools/nfd-status/forwarder-general-module.t.cpp
rename to tests/tools/nfdc/forwarder-general-module.t.cpp
index e9c881b..d210dc7 100644
--- a/tests/tools/nfd-status/forwarder-general-module.t.cpp
+++ b/tests/tools/nfdc/forwarder-general-module.t.cpp
@@ -23,17 +23,17 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/forwarder-general-module.hpp"
+#include "nfdc/forwarder-general-module.hpp"
 #include <ndn-cxx/security/signing-helpers.hpp>
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestForwarderGeneralModule, ModuleFixture<ForwarderGeneralModule>)
 
 class MakeNfdIdCollector
@@ -148,9 +148,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestForwarderGeneralModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/module-fixture.hpp b/tests/tools/nfdc/module-fixture.hpp
similarity index 98%
rename from tests/tools/nfd-status/module-fixture.hpp
rename to tests/tools/nfdc/module-fixture.hpp
index 38d0d64..61f2295 100644
--- a/tests/tools/nfd-status/module-fixture.hpp
+++ b/tests/tools/nfdc/module-fixture.hpp
@@ -26,7 +26,7 @@
 #ifndef NFD_TESTS_TOOLS_NFD_STATUS_MODULE_FIXTURE_HPP
 #define NFD_TESTS_TOOLS_NFD_STATUS_MODULE_FIXTURE_HPP
 
-#include "nfd-status/module.hpp"
+#include "nfdc/module.hpp"
 #include <ndn-cxx/security/validator-null.hpp>
 #include <ndn-cxx/util/dummy-client-face.hpp>
 
@@ -35,7 +35,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
 using namespace nfd::tests;
@@ -229,7 +229,7 @@
 }
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
diff --git a/tests/tools/nfd-status/rib-module.t.cpp b/tests/tools/nfdc/rib-module.t.cpp
similarity index 96%
rename from tests/tools/nfd-status/rib-module.t.cpp
rename to tests/tools/nfdc/rib-module.t.cpp
index bfd663c..6088382 100644
--- a/tests/tools/nfd-status/rib-module.t.cpp
+++ b/tests/tools/nfdc/rib-module.t.cpp
@@ -23,16 +23,16 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/rib-module.hpp"
+#include "nfdc/rib-module.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestRibModule, ModuleFixture<RibModule>)
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -133,9 +133,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestRibModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/status-report.t.cpp b/tests/tools/nfdc/status-report.t.cpp
similarity index 96%
rename from tests/tools/nfd-status/status-report.t.cpp
rename to tests/tools/nfdc/status-report.t.cpp
index 309c83a..2d89868 100644
--- a/tests/tools/nfd-status/status-report.t.cpp
+++ b/tests/tools/nfdc/status-report.t.cpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/status-report.hpp"
+#include "nfdc/status-report.hpp"
 #include "core/scheduler.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -165,7 +165,7 @@
 };
 
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestStatusReport, StatusReportModulesFixture)
 
 BOOST_AUTO_TEST_CASE(Normal)
@@ -212,9 +212,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestRibModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tests/tools/nfd-status/strategy-choice-module.t.cpp b/tests/tools/nfdc/strategy-choice-module.t.cpp
similarity index 93%
rename from tests/tools/nfd-status/strategy-choice-module.t.cpp
rename to tests/tools/nfdc/strategy-choice-module.t.cpp
index a41ba1f..68dee9f 100644
--- a/tests/tools/nfd-status/strategy-choice-module.t.cpp
+++ b/tests/tools/nfdc/strategy-choice-module.t.cpp
@@ -23,16 +23,16 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "nfd-status/strategy-choice-module.hpp"
+#include "nfdc/strategy-choice-module.hpp"
 
 #include "module-fixture.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(NfdStatus)
+BOOST_AUTO_TEST_SUITE(Nfdc)
 BOOST_FIXTURE_TEST_SUITE(TestStrategyChoiceModule, ModuleFixture<StrategyChoiceModule>)
 
 const std::string STATUS_XML = stripXmlSpaces(R"XML(
@@ -75,9 +75,9 @@
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestStrategyChoiceModule
-BOOST_AUTO_TEST_SUITE_END() // NfdStatus
+BOOST_AUTO_TEST_SUITE_END() // Nfdc
 
 } // namespace tests
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status.sh b/tools/nfd-status.sh
new file mode 100755
index 0000000..a63f5ca
--- /dev/null
+++ b/tools/nfd-status.sh
@@ -0,0 +1,2 @@
+#!@BASH@
+$(dirname "$0")/nfdc legacy-nfd-status "$@"
diff --git a/tools/nfd-status/channel-module.cpp b/tools/nfdc/channel-module.cpp
similarity index 97%
rename from tools/nfd-status/channel-module.cpp
rename to tools/nfdc/channel-module.cpp
index 4cd5484..af55d7b 100644
--- a/tools/nfd-status/channel-module.cpp
+++ b/tools/nfdc/channel-module.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 void
 ChannelModule::fetchStatus(Controller& controller,
@@ -78,6 +78,6 @@
   os << "\n";
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/channel-module.hpp b/tools/nfdc/channel-module.hpp
similarity index 92%
rename from tools/nfd-status/channel-module.hpp
rename to tools/nfdc/channel-module.hpp
index 1230554..e3486a1 100644
--- a/tools/nfd-status/channel-module.hpp
+++ b/tools/nfdc/channel-module.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_CHANNEL_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_CHANNEL_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_CHANNEL_MODULE_HPP
+#define NFD_TOOLS_NFDC_CHANNEL_MODULE_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::ChannelStatus;
 
@@ -70,8 +70,8 @@
   std::vector<ChannelStatus> m_status;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_CHANNEL_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_CHANNEL_MODULE_HPP
diff --git a/tools/nfd-status/face-module.cpp b/tools/nfdc/face-module.cpp
similarity index 98%
rename from tools/nfd-status/face-module.cpp
rename to tools/nfdc/face-module.cpp
index 3ec0467..9c5e74c 100644
--- a/tools/nfd-status/face-module.cpp
+++ b/tools/nfdc/face-module.cpp
@@ -48,7 +48,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 void
 FaceModule::fetchStatus(Controller& controller,
@@ -149,6 +149,6 @@
   os << "\n";
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/face-module.hpp b/tools/nfdc/face-module.hpp
similarity index 92%
rename from tools/nfd-status/face-module.hpp
rename to tools/nfdc/face-module.hpp
index 58bb5ee..3f8020f 100644
--- a/tools/nfd-status/face-module.hpp
+++ b/tools/nfdc/face-module.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_FACE_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_FACE_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_FACE_MODULE_HPP
+#define NFD_TOOLS_NFDC_FACE_MODULE_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::FaceStatus;
 
@@ -70,8 +70,8 @@
   std::vector<FaceStatus> m_status;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_FACE_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_FACE_MODULE_HPP
diff --git a/tools/nfd-status/fib-module.cpp b/tools/nfdc/fib-module.cpp
similarity index 98%
rename from tools/nfd-status/fib-module.cpp
rename to tools/nfdc/fib-module.cpp
index a1c7f94..27d3922 100644
--- a/tools/nfd-status/fib-module.cpp
+++ b/tools/nfdc/fib-module.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 void
 FibModule::fetchStatus(Controller& controller,
@@ -98,6 +98,6 @@
   os << "\n";
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/fib-module.hpp b/tools/nfdc/fib-module.hpp
similarity index 92%
rename from tools/nfd-status/fib-module.hpp
rename to tools/nfdc/fib-module.hpp
index 353e594..2472bd5 100644
--- a/tools/nfd-status/fib-module.hpp
+++ b/tools/nfdc/fib-module.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_FIB_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_FIB_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_FIB_MODULE_HPP
+#define NFD_TOOLS_NFDC_FIB_MODULE_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::FibEntry;
 using ndn::nfd::NextHopRecord;
@@ -71,8 +71,8 @@
   std::vector<FibEntry> m_status;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_FIB_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_FIB_MODULE_HPP
diff --git a/tools/nfd-status/format-helpers.cpp b/tools/nfdc/format-helpers.cpp
similarity index 98%
rename from tools/nfd-status/format-helpers.cpp
rename to tools/nfdc/format-helpers.cpp
index c7e595b..3496104 100644
--- a/tools/nfd-status/format-helpers.cpp
+++ b/tools/nfdc/format-helpers.cpp
@@ -27,7 +27,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 namespace xml {
 
@@ -123,6 +123,6 @@
 
 } // namespace text
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/format-helpers.hpp b/tools/nfdc/format-helpers.hpp
similarity index 93%
rename from tools/nfd-status/format-helpers.hpp
rename to tools/nfdc/format-helpers.hpp
index f98d8f1..84efe7b 100644
--- a/tools/nfd-status/format-helpers.hpp
+++ b/tools/nfdc/format-helpers.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_FORMAT_HELPERS_HPP
-#define NFD_TOOLS_NFD_STATUS_FORMAT_HELPERS_HPP
+#ifndef NFD_TOOLS_NFDC_FORMAT_HELPERS_HPP
+#define NFD_TOOLS_NFDC_FORMAT_HELPERS_HPP
 
 #include "core/common.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 namespace xml {
 
@@ -111,8 +111,8 @@
 
 } // namespace text
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_FORMAT_HELPERS_HPP
+#endif // NFD_TOOLS_NFDC_FORMAT_HELPERS_HPP
diff --git a/tools/nfd-status/forwarder-general-module.cpp b/tools/nfdc/forwarder-general-module.cpp
similarity index 98%
rename from tools/nfd-status/forwarder-general-module.cpp
rename to tools/nfdc/forwarder-general-module.cpp
index 41b715a..481fd40 100644
--- a/tools/nfd-status/forwarder-general-module.cpp
+++ b/tools/nfdc/forwarder-general-module.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 ForwarderGeneralModule::ForwarderGeneralModule()
   : m_nfdIdCollector(nullptr)
@@ -185,6 +185,6 @@
   m_inner->validate(data, accepted, reject);
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/forwarder-general-module.hpp b/tools/nfdc/forwarder-general-module.hpp
similarity index 94%
rename from tools/nfd-status/forwarder-general-module.hpp
rename to tools/nfdc/forwarder-general-module.hpp
index a55bc21..9bcf929 100644
--- a/tools/nfd-status/forwarder-general-module.hpp
+++ b/tools/nfdc/forwarder-general-module.hpp
@@ -23,15 +23,15 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_FORWARDER_GENERAL_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_FORWARDER_GENERAL_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_FORWARDER_GENERAL_MODULE_HPP
+#define NFD_TOOLS_NFDC_FORWARDER_GENERAL_MODULE_HPP
 
 #include "module.hpp"
 #include <ndn-cxx/security/validator.hpp>
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::ForwarderStatus;
 
@@ -133,8 +133,8 @@
   Name m_nfdId;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_FORWARDER_GENERAL_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_FORWARDER_GENERAL_MODULE_HPP
diff --git a/tools/nfdc/main.cpp b/tools/nfdc/main.cpp
index 7d9f763..aa5d7db 100644
--- a/tools/nfdc/main.cpp
+++ b/tools/nfdc/main.cpp
@@ -24,6 +24,7 @@
  */
 
 #include "legacy-nfdc.hpp"
+#include "status-main.hpp"
 #include "core/version.hpp"
 
 #include <boost/lexical_cast.hpp>
@@ -83,16 +84,20 @@
     return 0;
   }
 
-  if (!strcmp(argv[1], "-h")) {
+  if (strcmp(argv[1], "-h") == 0) {
     usage(p.m_programName);
     return 0;
   }
 
-  if (!strcmp(argv[1], "-V")) {
+  if (strcmp(argv[1], "-V") == 0) {
     std::cout << NFD_VERSION_BUILD_STRING << std::endl;
     return 0;
   }
 
+  if (strcmp(argv[1], "legacy-nfd-status") == 0) {
+    return status_main(argc - 1, argv + 1);
+  }
+
   ::optind = 2; //start reading options from 2nd argument i.e. Command
   int opt;
   while ((opt = ::getopt(argc, argv, "ICc:e:o:P")) != -1) {
diff --git a/tools/nfd-status/module.hpp b/tools/nfdc/module.hpp
similarity index 93%
rename from tools/nfd-status/module.hpp
rename to tools/nfdc/module.hpp
index bf1b90c..f33afac 100644
--- a/tools/nfd-status/module.hpp
+++ b/tools/nfdc/module.hpp
@@ -23,15 +23,15 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_MODULE_HPP
+#define NFD_TOOLS_NFDC_MODULE_HPP
 
 #include "core/common.hpp"
 #include <ndn-cxx/management/nfd-controller.hpp>
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::Controller;
 using ndn::nfd::CommandOptions;
@@ -73,8 +73,8 @@
   formatStatusText(std::ostream& os) const = 0;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_MODULE_HPP
diff --git a/tools/nfd-status/rib-module.cpp b/tools/nfdc/rib-module.cpp
similarity index 98%
rename from tools/nfd-status/rib-module.cpp
rename to tools/nfdc/rib-module.cpp
index fe254cc..bf2da3d 100644
--- a/tools/nfd-status/rib-module.cpp
+++ b/tools/nfdc/rib-module.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 void
 RibModule::fetchStatus(Controller& controller,
@@ -128,6 +128,6 @@
   os << "\n";
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/rib-module.hpp b/tools/nfdc/rib-module.hpp
similarity index 92%
rename from tools/nfd-status/rib-module.hpp
rename to tools/nfdc/rib-module.hpp
index 6a4ddd1..20e2144 100644
--- a/tools/nfd-status/rib-module.hpp
+++ b/tools/nfdc/rib-module.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_RIB_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_RIB_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_RIB_MODULE_HPP
+#define NFD_TOOLS_NFDC_RIB_MODULE_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::RibEntry;
 using ndn::nfd::Route;
@@ -71,8 +71,8 @@
   std::vector<RibEntry> m_status;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_RIB_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_RIB_MODULE_HPP
diff --git a/tools/nfd-status/main.cpp b/tools/nfdc/status-main.cpp
similarity index 96%
rename from tools/nfd-status/main.cpp
rename to tools/nfdc/status-main.cpp
index b43e4cc..c0d41b0 100644
--- a/tools/nfd-status/main.cpp
+++ b/tools/nfdc/status-main.cpp
@@ -40,7 +40,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 enum class OutputFormat
 {
@@ -121,8 +121,8 @@
   return std::make_tuple(-1, options);
 }
 
-static int
-main(int argc, char** argv)
+int
+status_main(int argc, char** argv)
 {
   int exitCode = -1;
   Options options;
@@ -188,12 +188,6 @@
   return 0;
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
-
-int
-main(int argc, char** argv)
-{
-  return nfd::tools::nfd_status::main(argc, argv);
-}
diff --git a/tools/nfdc/status-main.hpp b/tools/nfdc/status-main.hpp
new file mode 100644
index 0000000..79ccece
--- /dev/null
+++ b/tools/nfdc/status-main.hpp
@@ -0,0 +1,42 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014-2016,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD 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.
+ *
+ * NFD 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
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NFD_TOOLS_NFDC_STATUS_MAIN_HPP
+#define NFD_TOOLS_NFDC_STATUS_MAIN_HPP
+
+#include "module.hpp"
+
+namespace nfd {
+namespace tools {
+namespace nfdc {
+
+int
+status_main(int argc, char** argv);
+
+} // namespace nfdc
+} // namespace tools
+} // namespace nfd
+
+#endif // NFD_TOOLS_NFDC_STATUS_MAIN_HPP
diff --git a/tools/nfd-status/status-report.cpp b/tools/nfdc/status-report.cpp
similarity index 97%
rename from tools/nfd-status/status-report.cpp
rename to tools/nfdc/status-report.cpp
index ff04e1f..c687147 100644
--- a/tools/nfd-status/status-report.cpp
+++ b/tools/nfdc/status-report.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 uint32_t
 StatusReport::collect(Face& face, KeyChain& keyChain, Validator& validator, const CommandOptions& options)
@@ -75,6 +75,6 @@
   }
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/status-report.hpp b/tools/nfdc/status-report.hpp
similarity index 92%
rename from tools/nfd-status/status-report.hpp
rename to tools/nfdc/status-report.hpp
index 80aaee7..dea9b9f 100644
--- a/tools/nfd-status/status-report.hpp
+++ b/tools/nfdc/status-report.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_STATUS_REPORT_HPP
-#define NFD_TOOLS_NFD_STATUS_STATUS_REPORT_HPP
+#ifndef NFD_TOOLS_NFDC_STATUS_REPORT_HPP
+#define NFD_TOOLS_NFDC_STATUS_REPORT_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::Face;
 using ndn::security::KeyChain;
@@ -78,8 +78,8 @@
   std::vector<unique_ptr<Module>> sections;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_STATUS_REPORT_HPP
+#endif // NFD_TOOLS_NFDC_STATUS_REPORT_HPP
diff --git a/tools/nfd-status/strategy-choice-module.cpp b/tools/nfdc/strategy-choice-module.cpp
similarity index 97%
rename from tools/nfd-status/strategy-choice-module.cpp
rename to tools/nfdc/strategy-choice-module.cpp
index efdff50..c32b5aa 100644
--- a/tools/nfd-status/strategy-choice-module.cpp
+++ b/tools/nfdc/strategy-choice-module.cpp
@@ -28,7 +28,7 @@
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 void
 StrategyChoiceModule::fetchStatus(Controller& controller,
@@ -80,6 +80,6 @@
      << "\n";
 }
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
diff --git a/tools/nfd-status/strategy-choice-module.hpp b/tools/nfdc/strategy-choice-module.hpp
similarity index 91%
rename from tools/nfd-status/strategy-choice-module.hpp
rename to tools/nfdc/strategy-choice-module.hpp
index be84374..9c78eb7 100644
--- a/tools/nfd-status/strategy-choice-module.hpp
+++ b/tools/nfdc/strategy-choice-module.hpp
@@ -23,14 +23,14 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef NFD_TOOLS_NFD_STATUS_STARTEGY_CHOICE_MODULE_HPP
-#define NFD_TOOLS_NFD_STATUS_STARTEGY_CHOICE_MODULE_HPP
+#ifndef NFD_TOOLS_NFDC_STARTEGY_CHOICE_MODULE_HPP
+#define NFD_TOOLS_NFDC_STARTEGY_CHOICE_MODULE_HPP
 
 #include "module.hpp"
 
 namespace nfd {
 namespace tools {
-namespace nfd_status {
+namespace nfdc {
 
 using ndn::nfd::StrategyChoice;
 
@@ -70,8 +70,8 @@
   std::vector<StrategyChoice> m_status;
 };
 
-} // namespace nfd_status
+} // namespace nfdc
 } // namespace tools
 } // namespace nfd
 
-#endif // NFD_TOOLS_NFD_STATUS_STARTEGY_CHOICE_MODULE_HPP
+#endif // NFD_TOOLS_NFDC_STARTEGY_CHOICE_MODULE_HPP
