diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index d036d88..f1fc936 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -74,11 +74,11 @@
       auto contentBlock = response.getContent();
       contentBlock.parse();
       auto caItem = infotlv::decodeDataContent(contentBlock);
-      BOOST_CHECK_EQUAL(caItem.m_caPrefix, "/ndn");
-      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 1);
-      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.front(), "full name");
-      BOOST_CHECK_EQUAL(caItem.m_cert->wireEncode(), cert.wireEncode());
-      BOOST_CHECK_EQUAL(caItem.m_caInfo, "ndn testbed ca");
+      BOOST_CHECK_EQUAL(caItem.caPrefix, "/ndn");
+      BOOST_CHECK_EQUAL(caItem.probeParameterKeys.size(), 1);
+      BOOST_CHECK_EQUAL(caItem.probeParameterKeys.front(), "full name");
+      BOOST_CHECK_EQUAL(caItem.cert->wireEncode(), cert.wireEncode());
+      BOOST_CHECK_EQUAL(caItem.caInfo, "ndn testbed ca");
     }
   });
   face.receive(interest);
@@ -101,8 +101,8 @@
 
   // generate NEW Interest
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
   auto newInterest = requester::Requester::genNewInterest(state, Name("/ndn/alice"),
                                                time::system_clock::now(),
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 9ca8a33..d5c24cb 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -38,7 +38,7 @@
 {
   util::DummyClientFace face(io, m_keyChain, {true, true});
   CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-1", "ca-storage-memory");
-  BOOST_CHECK_EQUAL(ca.getCaConf().caProfile.m_caPrefix, "/ndn");
+  BOOST_CHECK_EQUAL(ca.getCaConf().caProfile.caPrefix, "/ndn");
 
   advanceClocks(time::milliseconds(20), 60);
   BOOST_CHECK_EQUAL(ca.m_registeredPrefixHandles.size(), 1); // removed local discovery registration
@@ -84,11 +84,11 @@
       auto contentBlock = response.getContent();
       contentBlock.parse();
       auto caItem = infotlv::decodeDataContent(contentBlock);
-      BOOST_CHECK_EQUAL(caItem.m_caPrefix, "/ndn");
-      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 1);
-      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.front(), "full name");
-      BOOST_CHECK_EQUAL(caItem.m_cert->wireEncode(), cert.wireEncode());
-      BOOST_CHECK_EQUAL(caItem.m_caInfo, "ndn testbed ca");
+      BOOST_CHECK_EQUAL(caItem.caPrefix, "/ndn");
+      BOOST_CHECK_EQUAL(caItem.probeParameterKeys.size(), 1);
+      BOOST_CHECK_EQUAL(caItem.probeParameterKeys.front(), "full name");
+      BOOST_CHECK_EQUAL(caItem.cert->wireEncode(), cert.wireEncode());
+      BOOST_CHECK_EQUAL(caItem.caInfo, "ndn testbed ca");
     }
   });
   face.receive(interest);
@@ -229,8 +229,8 @@
   advanceClocks(time::milliseconds(20), 60);
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
   auto interest = requester::Requester::genNewInterest(state, Name("/ndn/zhiyi"),
                                             time::system_clock::now(),
@@ -280,8 +280,8 @@
   advanceClocks(time::milliseconds(20), 60);
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
   auto current_tp = time::system_clock::now();
   auto interest1 = requester::Requester::genNewInterest(state, Name("/ndn/zhiyi"), current_tp, current_tp - time::hours(1));
@@ -311,8 +311,8 @@
   advanceClocks(time::milliseconds(20), 60);
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
 
   auto interest1 = requester::Requester::genNewInterest(state, Name("/ndn/a"), time::system_clock::now(),
@@ -352,8 +352,8 @@
   advanceClocks(time::milliseconds(20), 60);
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
 
   auto current_tp = time::system_clock::now();
@@ -383,8 +383,8 @@
 
   // generate NEW Interest
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
 
   auto newInterest = requester::Requester::genNewInterest(state, Name("/ndn/zhiyi"), time::system_clock::now(),
@@ -477,8 +477,8 @@
   auto issuedCert = ca.issueCertificate(certRequest);
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::REVOKE);
 
   auto interest = requester::Requester::genRevokeInterest(state, issuedCert);
@@ -540,8 +540,8 @@
   m_keyChain.sign(clientCert, signingByKey(clientKey.getName()).setSignatureInfo(signatureInfo));
 
   CaProfile item;
-  item.m_caPrefix = Name("/ndn");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/ndn");
+  item.cert = std::make_shared<security::Certificate>(cert);
   requester::RequestState state(m_keyChain, item, RequestType::NEW);
 
   auto interest = requester::Requester::genRevokeInterest(state, clientCert);
diff --git a/tests/unit-tests/configuration.t.cpp b/tests/unit-tests/configuration.t.cpp
index c8dcee9..20748d9 100644
--- a/tests/unit-tests/configuration.t.cpp
+++ b/tests/unit-tests/configuration.t.cpp
@@ -33,23 +33,23 @@
 {
   ca::CaConfig config;
   config.load("tests/unit-tests/config-files/config-ca-1");
-  BOOST_CHECK_EQUAL(config.caProfile.m_caPrefix, "/ndn");
-  BOOST_CHECK_EQUAL(config.caProfile.m_caInfo, "ndn testbed ca");
-  BOOST_CHECK_EQUAL(config.caProfile.m_maxValidityPeriod, time::seconds(864000));
-  BOOST_CHECK_EQUAL(*config.caProfile.m_maxSuffixLength, 3);
-  BOOST_CHECK_EQUAL(config.caProfile.m_probeParameterKeys.size(), 1);
-  BOOST_CHECK_EQUAL(config.caProfile.m_probeParameterKeys.front(), "full name");
-  BOOST_CHECK_EQUAL(config.caProfile.m_supportedChallenges.size(), 1);
-  BOOST_CHECK_EQUAL(config.caProfile.m_supportedChallenges.front(), "pin");
+  BOOST_CHECK_EQUAL(config.caProfile.caPrefix, "/ndn");
+  BOOST_CHECK_EQUAL(config.caProfile.caInfo, "ndn testbed ca");
+  BOOST_CHECK_EQUAL(config.caProfile.maxValidityPeriod, time::seconds(864000));
+  BOOST_CHECK_EQUAL(*config.caProfile.maxSuffixLength, 3);
+  BOOST_CHECK_EQUAL(config.caProfile.probeParameterKeys.size(), 1);
+  BOOST_CHECK_EQUAL(config.caProfile.probeParameterKeys.front(), "full name");
+  BOOST_CHECK_EQUAL(config.caProfile.supportedChallenges.size(), 1);
+  BOOST_CHECK_EQUAL(config.caProfile.supportedChallenges.front(), "pin");
 
   config.load("tests/unit-tests/config-files/config-ca-2");
-  BOOST_CHECK_EQUAL(config.caProfile.m_caPrefix, "/ndn");
-  BOOST_CHECK_EQUAL(config.caProfile.m_caInfo, "missing max validity period, max suffix length, and probe");
-  BOOST_CHECK_EQUAL(config.caProfile.m_maxValidityPeriod, time::seconds(86400));
-  BOOST_CHECK(!config.caProfile.m_maxSuffixLength.has_value());
-  BOOST_CHECK_EQUAL(config.caProfile.m_probeParameterKeys.size(), 0);
-  BOOST_CHECK_EQUAL(config.caProfile.m_supportedChallenges.size(), 1);
-  BOOST_CHECK_EQUAL(config.caProfile.m_supportedChallenges.front(), "pin");
+  BOOST_CHECK_EQUAL(config.caProfile.caPrefix, "/ndn");
+  BOOST_CHECK_EQUAL(config.caProfile.caInfo, "missing max validity period, max suffix length, and probe");
+  BOOST_CHECK_EQUAL(config.caProfile.maxValidityPeriod, time::seconds(86400));
+  BOOST_CHECK(!config.caProfile.maxSuffixLength.has_value());
+  BOOST_CHECK_EQUAL(config.caProfile.probeParameterKeys.size(), 0);
+  BOOST_CHECK_EQUAL(config.caProfile.supportedChallenges.size(), 1);
+  BOOST_CHECK_EQUAL(config.caProfile.supportedChallenges.front(), "pin");
 
   config.load("tests/unit-tests/config-files/config-ca-5");
   BOOST_CHECK_EQUAL(config.redirection[0]->getName(),
@@ -93,22 +93,22 @@
   BOOST_CHECK_EQUAL(profileStorage.getKnownProfiles().size(), 2);
 
   auto& profile1 = profileStorage.getKnownProfiles().front();
-  BOOST_CHECK_EQUAL(profile1.m_caPrefix, "/ndn/edu/ucla");
-  BOOST_CHECK_EQUAL(profile1.m_caInfo, "ndn testbed ca");
-  BOOST_CHECK_EQUAL(profile1.m_maxValidityPeriod, time::seconds(864000));
-  BOOST_CHECK_EQUAL(*profile1.m_maxSuffixLength, 3);
-  BOOST_CHECK_EQUAL(profile1.m_probeParameterKeys.size(), 1);
-  BOOST_CHECK_EQUAL(profile1.m_probeParameterKeys.front(), "email");
-  BOOST_CHECK_EQUAL(profile1.m_cert->getName(),
+  BOOST_CHECK_EQUAL(profile1.caPrefix, "/ndn/edu/ucla");
+  BOOST_CHECK_EQUAL(profile1.caInfo, "ndn testbed ca");
+  BOOST_CHECK_EQUAL(profile1.maxValidityPeriod, time::seconds(864000));
+  BOOST_CHECK_EQUAL(*profile1.maxSuffixLength, 3);
+  BOOST_CHECK_EQUAL(profile1.probeParameterKeys.size(), 1);
+  BOOST_CHECK_EQUAL(profile1.probeParameterKeys.front(), "email");
+  BOOST_CHECK_EQUAL(profile1.cert->getName(),
                     "/ndn/site1/KEY/%11%BC%22%F4c%15%FF%17/self/%FD%00%00%01Y%C8%14%D9%A5");
 
   auto& profile2 = profileStorage.getKnownProfiles().back();
-  BOOST_CHECK_EQUAL(profile2.m_caPrefix, "/ndn/edu/ucla/zhiyi");
-  BOOST_CHECK_EQUAL(profile2.m_caInfo, "");
-  BOOST_CHECK_EQUAL(profile2.m_maxValidityPeriod, time::seconds(86400));
-  BOOST_CHECK(!profile2.m_maxSuffixLength);
-  BOOST_CHECK_EQUAL(profile2.m_probeParameterKeys.size(), 0);
-  BOOST_CHECK_EQUAL(profile2.m_cert->getName(),
+  BOOST_CHECK_EQUAL(profile2.caPrefix, "/ndn/edu/ucla/zhiyi");
+  BOOST_CHECK_EQUAL(profile2.caInfo, "");
+  BOOST_CHECK_EQUAL(profile2.maxValidityPeriod, time::seconds(86400));
+  BOOST_CHECK(!profile2.maxSuffixLength);
+  BOOST_CHECK_EQUAL(profile2.probeParameterKeys.size(), 0);
+  BOOST_CHECK_EQUAL(profile2.cert->getName(),
                     "/ndn/site1/KEY/%11%BC%22%F4c%15%FF%17/self/%FD%00%00%01Y%C8%14%D9%A5");
 }
 
@@ -129,18 +129,18 @@
   profileStorage.load("tests/unit-tests/config-files/config-client-1");
 
   CaProfile item;
-  item.m_caPrefix = Name("/test");
-  item.m_caInfo = "test";
+  item.caPrefix = Name("/test");
+  item.caInfo = "test";
 
   profileStorage.addCaProfile(item);
   BOOST_CHECK_EQUAL(profileStorage.getKnownProfiles().size(), 3);
   auto lastItem = profileStorage.getKnownProfiles().back();
-  BOOST_CHECK_EQUAL(lastItem.m_caPrefix, "/test");
+  BOOST_CHECK_EQUAL(lastItem.caPrefix, "/test");
 
   profileStorage.removeCaProfile(Name("/test"));
   BOOST_CHECK_EQUAL(profileStorage.getKnownProfiles().size(), 2);
   lastItem = profileStorage.getKnownProfiles().back();
-  BOOST_CHECK_EQUAL(lastItem.m_caPrefix, "/ndn/edu/ucla/zhiyi");
+  BOOST_CHECK_EQUAL(lastItem.caPrefix, "/ndn/edu/ucla/zhiyi");
 }
 
 BOOST_AUTO_TEST_SUITE_END()  // TestCaConfig
diff --git a/tests/unit-tests/protocol-encoders.t.cpp b/tests/unit-tests/protocol-encoders.t.cpp
index ad301bd..b522b06 100644
--- a/tests/unit-tests/protocol-encoders.t.cpp
+++ b/tests/unit-tests/protocol-encoders.t.cpp
@@ -40,17 +40,17 @@
 
   requester::ProfileStorage caCache;
   caCache.load("tests/unit-tests/config-files/config-client-1");
-  auto& cert = caCache.getKnownProfiles().front().m_cert;
+  auto& cert = caCache.getKnownProfiles().front().cert;
 
   auto b = infotlv::encodeDataContent(config.caProfile, *cert);
   auto item = infotlv::decodeDataContent(b);
 
-  BOOST_CHECK_EQUAL(*item.m_cert, *cert);
-  BOOST_CHECK_EQUAL(item.m_caInfo, config.caProfile.m_caInfo);
-  BOOST_CHECK_EQUAL(item.m_caPrefix, config.caProfile.m_caPrefix);
-  BOOST_CHECK_EQUAL_COLLECTIONS(item.m_probeParameterKeys.begin(), item.m_probeParameterKeys.end(),
-                                config.caProfile.m_probeParameterKeys.begin(), config.caProfile.m_probeParameterKeys.end());
-  BOOST_CHECK_EQUAL(item.m_maxValidityPeriod, config.caProfile.m_maxValidityPeriod);
+  BOOST_CHECK_EQUAL(*item.cert, *cert);
+  BOOST_CHECK_EQUAL(item.caInfo, config.caProfile.caInfo);
+  BOOST_CHECK_EQUAL(item.caPrefix, config.caProfile.caPrefix);
+  BOOST_CHECK_EQUAL_COLLECTIONS(item.probeParameterKeys.begin(), item.probeParameterKeys.end(),
+                                config.caProfile.probeParameterKeys.begin(), config.caProfile.probeParameterKeys.end());
+  BOOST_CHECK_EQUAL(item.maxValidityPeriod, config.caProfile.maxValidityPeriod);
 }
 
 BOOST_AUTO_TEST_CASE(ErrorEncoding)
@@ -104,7 +104,7 @@
 {
   requester::ProfileStorage caCache;
   caCache.load("tests/unit-tests/config-files/config-client-1");
-  auto& certRequest = caCache.getKnownProfiles().front().m_cert;
+  auto& certRequest = caCache.getKnownProfiles().front().cert;
   std::vector<uint8_t> pub = ECDHState().getSelfPubKey();
   auto b = requesttlv::encodeApplicationParameters(RequestType::REVOKE, pub, *certRequest);
   std::vector<uint8_t> returnedPub;
@@ -145,7 +145,7 @@
                          0xe0, 0xff, 0x56, 0x83, 0xf2, 0x43, 0xb2, 0x13};
   requester::ProfileStorage caCache;
   caCache.load("tests/unit-tests/config-files/config-client-1");
-  security::Certificate certRequest = *caCache.getKnownProfiles().front().m_cert;
+  security::Certificate certRequest = *caCache.getKnownProfiles().front().cert;
   RequestId id = {{102}};
   ca::RequestState state;
   state.caPrefix = Name("/ndn/ucla");
diff --git a/tests/unit-tests/requester.t.cpp b/tests/unit-tests/requester.t.cpp
index b9d0302..50c38ad 100644
--- a/tests/unit-tests/requester.t.cpp
+++ b/tests/unit-tests/requester.t.cpp
@@ -41,11 +41,11 @@
   auto cert = key.getDefaultCertificate();
 
   CaProfile ca_profile;
-  ca_profile.m_probeParameterKeys.push_back("email");
-  ca_profile.m_probeParameterKeys.push_back("uid");
-  ca_profile.m_probeParameterKeys.push_back("name");
-  ca_profile.m_caPrefix = Name("/site");
-  ca_profile.m_cert = std::make_shared<security::Certificate>(cert);
+  ca_profile.probeParameterKeys.push_back("email");
+  ca_profile.probeParameterKeys.push_back("uid");
+  ca_profile.probeParameterKeys.push_back("name");
+  ca_profile.caPrefix = Name("/site");
+  ca_profile.cert = std::make_shared<security::Certificate>(cert);
 
   std::multimap<std::string, std::string> probeParams;
   probeParams.emplace("email", "zhiyi@cs.ucla.edu");
@@ -65,11 +65,11 @@
   auto cert = key.getDefaultCertificate();
 
   CaProfile ca_profile;
-  ca_profile.m_probeParameterKeys.push_back("email");
-  ca_profile.m_probeParameterKeys.push_back("uid");
-  ca_profile.m_probeParameterKeys.push_back("name");
-  ca_profile.m_caPrefix = Name("/site");
-  ca_profile.m_cert = std::make_shared<security::Certificate>(cert);
+  ca_profile.probeParameterKeys.push_back("email");
+  ca_profile.probeParameterKeys.push_back("uid");
+  ca_profile.probeParameterKeys.push_back("name");
+  ca_profile.caPrefix = Name("/site");
+  ca_profile.cert = std::make_shared<security::Certificate>(cert);
 
   std::vector<Name> availableNames;
   availableNames.push_back(Name("/site1"));
@@ -107,8 +107,8 @@
   auto cert = key.getDefaultCertificate();
 
   CaProfile item;
-  item.m_caPrefix = Name("/site");
-  item.m_cert = std::make_shared<security::Certificate>(cert);
+  item.caPrefix = Name("/site");
+  item.cert = std::make_shared<security::Certificate>(cert);
   RequestState state(m_keyChain, item, RequestType::NEW);
 
   Data errorPacket;
