diff --git a/src/ca-state.cpp b/src/ca-state.cpp
index 426f96d..b8b32c0 100644
--- a/src/ca-state.cpp
+++ b/src/ca-state.cpp
@@ -25,7 +25,7 @@
 namespace ndncert {
 
 ChallengeState::ChallengeState(const std::string& challengeStatus,
-                               const system_clock::TimePoint& challengeTp,
+                               const time::system_clock::TimePoint& challengeTp,
                                size_t remainingTries, time::seconds remainingTime,
                                JsonSection&& challengeSecrets)
     : m_challengeStatus(challengeStatus)
@@ -55,7 +55,7 @@
 
 CaState::CaState(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
                  const security::Certificate& cert, const std::string& challengeType,
-                 const std::string& challengeStatus, const system_clock::TimePoint& challengeTp,
+                 const std::string& challengeStatus, const time::system_clock::TimePoint& challengeTp,
                  size_t remainingTries, time::seconds remainingTime, JsonSection&& challengeSecrets,
                  Block encryptionKey)
     : m_caPrefix(caName)
diff --git a/src/ca-state.hpp b/src/ca-state.hpp
index d74e680..e25704e 100644
--- a/src/ca-state.hpp
+++ b/src/ca-state.hpp
@@ -30,11 +30,11 @@
  * @brief The state maintained by the Challenge modules
  */
 struct ChallengeState {
-  ChallengeState(const std::string& challengeStatus, const system_clock::TimePoint& challengeTp,
+  ChallengeState(const std::string& challengeStatus, const time::system_clock::TimePoint& challengeTp,
                  size_t remainingTries, time::seconds remainingTime,
                  JsonSection&& challengeSecrets);
   std::string m_challengeStatus;
-  system_clock::TimePoint m_timestamp;
+  time::system_clock::TimePoint m_timestamp;
   size_t m_remainingTries;
   time::seconds m_remainingTime;
   JsonSection m_secrets;
@@ -53,7 +53,7 @@
           const security::Certificate& cert, Block m_encryptionKey);
   CaState(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
           const security::Certificate& cert, const std::string& challengeType,
-          const std::string& challengeStatus, const system_clock::TimePoint& challengeTp,
+          const std::string& challengeStatus, const time::system_clock::TimePoint& challengeTp,
           size_t remainingTries, time::seconds remainingTime, JsonSection&& challengeSecrets,
           Block m_encryptionKey);
 
diff --git a/src/ca-storage/ca-storage.hpp b/src/ca-storage/ca-storage.hpp
index 99af926..e18a5bc 100644
--- a/src/ca-storage/ca-storage.hpp
+++ b/src/ca-storage/ca-storage.hpp
@@ -61,7 +61,7 @@
     CaStorageFactory& factory = getFactory();
     BOOST_ASSERT(factory.count(caStorageType) == 0);
     factory[caStorageType] = [] (const Name& caName, const std::string& path) {
-      return make_unique<CaStorageType>(caName, path);
+      return std::make_unique<CaStorageType>(caName, path);
     };
   }
 
diff --git a/src/identity-challenge/challenge-module.hpp b/src/identity-challenge/challenge-module.hpp
index 0f0d0b8..c12b03c 100644
--- a/src/identity-challenge/challenge-module.hpp
+++ b/src/identity-challenge/challenge-module.hpp
@@ -39,7 +39,7 @@
   {
     ChallengeFactory& factory = getFactory();
     BOOST_ASSERT(factory.count(typeName) == 0);
-    factory[typeName] = [] { return make_unique<ChallengeType>(); };
+    factory[typeName] = [] { return std::make_unique<ChallengeType>(); };
   }
 
   static bool
diff --git a/src/name-assignments/assignment-funcs.hpp b/src/name-assignments/assignment-funcs.hpp
index 3f78955..30408b5 100644
--- a/src/name-assignments/assignment-funcs.hpp
+++ b/src/name-assignments/assignment-funcs.hpp
@@ -54,7 +54,7 @@
   {
     FuncFactoryFactory& factory = getFactory();
     BOOST_ASSERT(factory.count(typeName) == 0);
-    factory[typeName] = [](const std::string& format) { return make_unique<ChallengeType>(format); };
+    factory[typeName] = [](const std::string& format) { return std::make_unique<ChallengeType>(format); };
   }
 
   static unique_ptr<NameAssignmentFunc>
diff --git a/src/ndncert-common.hpp b/src/ndncert-common.hpp
index c458be7..96c50ba 100644
--- a/src/ndncert-common.hpp
+++ b/src/ndncert-common.hpp
@@ -62,15 +62,6 @@
 namespace ndncert {
 
 using boost::noncopyable;
-using time::system_clock;
-using std::bind;
-using std::enable_shared_from_this;
-using std::function;
-using std::make_shared;
-using std::shared_ptr;
-using std::size_t;
-using std::unique_ptr;
-using std::weak_ptr;
 
 enum : uint32_t {
   tlv_ca_prefix = 129,
diff --git a/src/protocol-detail/new-renew-revoke.cpp b/src/protocol-detail/new-renew-revoke.cpp
index f153c40..75ffab7 100644
--- a/src/protocol-detail/new-renew-revoke.cpp
+++ b/src/protocol-detail/new-renew-revoke.cpp
@@ -71,7 +71,7 @@
   requestPayload.parse();
 
   security::Certificate cert = security::Certificate(requestPayload.get(tlv::Data));
-  clientCert = make_shared<security::Certificate>(cert);
+  clientCert =std::make_shared<security::Certificate>(cert);
 }
 
 Block
diff --git a/src/requester.cpp b/src/requester.cpp
index 9bafeb8..de2d1a6 100644
--- a/src/requester.cpp
+++ b/src/requester.cpp
@@ -91,7 +91,7 @@
 {
   Name interestName = ca.m_caPrefix;
   interestName.append("CA").append("PROBE");
-  auto interest = make_shared<Interest>(interestName);
+  auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
   interest->setApplicationParameters(PROBE::encodeApplicationParameters(std::move(probeInfo)));
@@ -160,7 +160,7 @@
   // generate Interest packet
   Name interestName = state.m_caItem.m_caPrefix;
   interestName.append("CA").append("NEW");
-  auto interest = make_shared<Interest>(interestName);
+  auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
   interest->setApplicationParameters(
@@ -180,7 +180,7 @@
   // generate Interest packet
   Name interestName = state.m_caItem.m_caPrefix;
   interestName.append("CA").append("REVOKE");
-  auto interest = make_shared<Interest>(interestName);
+  auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
   interest->setApplicationParameters(
@@ -237,7 +237,7 @@
 
   Name interestName = state.m_caItem.m_caPrefix;
   interestName.append("CA").append("CHALLENGE").append(state.m_requestId);
-  auto interest = make_shared<Interest>(interestName);
+  auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
 
@@ -267,7 +267,7 @@
 Requester::genCertFetchInterest(const RequesterState& state)
 {
   Name interestName = state.m_issuedCertName;
-  auto interest = make_shared<Interest>(interestName);
+  auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(false);
   interest->setCanBePrefix(false);
   return interest;
