diff --git a/ndn-cpp/security/key-chain.cpp b/ndn-cpp/security/key-chain.cpp
index fdfc998..8025b68 100644
--- a/ndn-cpp/security/key-chain.cpp
+++ b/ndn-cpp/security/key-chain.cpp
@@ -31,8 +31,8 @@
 };
 #endif
 
-KeyChain::KeyChain(const ptr_lib::shared_ptr<IdentityStorage>& identityStorage, const ptr_lib::shared_ptr<PrivateKeyStorage>& privateKeyStorage)
-: identityManager_(identityStorage, privateKeyStorage), face_(0), maxSteps_(100)
+KeyChain::KeyChain(const shared_ptr<IdentityManager>& identityManager)
+: identityManager_(identityManager), face_(0), maxSteps_(100)
 {  
 }
 
@@ -105,7 +105,7 @@
   
   if (certificateNameIn.getComponentCount() == 0) {
 #if 0
-    inferredCertificateName = identityManager_.getDefaultCertificateNameForIdentity(policyManager_->inferSigningIdentity(data.getName ()));
+    inferredCertificateName = identityManager_->getDefaultCertificateNameForIdentity(policyManager_->inferSigningIdentity(data.getName ()));
 #else
     inferredCertificateName = Name();
 #endif
@@ -122,7 +122,7 @@
     throw SecurityException("Signing Cert name does not comply with signing policy");
 #endif
   
-  identityManager_.signByCertificate(data, *certificateName, wireFormat);  
+  identityManager_->signByCertificate(data, *certificateName, wireFormat);  
 }
 
 void
diff --git a/ndn-cpp/security/key-chain.hpp b/ndn-cpp/security/key-chain.hpp
index d0357ef..ecddf67 100644
--- a/ndn-cpp/security/key-chain.hpp
+++ b/ndn-cpp/security/key-chain.hpp
@@ -31,7 +31,7 @@
  */
 class KeyChain {
 public:
-  KeyChain(const ptr_lib::shared_ptr<IdentityStorage>& identityStorage, const ptr_lib::shared_ptr<PrivateKeyStorage>& privateKeyStorage);
+  KeyChain(const ptr_lib::shared_ptr<IdentityManager>& identityManager);
 
   /**
    * Get the default certificate name for the specified identity, which will be used when signing is performed based on identity.
@@ -41,7 +41,7 @@
   Name
   getDefaultCertificateNameForIdentity(const Name& identityName)
   {
-    return identityManager_.getDefaultCertificateNameForIdentity(identityName);
+    return identityManager_->getDefaultCertificateNameForIdentity(identityName);
   }
   
   /**
@@ -88,7 +88,7 @@
   setFace(Face* face) { face_ = face; }
 
 private:
-  IdentityManager identityManager_;
+  ptr_lib::shared_ptr<IdentityManager> identityManager_;
   Face* face_;
   const int maxSteps_;
 };
diff --git a/tests/test-encode-decode-data.cpp b/tests/test-encode-decode-data.cpp
index 5e09399..452afbe 100644
--- a/tests/test-encode-decode-data.cpp
+++ b/tests/test-encode-decode-data.cpp
@@ -239,7 +239,7 @@
     
     shared_ptr<MemoryIdentityStorage> identityStorage(new MemoryIdentityStorage());
     shared_ptr<MemoryPrivateKeyStorage> privateKeyStorage(new MemoryPrivateKeyStorage());
-    KeyChain keyChain(identityStorage, privateKeyStorage);
+    KeyChain keyChain(shared_ptr<IdentityManager>(new IdentityManager(identityStorage, privateKeyStorage)));
     
     // Initialize the storage.
     Name keyName("/testname/DSK-123");
diff --git a/tests/test-publish-async.cpp b/tests/test-publish-async.cpp
index 72dec4b..749c7c1 100644
--- a/tests/test-publish-async.cpp
+++ b/tests/test-publish-async.cpp
@@ -108,7 +108,7 @@
     
     shared_ptr<MemoryIdentityStorage> identityStorage(new MemoryIdentityStorage());
     shared_ptr<MemoryPrivateKeyStorage> privateKeyStorage(new MemoryPrivateKeyStorage());
-    KeyChain keyChain(identityStorage, privateKeyStorage);
+    KeyChain keyChain(shared_ptr<IdentityManager>(new IdentityManager(identityStorage, privateKeyStorage)));
     keyChain.setFace(&face);
     
     // Initialize the storage.
