diff --git a/daemon/mgmt/channel-status-publisher.cpp b/daemon/mgmt/channel-status-publisher.cpp
index 42e4f3a..c212f72 100644
--- a/daemon/mgmt/channel-status-publisher.cpp
+++ b/daemon/mgmt/channel-status-publisher.cpp
@@ -25,7 +25,6 @@
 
 #include "channel-status-publisher.hpp"
 
-#include "face-flags.hpp"
 #include "core/logger.hpp"
 #include "face/protocol-factory.hpp"
 #include "face/channel.hpp"
diff --git a/daemon/mgmt/face-flags.hpp b/daemon/mgmt/face-flags.hpp
deleted file mode 100644
index 1451a27..0000000
--- a/daemon/mgmt/face-flags.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014  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
- *
- * 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_DAEMON_MGMT_FACE_FLAGS_HPP
-#define NFD_DAEMON_MGMT_FACE_FLAGS_HPP
-
-#include "face/face.hpp"
-#include <ndn-cxx/management/nfd-face-flags.hpp>
-
-namespace nfd {
-
-inline uint64_t
-getFaceFlags(const Face& face)
-{
-  uint64_t flags = 0;
-  if (face.isLocal()) {
-    flags |= ndn::nfd::FACE_IS_LOCAL;
-  }
-  if (face.isOnDemand()) {
-    flags |= ndn::nfd::FACE_IS_ON_DEMAND;
-  }
-  return flags;
-}
-
-} // namespace nfd
-
-#endif // NFD_DAEMON_MGMT_FACE_FLAGS_HPP
diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index 0c299f2..b6cca36 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -25,11 +25,11 @@
 
 #include "face-manager.hpp"
 
-#include "face-flags.hpp"
 #include "core/logger.hpp"
 #include "core/face-uri.hpp"
 #include "core/network-interface.hpp"
 #include "fw/face-table.hpp"
+#include "face/face-flags.hpp"
 #include "face/tcp-factory.hpp"
 #include "face/udp-factory.hpp"
 #include "core/config-file.hpp"
diff --git a/daemon/mgmt/face-status-publisher.cpp b/daemon/mgmt/face-status-publisher.cpp
index 28e7155..62531d2 100644
--- a/daemon/mgmt/face-status-publisher.cpp
+++ b/daemon/mgmt/face-status-publisher.cpp
@@ -23,7 +23,6 @@
  **/
 
 #include "face-status-publisher.hpp"
-#include "face-flags.hpp"
 #include "core/logger.hpp"
 #include "fw/face-table.hpp"
 
@@ -57,18 +56,7 @@
   for (FaceTable::const_reverse_iterator i = m_faceTable.rbegin();
        i != m_faceTable.rend(); ++i) {
     const shared_ptr<Face>& face = *i;
-    const FaceCounters& counters = face->getCounters();
-
-    ndn::nfd::FaceStatus status;
-    status.setFaceId(face->getId())
-          .setRemoteUri(face->getRemoteUri().toString())
-          .setLocalUri(face->getLocalUri().toString())
-          .setFlags(getFaceFlags(*face))
-          .setNInInterests(counters.getNInInterests())
-          .setNInDatas(counters.getNInDatas())
-          .setNOutInterests(counters.getNOutInterests())
-          .setNOutDatas(counters.getNOutDatas());
-
+    ndn::nfd::FaceStatus status = face->getFaceStatus();
     totalLength += status.wireEncode(outBuffer);
   }
   return totalLength;
diff --git a/daemon/mgmt/strategy-choice-publisher.cpp b/daemon/mgmt/strategy-choice-publisher.cpp
index 933cc29..add1b73 100644
--- a/daemon/mgmt/strategy-choice-publisher.cpp
+++ b/daemon/mgmt/strategy-choice-publisher.cpp
@@ -24,7 +24,6 @@
  **/
 
 #include "strategy-choice-publisher.hpp"
-#include "face-flags.hpp"
 #include "core/logger.hpp"
 #include "table/strategy-choice.hpp"
 
