diff --git a/src/contact-manager.cpp b/src/contact-manager.cpp
index 13e4adb..2d722d7 100644
--- a/src/contact-manager.cpp
+++ b/src/contact-manager.cpp
@@ -629,6 +629,7 @@
 
   try{
     m_contactStorage->addContact(contactItem);
+    emit contactAdded(contactItem.getNameSpace());
   }catch(exception& e){
     emit warning(e.what());
     _LOG_ERROR("Exception: " << e.what());
@@ -636,6 +637,15 @@
   }
 }
 
+void
+ContactManager::removeContact(const ndn::Name& contactNameSpace)
+{
+  Ptr<ContactItem> contact = getContact(contactNameSpace);
+  if(contact == NULL)
+    return;
+  m_contactStorage->removeContact(contactNameSpace);
+  emit contactRemoved(contact->getPublicKeyName());
+}
 
 
 #if WAF
diff --git a/src/contact-manager.h b/src/contact-manager.h
index 6de23d4..a19135f 100644
--- a/src/contact-manager.h
+++ b/src/contact-manager.h
@@ -84,6 +84,10 @@
   void
   addContact(const ndn::security::IdentityCertificate& idCert, const Profile& profile);
 
+  void
+  removeContact(const ndn::Name& contactNameSpace);
+  
+
 private:
   void
   setKeychain();
@@ -168,6 +172,12 @@
   void
   warning(QString msg);
 
+  void
+  contactRemoved(const ndn::Name& identity);
+
+  void
+  contactAdded(const ndn::Name& identity);                                         
+
 private slots:
   
   
diff --git a/src/contactpanel.cpp b/src/contactpanel.cpp
index 4ee8d71..e9fafaa 100644
--- a/src/contactpanel.cpp
+++ b/src/contactpanel.cpp
@@ -148,6 +148,11 @@
           this, SLOT(acceptInvitation(const ChronosInvitation&, const ndn::security::IdentityCertificate&)));
   connect(m_invitationDialog, SIGNAL(invitationRejected(const ChronosInvitation&)),
           this, SLOT(rejectInvitation(const ChronosInvitation&)));
+  
+  connect(&*m_contactManager, SIGNAL(contactAdded(const ndn::Name&)),
+          this, SLOT(addContactIntoPanelPolicy(const ndn::Name&)));
+  connect(&*m_contactManager, SIGNAL(contactRemoved(const ndn::Name&)),
+          this, SLOT(removeContactFromPanelPolicy(const ndn::Name&)));
 
   connect(m_settingDialog, SIGNAL(identitySet(const QString&, const QString&)),
           this, SLOT(updateDefaultIdentity(const QString&, const QString&)));
@@ -644,6 +649,18 @@
 { m_invitationDialog->show(); }
 
 void
+ContactPanel::addContactIntoPanelPolicy(const Name& contactNameSpace)
+{
+  Ptr<ContactItem> contact = m_contactManager->getContact(contactNameSpace);
+  if(contact != NULL)
+    m_panelPolicyManager->addTrustAnchor(contact->getSelfEndorseCertificate());
+}
+
+void
+ContactPanel::removeContactFromPanelPolicy(const Name& keyName)
+{ m_panelPolicyManager->removeTrustAnchor(keyName); }
+
+void
 ContactPanel::refreshContactList()
 {
   m_contactList = m_contactManager->getContactItemList();
diff --git a/src/contactpanel.h b/src/contactpanel.h
index d36e547..b171e54 100644
--- a/src/contactpanel.h
+++ b/src/contactpanel.h
@@ -197,6 +197,11 @@
   void
   removeChatDialog(const ndn::Name& chatroomName);
 
+  void 
+  addContactIntoPanelPolicy(const ndn::Name& nameSpace);
+
+  void 
+  removeContactFromPanelPolicy(const ndn::Name& keyName);
   
 
 private:
diff --git a/src/panel-policy-manager.cpp b/src/panel-policy-manager.cpp
index ecb03b1..96900e7 100644
--- a/src/panel-policy-manager.cpp
+++ b/src/panel-policy-manager.cpp
@@ -180,6 +180,12 @@
   m_trustAnchors.insert(pair <Name, Publickey > (selfEndorseCertificate.getPublicKeyName(), selfEndorseCertificate.getPublicKeyInfo())); 
 }
 
+void
+PanelPolicyManager::removeTrustAnchor(const Name& keyName)
+{  
+  m_trustAnchors.erase(keyName); 
+}
+
 Ptr<Publickey>
 PanelPolicyManager::getTrustedKey(const ndn::Name& inviterCertName)
 {
diff --git a/src/panel-policy-manager.h b/src/panel-policy-manager.h
index b28c90a..f38e0e8 100644
--- a/src/panel-policy-manager.h
+++ b/src/panel-policy-manager.h
@@ -79,6 +79,9 @@
   void
   addTrustAnchor(const EndorseCertificate& selfEndorseCertificate);
 
+  void
+  removeTrustAnchor(const ndn::Name& keyName);
+
 // private:
 //   void 
 //   onCertificateVerified(ndn::Ptr<ndn::Data> certData, 
