diff --git a/src/socket.cpp b/src/socket.cpp
index 7356f73..95a9045 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -53,6 +53,15 @@
                                [] (const Name& prefix, const std::string& msg) {});
 }
 
+Socket::~Socket()
+{
+  for(const auto& itr : m_registeredPrefixList) {
+    if (static_cast<bool>(itr.second))
+      m_face.unsetInterestFilter(itr.second);
+  }
+  m_ims.erase("/");
+}
+
 void
 Socket::addSyncNode(const Name& prefix, const Name& signingId)
 {
@@ -73,6 +82,24 @@
 }
 
 void
+Socket::removeSyncNode(const Name& prefix)
+{
+  if (prefix == DEFAULT_NAME)
+    return;
+
+  auto itr = m_registeredPrefixList.find(prefix);
+  if (itr != m_registeredPrefixList.end()) {
+    if (static_cast<bool>(itr->second))
+      m_face.unsetInterestFilter(itr->second);
+    m_registeredPrefixList.erase(itr);
+  }
+
+  m_ims.erase(prefix);
+  m_logic.removeUserNode(prefix);
+
+}
+
+void
 Socket::publishData(const uint8_t* buf, size_t len, const ndn::time::milliseconds& freshness,
                     const Name& prefix)
 {
diff --git a/src/socket.hpp b/src/socket.hpp
index 6987003..450dfeb 100644
--- a/src/socket.hpp
+++ b/src/socket.hpp
@@ -66,10 +66,34 @@
          const Name& signingId = DEFAULT_NAME,
          ndn::shared_ptr<ndn::Validator> validator = DEFAULT_VALIDATOR);
 
+  ~Socket();
+
+  /**
+   * @brief Add a sync node under same logic
+   *
+   * This method will add a new sync node in logic and then register this prefix.
+   * If pass an empty prefix, it will return directly without doing anything
+   * If the prefix is already registered, return directly
+   *
+   * @param prefix Prefix of the new node
+   * @param signingId Signing ID for the packet sent out by the new node
+   */
   void
   addSyncNode(const Name& prefix, const Name& signingId = DEFAULT_NAME);
 
   /**
+   * @brief Remove a sync node under same logic
+   *
+   * This method will remove a sync node in logic, unregister this prefix
+   * and then clear the in memory storage about this prefix.
+   * logic will be reset after removal of this node
+   *
+   * @param prefix Prefix of the node to remove
+   */
+  void
+  removeSyncNode(const Name& prefix);
+
+  /**
    * @brief Publish a data packet in the session and trigger synchronization updates
    *
    * This method will create a data packet with the supplied content.
