diff --git a/src/management/nfd-face-event-notification.hpp b/src/management/nfd-face-event-notification.hpp
index 53640c8..3d06ea7 100644
--- a/src/management/nfd-face-event-notification.hpp
+++ b/src/management/nfd-face-event-notification.hpp
@@ -132,30 +132,6 @@
     return *this;
   }
 
-public: // deprecated
-  /** \deprecated use default constructor and setters
-   */
-  FaceEventNotification(FaceEventKind kind,
-                        uint64_t faceId,
-                        const std::string& uri,
-                        uint64_t flags);
-
-  /** \deprecated
-   */
-  FaceEventKind
-  getEventKind() const
-  {
-    return this->getKind();
-  }
-
-  /** \deprecated
-   */
-  const std::string&
-  getUri() const
-  {
-    return this->getRemoteUri();
-  }
-
 private:
   FaceEventKind m_kind;
   uint64_t m_faceId;
@@ -174,18 +150,6 @@
 {
 }
 
-inline
-FaceEventNotification::FaceEventNotification(FaceEventKind kind,
-                                             uint64_t faceId,
-                                             const std::string& uri,
-                                             uint64_t flags)
-{
-  (*this).setKind(kind)
-         .setFaceId(faceId)
-         .setRemoteUri(uri)
-         .setFlags(flags);
-}
-
 template<bool T>
 inline size_t
 FaceEventNotification::wireEncode(EncodingImpl<T>& encoder) const
diff --git a/src/management/nfd-face-status.hpp b/src/management/nfd-face-status.hpp
index 1c2e636..86b845c 100644
--- a/src/management/nfd-face-status.hpp
+++ b/src/management/nfd-face-status.hpp
@@ -169,53 +169,6 @@
     return *this;
   }
 
-public: // deprecated
-  /** \deprecated
-   */
-  FaceStatus(const uint64_t faceId,
-             const std::string& uri,
-             uint64_t inInterest, uint64_t inData, uint64_t outInterest, uint64_t outData);
-
-  /** \deprecated
-   */
-  const std::string&
-  getUri() const
-  {
-    return this->getRemoteUri();
-  }
-
-  /** \deprecated
-   */
-  const uint64_t
-  getInInterest() const
-  {
-    return this->getNInInterests();
-  }
-
-  /** \deprecated
-   */
-  const uint64_t
-  getInData() const
-  {
-    return this->getNInDatas();
-  }
-
-  /** \deprecated
-   */
-  const uint64_t
-  getOutInterest() const
-  {
-    return this->getNOutInterests();
-  }
-
-  /** \deprecated
-   */
-  const uint64_t
-  getOutData() const
-  {
-    return this->getNOutDatas();
-  }
-
 private:
   uint64_t m_faceId;
   std::string m_remoteUri;
@@ -240,19 +193,6 @@
 {
 }
 
-inline
-FaceStatus::FaceStatus(const uint64_t faceId,
-             const std::string& uri,
-             uint64_t inInterest, uint64_t inData, uint64_t outInterest, uint64_t outData)
-{
-  (*this).setFaceId(faceId)
-         .setRemoteUri(uri)
-         .setNInInterests(inInterest)
-         .setNInDatas(inData)
-         .setNOutInterests(outInterest)
-         .setNOutDatas(outData);
-}
-
 template<bool T>
 inline size_t
 FaceStatus::wireEncode(EncodingImpl<T>& encoder) const
