diff --git a/src/addcontactpanel.cpp b/src/addcontactpanel.cpp
index a3dabf7..9d332a7 100644
--- a/src/addcontactpanel.cpp
+++ b/src/addcontactpanel.cpp
@@ -11,28 +11,41 @@
 #include "addcontactpanel.h"
 #include "ui_addcontactpanel.h"
 
+#ifndef Q_MOC_RUN
+#include "logging.h"
+#endif
+
 using namespace ndn;
 using namespace std;
 
+INIT_LOGGER("AddContactPanel");
+
 AddContactPanel::AddContactPanel(Ptr<ContactManager> contactManager,
                                  QWidget *parent) 
   : QDialog(parent)
   , ui(new Ui::AddContactPanel)
   , m_contactManager(contactManager)
+  , m_warningDialog(new WarningDialog())
 {
   ui->setupUi(this);
+  
+  qRegisterMetaType<ndn::Name>("NdnName");
+  qRegisterMetaType<EndorseCertificate>("EndorseCertificate");
 
   connect(ui->cancelButton, SIGNAL(clicked()),
           this, SLOT(onCancelClicked()));
   connect(ui->searchButton, SIGNAL(clicked()),
           this, SLOT(onSearchClicked()));
-  connect(&*m_contactManager, SIGNAL(contactFetched(ndn::Ptr<EndorseCertificate>)),
-          this, SLOT(selfEndorseCertificateFetched(ndn::Ptr<EndorseCertificate>)));
+  connect(&*m_contactManager, SIGNAL(contactFetched(const EndorseCertificate&>)),
+          this, SLOT(selfEndorseCertificateFetched(const EndorseCertificate&>)));
+  connect(&*m_contactManager, SIGNAL(contactFetchFailed(const ndn::Name&)),
+          this, SLOT(selfEndorseCertificateFetchFailed(const ndn::Name&)));
 }
 
 AddContactPanel::~AddContactPanel()
 {
     delete ui;
+    delete m_warningDialog;
 }
 
 void
@@ -44,6 +57,8 @@
 {
   QString inputIdentity = ui->contactInput->text();
   m_searchIdentity = Name(inputIdentity.toUtf8().constData());
+
+  m_contactManager->fetchSelfEndorseCertificate(m_searchIdentity);
 }
 
 void
@@ -52,8 +67,16 @@
 }
 
 void 
-AddContactPanel::selfEndorseCertificateFetched(Ptr<EndorseCertificate> endorseCertificate)
+AddContactPanel::selfEndorseCertificateFetched(const EndorseCertificate& endorseCertificate)
 {
+  _LOG_DEBUG("CALLED");
+}
+
+void
+AddContactPanel::selfEndorseCertificateFetchFailed(const Name& identity)
+{
+  m_warningDialog->setMsg("Cannot fetch contact profile");
+  m_warningDialog->show();
 }
 
 #if WAF
