diff --git a/src/contact-manager.cpp b/src/contact-manager.cpp
index 7b07824..01168a0 100644
--- a/src/contact-manager.cpp
+++ b/src/contact-manager.cpp
@@ -193,19 +193,22 @@
 void
 ContactManager::onDnsSelfEndorseCertificateVerified(Ptr<Data> data, const Name& identity)
 {
-  const Blob& dataContentBlob = data->content();
-  
-  boost::iostreams::stream
-    <boost::iostreams::array_source> is (dataContentBlob.buf(), dataContentBlob.size());
+  Ptr<Blob> dataContentBlob = Ptr<Blob>(new Blob(data->content().buf(), data->content().size()));
 
-  Ptr<Data> plainData = Data::decodeFromWire(is);
+  Ptr<Data> plainData = Data::decodeFromWire(dataContentBlob);
+
   Ptr<EndorseCertificate> selfEndorseCertificate = Ptr<EndorseCertificate>(new EndorseCertificate(*plainData));
-  
+
   const security::Publickey& ksk = selfEndorseCertificate->getPublicKeyInfo();
+
   if(security::PolicyManager::verifySignature(*plainData, ksk))
-    emit contactFetched (selfEndorseCertificate); 
+    {
+      emit contactFetched (*selfEndorseCertificate); 
+    }
   else
-    emit contactFetchFailed (identity);
+    {
+      emit contactFetchFailed (identity);
+    }
 }
 
 void
@@ -247,9 +250,15 @@
 
   Name dnsName = identity;
   dnsName.append("DNS").append("PROFILE").append(oss.str());
-
+  
   data->setName(dnsName);
   Ptr<Blob> blob = selfEndorseCertificate->encodeToWire();
+
+  // string encoded;
+  // CryptoPP::StringSource ss(reinterpret_cast<const unsigned char *>(blob->buf()), blob->size(), true,
+  //       		    new CryptoPP::Base64Encoder(new CryptoPP::StringSink(encoded), false));
+
+  // Content content(encoded.c_str(), encoded.size());
   Content content(blob->buf(), blob->size());
   data->setContent(content);
 
