further update organization

Change-Id: If8048a9225ba3eb446a15014a0535f5edd271a40
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 5481b2b..a6b0f7d 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -19,14 +19,14 @@
  */
 
 #include "ca-module.hpp"
-#include "protocol-detail/enc-tlv.hpp"
+#include "detail/enc-tlv.hpp"
 #include "identity-challenge/challenge-module.hpp"
 #include "name-assignments/assignment-funcs.hpp"
-#include "protocol-detail/challenge.hpp"
-#include "protocol-detail/error.hpp"
-#include "protocol-detail/info.hpp"
-#include "protocol-detail/new-renew-revoke.hpp"
-#include "protocol-detail/probe.hpp"
+#include "detail/challenge-encoder.hpp"
+#include "detail/error-encoder.hpp"
+#include "detail/info-encoder.hpp"
+#include "detail/new-renew-revoke-encoder.hpp"
+#include "detail/probe-encoder.hpp"
 #include <ndn-cxx/metadata-object.hpp>
 #include <ndn-cxx/security/signing-helpers.hpp>
 #include <ndn-cxx/security/verification-helpers.hpp>
@@ -121,7 +121,7 @@
     const auto& pib = m_keyChain.getPib();
     const auto& identity = pib.getIdentity(m_config.m_caItem.m_caPrefix);
     const auto& cert = identity.getDefaultKey().getDefaultCertificate();
-    Block contentTLV = INFO::encodeDataContent(m_config.m_caItem, cert);
+    Block contentTLV = InfoEncoder::encodeDataContent(m_config.m_caItem, cert);
 
     Name infoPacketName(m_config.m_caItem.m_caPrefix);
     infoPacketName.append("CA").append("INFO").appendVersion().appendSegment(0);
@@ -155,7 +155,7 @@
   NDN_LOG_TRACE("Received PROBE request");
 
   // process PROBE requests: collect probe parameters
-  auto parameters = PROBE::decodeApplicationParameters(request.getApplicationParameters());
+  auto parameters = ProbeEncoder::decodeApplicationParameters(request.getApplicationParameters());
   std::vector<PartialName> availableComponents;
   for (auto& item : m_config.m_nameAssignmentFuncs) {
     auto names = item->assignName(parameters);
@@ -175,7 +175,7 @@
 
   Data result;
   result.setName(request.getName());
-  result.setContent(PROBE::encodeDataContent(availableNames, m_config.m_caItem.m_maxSuffixLength, m_config.m_redirection));
+  result.setContent(ProbeEncoder::encodeDataContent(availableNames, m_config.m_caItem.m_maxSuffixLength, m_config.m_redirection));
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
   m_keyChain.sign(result, signingByIdentity(m_config.m_caItem.m_caPrefix));
   m_face.put(result);
@@ -192,7 +192,7 @@
   std::string ecdhPub;
   shared_ptr<security::Certificate> clientCert;
   try {
-    NEW_RENEW_REVOKE::decodeApplicationParameters(parameterTLV, requestType, ecdhPub, clientCert);
+    NewRenewRevokeEncoder::decodeApplicationParameters(parameterTLV, requestType, ecdhPub, clientCert);
   }
   catch (const std::exception& e) {
     if (!parameterTLV.hasValue()) {
@@ -295,7 +295,7 @@
   hmac_sha256(certNameTlv.wire(), certNameTlv.size(), m_requestIdGenKey, 32, requestIdData);
   CaState requestState(m_config.m_caItem.m_caPrefix, toHex(requestIdData, 32),
                        requestType, Status::BEFORE_CHALLENGE, *clientCert,
-                       makeBinaryBlock(tlv::ContentType_Key, aesKey, sizeof(aesKey)));
+                       makeBinaryBlock(ndn::tlv::ContentType_Key, aesKey, sizeof(aesKey)));
   try {
     m_storage->addRequest(requestState);
   }
@@ -308,7 +308,7 @@
   Data result;
   result.setName(request.getName());
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
-  result.setContent(NEW_RENEW_REVOKE::encodeDataContent(myEcdhPubKeyBase64,
+  result.setContent(NewRenewRevokeEncoder::encodeDataContent(myEcdhPubKeyBase64,
                                                         std::to_string(saltInt),
                                                         requestState,
                                                         m_config.m_caItem.m_supportedChallenges));
@@ -387,7 +387,7 @@
       requestState.m_status = Status::SUCCESS;
       m_storage->deleteRequest(requestState.m_requestId);
 
-      payload = CHALLENGE::encodeDataContent(requestState);
+      payload = ChallengeEncoder::encodeDataContent(requestState);
       payload.parse();
       payload.push_back(makeNestedBlock(tlv::IssuedCertName, issuedCert.getName()));
       payload.encode();
@@ -397,20 +397,20 @@
       requestState.m_status = Status::SUCCESS;
       m_storage->deleteRequest(requestState.m_requestId);
 
-      payload = CHALLENGE::encodeDataContent(requestState);
+      payload = ChallengeEncoder::encodeDataContent(requestState);
       NDN_LOG_TRACE("Challenge succeeded. Certificate has been revoked");
     }
   }
   else {
     m_storage->updateRequest(requestState);
-    payload = CHALLENGE::encodeDataContent(requestState);
+    payload = ChallengeEncoder::encodeDataContent(requestState);
     NDN_LOG_TRACE("No failure no success. Challenge moves on");
   }
 
   Data result;
   result.setName(request.getName());
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
-  auto contentBlock = encodeBlockWithAesGcm128(tlv::Content, requestState.m_encryptionKey.value(), payload.value(),
+  auto contentBlock = encodeBlockWithAesGcm128(ndn::tlv::Content, requestState.m_encryptionKey.value(), payload.value(),
                                                payload.value_size(), (uint8_t*)"test", strlen("test"));
   result.setContent(contentBlock);
   m_keyChain.sign(result, signingByIdentity(m_config.m_caItem.m_caPrefix));
@@ -476,7 +476,7 @@
   Data result;
   result.setName(name);
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
-  result.setContent(ErrorTLV::encodeDataContent(error, errorInfo));
+  result.setContent(ErrorEncoder::encodeDataContent(error, errorInfo));
   m_keyChain.sign(result, signingByIdentity(m_config.m_caItem.m_caPrefix));
   return result;
 }
diff --git a/src/ca-module.hpp b/src/ca-module.hpp
index 3fb79cb..118a85e 100644
--- a/src/ca-module.hpp
+++ b/src/ca-module.hpp
@@ -22,7 +22,7 @@
 #define NDNCERT_CA_MODULE_HPP
 
 #include "configuration.hpp"
-#include "protocol-detail/crypto-helper.hpp"
+#include "detail/crypto-helper.hpp"
 #include "ca-detail/ca-storage.hpp"
 
 namespace ndn {
diff --git a/src/ca-state.hpp b/src/ca-state.hpp
index 4c99185..2204f1c 100644
--- a/src/ca-state.hpp
+++ b/src/ca-state.hpp
@@ -21,7 +21,7 @@
 #ifndef NDNCERT_CA_STATE_HPP
 #define NDNCERT_CA_STATE_HPP
 
-#include "protocol-detail/ndncert-common.hpp"
+#include "detail/ndncert-common.hpp"
 
 namespace ndn {
 namespace ndncert {
diff --git a/src/protocol-detail/challenge.cpp b/src/detail/challenge-encoder.cpp
similarity index 92%
rename from src/protocol-detail/challenge.cpp
rename to src/detail/challenge-encoder.cpp
index d49ca4e..658cbd8 100644
--- a/src/protocol-detail/challenge.cpp
+++ b/src/detail/challenge-encoder.cpp
@@ -18,13 +18,13 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "challenge.hpp"
+#include "challenge-encoder.hpp"
 
 namespace ndn {
 namespace ndncert {
 
 Block
-CHALLENGE::encodeDataContent(const CaState& request)
+ChallengeEncoder::encodeDataContent(const CaState& request)
 {
   Block response = makeEmptyBlock(tlv::EncryptedPayload);
   response.push_back(makeNonNegativeIntegerBlock(tlv::Status, static_cast<size_t>(request.m_status)));
@@ -40,7 +40,7 @@
 }
 
 void
-CHALLENGE::decodeDataContent(const Block& data, RequesterState& state)
+ChallengeEncoder::decodeDataContent(const Block& data, RequesterState& state)
 {
   data.parse();
   state.m_status = static_cast<Status>(readNonNegativeInteger(data.get(tlv::Status)));
diff --git a/src/protocol-detail/challenge.hpp b/src/detail/challenge-encoder.hpp
similarity index 88%
rename from src/protocol-detail/challenge.hpp
rename to src/detail/challenge-encoder.hpp
index 7d78009..f66d9cb 100644
--- a/src/protocol-detail/challenge.hpp
+++ b/src/detail/challenge-encoder.hpp
@@ -18,8 +18,8 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#ifndef NDNCERT_PROTOCOL_DETAIL_CHALLENGE_HPP
-#define NDNCERT_PROTOCOL_DETAIL_CHALLENGE_HPP
+#ifndef NDNCERT_DETAIL_CHALLENGE_STEP_HPP
+#define NDNCERT_DETAIL_CHALLENGE_STEP_HPP
 
 #include "../ca-state.hpp"
 #include "../requester-state.hpp"
@@ -27,7 +27,7 @@
 namespace ndn {
 namespace ndncert {
 
-class CHALLENGE
+class ChallengeEncoder
 {
 public:
   static Block
@@ -40,4 +40,4 @@
 } // namespace ndncert
 } // namespace ndn
 
-#endif // NDNCERT_PROTOCOL_DETAIL_HPP
\ No newline at end of file
+#endif // NDNCERT_DETAIL_CHALLENGE_STEP_HPP
\ No newline at end of file
diff --git a/src/protocol-detail/crypto-helper.cpp b/src/detail/crypto-helper.cpp
similarity index 100%
rename from src/protocol-detail/crypto-helper.cpp
rename to src/detail/crypto-helper.cpp
diff --git a/src/protocol-detail/crypto-helper.hpp b/src/detail/crypto-helper.hpp
similarity index 100%
rename from src/protocol-detail/crypto-helper.hpp
rename to src/detail/crypto-helper.hpp
diff --git a/src/protocol-detail/enc-tlv.cpp b/src/detail/enc-tlv.cpp
similarity index 100%
rename from src/protocol-detail/enc-tlv.cpp
rename to src/detail/enc-tlv.cpp
diff --git a/src/protocol-detail/enc-tlv.hpp b/src/detail/enc-tlv.hpp
similarity index 100%
rename from src/protocol-detail/enc-tlv.hpp
rename to src/detail/enc-tlv.hpp
diff --git a/src/protocol-detail/error.cpp b/src/detail/error-encoder.cpp
similarity index 87%
rename from src/protocol-detail/error.cpp
rename to src/detail/error-encoder.cpp
index 266e4e6..84b7866 100644
--- a/src/protocol-detail/error.cpp
+++ b/src/detail/error-encoder.cpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "error.hpp"
+#include "error-encoder.hpp"
 
 namespace ndn {
 namespace ndncert {
 
 Block
-ErrorTLV::encodeDataContent(ErrorCode errorCode, const std::string& description)
+ErrorEncoder::encodeDataContent(ErrorCode errorCode, const std::string& description)
 {
-  Block response = makeEmptyBlock(tlv::Content);
+  Block response = makeEmptyBlock(ndn::tlv::Content);
   response.push_back(makeNonNegativeIntegerBlock(tlv::ErrorCode, static_cast<size_t>(errorCode)));
   response.push_back(makeStringBlock(tlv::ErrorInfo, description));
   response.encode();
@@ -34,7 +34,7 @@
 }
 
 std::tuple<ErrorCode, std::string>
-ErrorTLV::decodefromDataContent(const Block& block)
+ErrorEncoder::decodefromDataContent(const Block& block)
 {
   block.parse();
   if (block.find(tlv::ErrorCode) == block.elements_end()) {
diff --git a/src/protocol-detail/error.hpp b/src/detail/error-encoder.hpp
similarity index 90%
rename from src/protocol-detail/error.hpp
rename to src/detail/error-encoder.hpp
index ae3a027..ade9fb3 100644
--- a/src/protocol-detail/error.hpp
+++ b/src/detail/error-encoder.hpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#ifndef NDNCERT_PROTOCOL_DETAIL_ERROR_HPP
-#define NDNCERT_PROTOCOL_DETAIL_ERROR_HPP
+#ifndef NDNCERT_DETAIL_ERROR_ENCODER_HPP
+#define NDNCERT_DETAIL_ERROR_ENCODER_HPP
 
 #include "../configuration.hpp"
 
 namespace ndn {
 namespace ndncert {
 
-class ErrorTLV
+class ErrorEncoder
 {
 public:
   /**
@@ -45,4 +45,4 @@
 } // namespace ndncert
 } // namespace ndn
 
-#endif // NDNCERT_PROTOCOL_ERROR_HPP
\ No newline at end of file
+#endif // NDNCERT_DETAIL_ERROR_ENCODER_HPP
\ No newline at end of file
diff --git a/src/protocol-detail/info.cpp b/src/detail/info-encoder.cpp
similarity index 87%
rename from src/protocol-detail/info.cpp
rename to src/detail/info-encoder.cpp
index beef51d..7939526 100644
--- a/src/protocol-detail/info.cpp
+++ b/src/detail/info-encoder.cpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "info.hpp"
+#include "info-encoder.hpp"
 
 namespace ndn {
 namespace ndncert {
 
 Block
-INFO::encodeDataContent(const CaProfile& caConfig, const security::Certificate& certificate)
+InfoEncoder::encodeDataContent(const CaProfile& caConfig, const security::Certificate& certificate)
 {
-  auto content = makeEmptyBlock(tlv::Content);
+  auto content = makeEmptyBlock(ndn::tlv::Content);
   content.push_back(makeNestedBlock(tlv::CaPrefix, caConfig.m_caPrefix));
   std::string caInfo = "";
   if (caConfig.m_caInfo == "") {
@@ -46,7 +46,7 @@
 }
 
 CaProfile
-INFO::decodeDataContent(const Block& block)
+InfoEncoder::decodeDataContent(const Block& block)
 {
   CaProfile result;
   block.parse();
@@ -54,7 +54,7 @@
     switch (item.type()) {
     case tlv::CaPrefix:
       item.parse();
-      result.m_caPrefix.wireDecode(item.get(tlv::Name));
+      result.m_caPrefix.wireDecode(item.get(ndn::tlv::Name));
       break;
     case tlv::CaInfo:
       result.m_caInfo = readString(item);
@@ -67,7 +67,7 @@
       break;
     case tlv::CaCertificate:
       item.parse();
-      result.m_cert = std::make_shared<security::Certificate>(item.get(tlv::Data));
+      result.m_cert = std::make_shared<security::Certificate>(item.get(ndn::tlv::Data));
       break;
     default:
       continue;
diff --git a/src/protocol-detail/info.hpp b/src/detail/info-encoder.hpp
similarity index 90%
rename from src/protocol-detail/info.hpp
rename to src/detail/info-encoder.hpp
index 67a38bf..8c3ed09 100644
--- a/src/protocol-detail/info.hpp
+++ b/src/detail/info-encoder.hpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#ifndef NDNCERT_PROTOCOL_DETAIL_INFO_HPP
-#define NDNCERT_PROTOCOL_DETAIL_INFO_HPP
+#ifndef NDNCERT_DETAIL_INFO_ENCODER_HPP
+#define NDNCERT_DETAIL_INFO_ENCODER_HPP
 
 #include "../configuration.hpp"
 
 namespace ndn {
 namespace ndncert {
 
-class INFO
+class InfoEncoder
 {
 public:
   /**
@@ -45,4 +45,4 @@
 } // namespace ndncert
 } // namespace ndn
 
-#endif // NDNCERT_PROTOCOL_DETAIL_HPP
\ No newline at end of file
+#endif // NDNCERT_DETAIL_INFO_ENCODER_HPP
\ No newline at end of file
diff --git a/src/protocol-detail/ndncert-common.cpp b/src/detail/ndncert-common.cpp
similarity index 100%
rename from src/protocol-detail/ndncert-common.cpp
rename to src/detail/ndncert-common.cpp
diff --git a/src/protocol-detail/ndncert-common.hpp b/src/detail/ndncert-common.hpp
similarity index 81%
rename from src/protocol-detail/ndncert-common.hpp
rename to src/detail/ndncert-common.hpp
index cf19bb9..5805f74 100644
--- a/src/protocol-detail/ndncert-common.hpp
+++ b/src/detail/ndncert-common.hpp
@@ -58,38 +58,41 @@
 #include <boost/property_tree/ptree.hpp>
 
 namespace ndn {
-namespace tlv {
-  enum : uint32_t {
-    CaPrefix = 129,
-    CaInfo = 131,
-    ParameterKey = 133,
-    ParameterValue = 135,
-    CaCertificate = 137,
-    MaxValidityPeriod = 139,
-    ProbeResponse = 141,
-    MaxSuffixLength = 143,
-    EcdhPub = 145,
-    CertRequest = 147,
-    Salt = 149,
-    RequestId = 151,
-    Challenge = 153,
-    Status = 155,
-    InitializationVector = 157,
-    EncryptedPayload = 159,
-    SelectedChallenge = 161,
-    ChallengeStatus = 163,
-    RemainingTries = 165,
-    RemainingTime = 167,
-    IssuedCertName = 169,
-    ErrorCode = 171,
-    ErrorInfo = 173,
-    AuthenticationTag = 175,
-    CertToRevoke = 177,
-    ProbeRedirect = 179
- };
-} // namespace tlv
 namespace ndncert {
 
+namespace tlv {
+
+enum : uint32_t {
+  CaPrefix = 129,
+  CaInfo = 131,
+  ParameterKey = 133,
+  ParameterValue = 135,
+  CaCertificate = 137,
+  MaxValidityPeriod = 139,
+  ProbeResponse = 141,
+  MaxSuffixLength = 143,
+  EcdhPub = 145,
+  CertRequest = 147,
+  Salt = 149,
+  RequestId = 151,
+  Challenge = 153,
+  Status = 155,
+  InitializationVector = 157,
+  EncryptedPayload = 159,
+  SelectedChallenge = 161,
+  ChallengeStatus = 163,
+  RemainingTries = 165,
+  RemainingTime = 167,
+  IssuedCertName = 169,
+  ErrorCode = 171,
+  ErrorInfo = 173,
+  AuthenticationTag = 175,
+  CertToRevoke = 177,
+  ProbeRedirect = 179
+};
+
+} // namespace tlv
+
 using boost::noncopyable;
 typedef boost::property_tree::ptree JsonSection;
 
diff --git a/src/protocol-detail/new-renew-revoke.cpp b/src/detail/new-renew-revoke-encoder.cpp
similarity index 84%
rename from src/protocol-detail/new-renew-revoke.cpp
rename to src/detail/new-renew-revoke-encoder.cpp
index 8c2921e..3afe2ad 100644
--- a/src/protocol-detail/new-renew-revoke.cpp
+++ b/src/detail/new-renew-revoke-encoder.cpp
@@ -18,12 +18,10 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "new-renew-revoke.hpp"
-#include "ndncert-common.hpp"
+#include "new-renew-revoke-encoder.hpp"
 #include <ndn-cxx/security/transform/base64-encode.hpp>
 #include <ndn-cxx/security/transform/buffer-source.hpp>
 #include <ndn-cxx/security/transform/stream-sink.hpp>
-#include <ndn-cxx/util/logger.hpp>
 
 namespace ndn {
 namespace ndncert {
@@ -31,9 +29,9 @@
 NDN_LOG_INIT(ndncert.encoding.new_renew_revoke);
 
 Block
-NEW_RENEW_REVOKE::encodeApplicationParameters(RequestType requestType, const std::string& ecdhPub, const security::Certificate& certRequest)
+NewRenewRevokeEncoder::encodeApplicationParameters(RequestType requestType, const std::string& ecdhPub, const security::Certificate& certRequest)
 {
-  Block request = makeEmptyBlock(tlv::ApplicationParameters);
+  Block request = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   std::stringstream ss;
   try {
     security::transform::bufferSource(certRequest.wireEncode().wire(), certRequest.wireEncode().size())
@@ -56,7 +54,7 @@
 }
 
 void
-NEW_RENEW_REVOKE::decodeApplicationParameters(const Block& payload, RequestType requestType, std::string& ecdhPub,
+NewRenewRevokeEncoder::decodeApplicationParameters(const Block& payload, RequestType requestType, std::string& ecdhPub,
                                               shared_ptr<security::Certificate>& clientCert) {
   payload.parse();
 
@@ -70,16 +68,16 @@
   }
   requestPayload.parse();
 
-  security::Certificate cert = security::Certificate(requestPayload.get(tlv::Data));
+  security::Certificate cert = security::Certificate(requestPayload.get(ndn::tlv::Data));
   clientCert =std::make_shared<security::Certificate>(cert);
 }
 
 Block
-NEW_RENEW_REVOKE::encodeDataContent(const std::string& ecdhKey, const std::string& salt,
+NewRenewRevokeEncoder::encodeDataContent(const std::string& ecdhKey, const std::string& salt,
                                     const CaState& request,
                                     const std::list<std::string>& challenges)
 {
-  Block response = makeEmptyBlock(tlv::Content);
+  Block response = makeEmptyBlock(ndn::tlv::Content);
   response.push_back(makeStringBlock(tlv::EcdhPub, ecdhKey));
   response.push_back(makeStringBlock(tlv::Salt, salt));
   response.push_back(makeStringBlock(tlv::RequestId, request.m_requestId));
@@ -91,8 +89,8 @@
   return response;
 }
 
-NEW_RENEW_REVOKE::DecodedData
-NEW_RENEW_REVOKE::decodeDataContent(const Block& content)
+NewRenewRevokeEncoder::DecodedData
+NewRenewRevokeEncoder::decodeDataContent(const Block& content)
 {
   content.parse();
   const auto& ecdhKey = readString(content.get(tlv::EcdhPub));
diff --git a/src/protocol-detail/new-renew-revoke.hpp b/src/detail/new-renew-revoke-encoder.hpp
similarity index 90%
rename from src/protocol-detail/new-renew-revoke.hpp
rename to src/detail/new-renew-revoke-encoder.hpp
index 53d60ac..075114f 100644
--- a/src/protocol-detail/new-renew-revoke.hpp
+++ b/src/detail/new-renew-revoke-encoder.hpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#ifndef NDNCERT_PROTOCOL_DETAIL_NEW_RENEW_REVOKE_HPP
-#define NDNCERT_PROTOCOL_DETAIL_NEW_RENEW_REVOKE_HPP
+#ifndef NDNCERT_DETAIL_NEW_RENEW_REVOKE_ENCODER_HPP
+#define NDNCERT_DETAIL_NEW_RENEW_REVOKE_ENCODER_HPP
 
 #include "../ca-state.hpp"
 
 namespace ndn {
 namespace ndncert {
 
-class NEW_RENEW_REVOKE
+class NewRenewRevokeEncoder
 {
 public:
   static Block
@@ -53,4 +53,4 @@
 } // namespace ndncert
 } // namespace ndn
 
-#endif // NDNCERT_PROTOCOL_DETAIL_NEW_RENEW_REVOKE_HPP
\ No newline at end of file
+#endif // NDNCERT_DETAIL_NEW_RENEW_REVOKE_HPP
\ No newline at end of file
diff --git a/src/protocol-detail/probe.cpp b/src/detail/probe-encoder.cpp
similarity index 85%
rename from src/protocol-detail/probe.cpp
rename to src/detail/probe-encoder.cpp
index 3426145..ce3c3fe 100644
--- a/src/protocol-detail/probe.cpp
+++ b/src/detail/probe-encoder.cpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "probe.hpp"
+#include "probe-encoder.hpp"
 
 namespace ndn {
 namespace ndncert {
 
 Block
-PROBE::encodeApplicationParameters(std::vector<std::tuple<std::string, std::string>>&& parameters)
+ProbeEncoder::encodeApplicationParameters(std::vector<std::tuple<std::string, std::string>>&& parameters)
 {
-  auto content = makeEmptyBlock(tlv::ApplicationParameters);
+  auto content = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   for (size_t i = 0; i < parameters.size(); ++i) {
     content.push_back(makeStringBlock(tlv::ParameterKey, std::get<0>(parameters[i])));
     content.push_back(makeStringBlock(tlv::ParameterValue, std::get<1>(parameters[i])));
@@ -36,7 +36,7 @@
 }
 
 std::vector<std::tuple<std::string, std::string>>
-PROBE::decodeApplicationParameters(const Block& block)
+ProbeEncoder::decodeApplicationParameters(const Block& block)
 {
   std::vector<std::tuple<std::string, std::string>> result;
   block.parse();
@@ -49,10 +49,10 @@
 }
 
 Block
-PROBE::encodeDataContent(const std::vector<Name>& identifiers, boost::optional<size_t> maxSuffixLength,
+ProbeEncoder::encodeDataContent(const std::vector<Name>& identifiers, boost::optional<size_t> maxSuffixLength,
                          boost::optional<std::vector<std::shared_ptr<security::Certificate>>> redirectionItems)
 {
-  Block content = makeEmptyBlock(tlv::Content);
+  Block content = makeEmptyBlock(ndn::tlv::Content);
   for (const auto& name : identifiers) {
     Block item(tlv::ProbeResponse);
     item.push_back(name.wireEncode());
@@ -71,7 +71,7 @@
 }
 
 void
-PROBE::decodeDataContent(const Block& block,
+ProbeEncoder::decodeDataContent(const Block& block,
                          std::vector<std::pair<Name, int>>& availableNames,
                          std::vector<Name>& availableRedirection)
 {
@@ -82,7 +82,7 @@
       Name elementName;
       int maxSuffixLength = 0;
       for (const auto& subBlock: item.elements()) {
-          if (subBlock.type() == tlv::Name) {
+          if (subBlock.type() == ndn::tlv::Name) {
               if (!elementName.empty()) {
                   NDN_THROW(std::runtime_error("Invalid probe format"));
               }
diff --git a/src/protocol-detail/probe.hpp b/src/detail/probe-encoder.hpp
similarity index 91%
rename from src/protocol-detail/probe.hpp
rename to src/detail/probe-encoder.hpp
index 52e6cb6..b56e458 100644
--- a/src/protocol-detail/probe.hpp
+++ b/src/detail/probe-encoder.hpp
@@ -18,15 +18,15 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#ifndef NDNCERT_PROTOCOL_DETAIL_PROBE_HPP
-#define NDNCERT_PROTOCOL_DETAIL_PROBE_HPP
+#ifndef NDNCERT_DETAIL_PROBE_ENCODER_HPP
+#define NDNCERT_DETAIL_PROBE_ENCODER_HPP
 
 #include "../configuration.hpp"
 
 namespace ndn {
 namespace ndncert {
 
-class PROBE
+class ProbeEncoder
 {
 public:
   // For Client use
@@ -50,4 +50,4 @@
 } // namespace ndncert
 } // namespace ndn
 
-#endif // NDNCERT_PROTOCOL_DETAIL_HPP
\ No newline at end of file
+#endif // NDNCERT_DETAIL_PROBE_ENCODER_HPP
\ No newline at end of file
diff --git a/src/requester-state.hpp b/src/requester-state.hpp
index f77b591..6e8be3d 100644
--- a/src/requester-state.hpp
+++ b/src/requester-state.hpp
@@ -21,8 +21,8 @@
 #ifndef NDNCERT_REQUESTER_STATE_HPP
 #define NDNCERT_REQUESTER_STATE_HPP
 
-#include "protocol-detail/ndncert-common.hpp"
-#include "protocol-detail/crypto-helper.hpp"
+#include "detail/ndncert-common.hpp"
+#include "detail/crypto-helper.hpp"
 #include "configuration.hpp"
 
 namespace ndn {
diff --git a/src/requester.cpp b/src/requester.cpp
index 1f67f97..632c53d 100644
--- a/src/requester.cpp
+++ b/src/requester.cpp
@@ -20,12 +20,12 @@
 
 #include "requester.hpp"
 #include "identity-challenge/challenge-module.hpp"
-#include "protocol-detail/enc-tlv.hpp"
-#include "protocol-detail/challenge.hpp"
-#include "protocol-detail/error.hpp"
-#include "protocol-detail/info.hpp"
-#include "protocol-detail/new-renew-revoke.hpp"
-#include "protocol-detail/probe.hpp"
+#include "detail/enc-tlv.hpp"
+#include "detail/challenge-encoder.hpp"
+#include "detail/error-encoder.hpp"
+#include "detail/info-encoder.hpp"
+#include "detail/new-renew-revoke-encoder.hpp"
+#include "detail/probe-encoder.hpp"
 #include <ndn-cxx/security/signing-helpers.hpp>
 #include <ndn-cxx/security/transform/base64-encode.hpp>
 #include <ndn-cxx/security/transform/buffer-source.hpp>
@@ -64,7 +64,7 @@
 boost::optional<CaProfile>
 Requester::onCaProfileResponse(const Data& reply)
 {
-  auto caItem = INFO::decodeDataContent(reply.getContent());
+  auto caItem = InfoEncoder::decodeDataContent(reply.getContent());
   if (!security::verifySignature(reply, *caItem.m_cert)) {
     NDN_LOG_ERROR("Cannot verify replied Data packet signature.");
     NDN_THROW(std::runtime_error("Cannot verify replied Data packet signature."));
@@ -76,7 +76,7 @@
 boost::optional<CaProfile>
 Requester::onCaProfileResponseAfterRedirection(const Data& reply, const Name& caCertFullName)
 {
-  auto caItem = INFO::decodeDataContent(reply.getContent());
+  auto caItem = InfoEncoder::decodeDataContent(reply.getContent());
   auto certBlock = caItem.m_cert->wireEncode();
   caItem.m_cert = std::make_shared<security::Certificate>(certBlock);
   if (caItem.m_cert->getFullName() != caCertFullName) {
@@ -94,7 +94,7 @@
   auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
-  interest->setApplicationParameters(PROBE::encodeApplicationParameters(std::move(probeInfo)));
+  interest->setApplicationParameters(ProbeEncoder::encodeApplicationParameters(std::move(probeInfo)));
   return interest;
 }
 
@@ -108,7 +108,7 @@
     return;
   }
   processIfError(reply);
-  PROBE::decodeDataContent(reply.getContent(), identityNames, otherCas);
+  ProbeEncoder::decodeDataContent(reply.getContent(), identityNames, otherCas);
 }
 
 shared_ptr<Interest>
@@ -151,7 +151,7 @@
   // generate certificate request
   security::Certificate certRequest;
   certRequest.setName(Name(keyName).append("cert-request").appendVersion());
-  certRequest.setContentType(tlv::ContentType_Key);
+  certRequest.setContentType(ndn::tlv::ContentType_Key);
   certRequest.setContent(state.m_keyPair.getPublicKey().data(), state.m_keyPair.getPublicKey().size());
   SignatureInfo signatureInfo;
   signatureInfo.setValidityPeriod(security::ValidityPeriod(notBefore, notAfter));
@@ -164,7 +164,7 @@
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
   interest->setApplicationParameters(
-      NEW_RENEW_REVOKE::encodeApplicationParameters(RequestType::NEW, state.m_ecdh.getBase64PubKey(), certRequest));
+      NewRenewRevokeEncoder::encodeApplicationParameters(RequestType::NEW, state.m_ecdh.getBase64PubKey(), certRequest));
 
   // sign the Interest packet
   state.m_keyChain.sign(*interest, signingByKey(keyName));
@@ -184,7 +184,7 @@
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
   interest->setApplicationParameters(
-      NEW_RENEW_REVOKE::encodeApplicationParameters(RequestType::REVOKE, state.m_ecdh.getBase64PubKey(), certificate));
+      NewRenewRevokeEncoder::encodeApplicationParameters(RequestType::REVOKE, state.m_ecdh.getBase64PubKey(), certificate));
   return interest;
 }
 
@@ -198,7 +198,7 @@
   processIfError(reply);
 
   auto contentTLV = reply.getContent();
-  const auto& content = NEW_RENEW_REVOKE::decodeDataContent(contentTLV);
+  const auto& content = NewRenewRevokeEncoder::decodeDataContent(contentTLV);
 
   // ECDH and HKDF
   state.m_ecdh.deriveSecret(content.ecdhKey);
@@ -242,7 +242,7 @@
   interest->setCanBePrefix(false);
 
   // encrypt the Interest parameters
-  auto paramBlock = encodeBlockWithAesGcm128(tlv::ApplicationParameters, state.m_aesKey,
+  auto paramBlock = encodeBlockWithAesGcm128(ndn::tlv::ApplicationParameters, state.m_aesKey,
                                              challengeParams.value(), challengeParams.value_size(),
                                              (const uint8_t*)"test", strlen("test"));
   interest->setApplicationParameters(paramBlock);
@@ -260,7 +260,7 @@
   processIfError(reply);
   auto result = decodeBlockWithAesGcm128(reply.getContent(), state.m_aesKey, (const uint8_t*)"test", strlen("test"));
   Block contentTLV = makeBinaryBlock(tlv::EncryptedPayload, result.data(), result.size());
-  CHALLENGE::decodeDataContent(contentTLV, state);
+  ChallengeEncoder::decodeDataContent(contentTLV, state);
 }
 
 shared_ptr<Interest>
@@ -308,7 +308,7 @@
 void
 Requester::processIfError(const Data& data)
 {
-  auto errorInfo = ErrorTLV::decodefromDataContent(data.getContent());
+  auto errorInfo = ErrorEncoder::decodefromDataContent(data.getContent());
   if (std::get<0>(errorInfo) == ErrorCode::NO_ERROR) {
     return;
   }
diff --git a/tests/identity-management-fixture.cpp b/tests/identity-management-fixture.cpp
index db99d5a..8ca0545 100644
--- a/tests/identity-management-fixture.cpp
+++ b/tests/identity-management-fixture.cpp
@@ -111,7 +111,7 @@
   certificate.setName(certificateName);
 
   // set metainfo
-  certificate.setContentType(tlv::ContentType_Key);
+  certificate.setContentType(ndn::tlv::ContentType_Key);
   certificate.setFreshnessPeriod(1_h);
 
   // set content
diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index 64a0d05..1fe853b 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -20,7 +20,7 @@
 
 #include "ca-module.hpp"
 #include "identity-challenge/challenge-pin.hpp"
-#include "protocol-detail/info.hpp"
+#include "detail/info-encoder.hpp"
 #include "requester.hpp"
 #include "test-common.hpp"
 
@@ -63,7 +63,7 @@
       std::cout << "CA Config MetaData Size: " << response.wireEncode().size() << std::endl;
       auto block = response.getContent();
       block.parse();
-      infoInterest =std::make_shared<Interest>(Name(block.get(tlv::Name)).appendSegment(0));
+      infoInterest =std::make_shared<Interest>(Name(block.get(ndn::tlv::Name)).appendSegment(0));
       infoInterest->setCanBePrefix(false);
       std::cout << "CA Config fetch Interest Size: " << infoInterest->wireEncode().size() << std::endl;
     }
@@ -73,7 +73,7 @@
       BOOST_CHECK(security::verifySignature(response, cert));
       auto contentBlock = response.getContent();
       contentBlock.parse();
-      auto caItem = INFO::decodeDataContent(contentBlock);
+      auto caItem = InfoEncoder::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");
diff --git a/tests/unit-tests/ca-memory.t.cpp b/tests/unit-tests/ca-memory.t.cpp
index 04d37a4..83c8f00 100644
--- a/tests/unit-tests/ca-memory.t.cpp
+++ b/tests/unit-tests/ca-memory.t.cpp
@@ -37,7 +37,7 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeStringBlock(tlv::ContentType_Key, "PretendItIsAKey"));
+  CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeStringBlock(ndn::tlv::ContentType_Key, "PretendItIsAKey"));
   BOOST_CHECK_NO_THROW(storage.addRequest(request1));
 
   // get operation
@@ -52,7 +52,7 @@
 
   // update operation
   CaState request2(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert1,
-                   "email", "test", time::system_clock::now(), 3, time::seconds(3600), std::move(json), makeStringBlock(tlv::ContentType_Key, "PretendItIsAKey"));
+                   "email", "test", time::system_clock::now(), 3, time::seconds(3600), std::move(json), makeStringBlock(ndn::tlv::ContentType_Key, "PretendItIsAKey"));
   storage.updateRequest(request2);
   result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request2.m_cert, result.m_cert);
@@ -62,7 +62,7 @@
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  CaState request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2, makeStringBlock(tlv::ContentType_Key, "PretendItIsAKey"));
+  CaState request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2, makeStringBlock(ndn::tlv::ContentType_Key, "PretendItIsAKey"));
   storage.addRequest(request3);
 
   // list operation
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 087a800..1dd39f4 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -22,7 +22,7 @@
 #include "identity-challenge/challenge-module.hpp"
 #include "identity-challenge/challenge-email.hpp"
 #include "identity-challenge/challenge-pin.hpp"
-#include "protocol-detail/info.hpp"
+#include "detail/info-encoder.hpp"
 #include "requester.hpp"
 #include "test-common.hpp"
 
@@ -73,7 +73,7 @@
       count++;
       auto block = response.getContent();
       block.parse();
-      infoInterest =std::make_shared<Interest>(Name(block.get(tlv::Name)).appendSegment(0));
+      infoInterest =std::make_shared<Interest>(Name(block.get(ndn::tlv::Name)).appendSegment(0));
       infoInterest->setCanBePrefix(false);
     }
     else {
@@ -81,7 +81,7 @@
       BOOST_CHECK(security::verifySignature(response, cert));
       auto contentBlock = response.getContent();
       contentBlock.parse();
-      auto caItem = INFO::decodeDataContent(contentBlock);
+      auto caItem = InfoEncoder::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");
@@ -110,7 +110,7 @@
   Interest interest("/ndn/CA/PROBE");
   interest.setCanBePrefix(false);
 
-  Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
+  Block paramTLV = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, "name"));
   paramTLV.push_back(makeStringBlock(tlv::ParameterValue, "zhiyi"));
   paramTLV.encode();
@@ -126,7 +126,7 @@
     Block probeResponse = contentBlock.get(tlv::ProbeResponse);
     probeResponse.parse();
     Name caName;
-    caName.wireDecode(probeResponse.get(tlv::Name));
+    caName.wireDecode(probeResponse.get(ndn::tlv::Name));
     BOOST_CHECK_EQUAL(caName.size(), 2);
   });
   face.receive(interest);
@@ -148,7 +148,7 @@
   Interest interest("/ndn/CA/PROBE");
   interest.setCanBePrefix(false);
 
-  Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
+  Block paramTLV = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, "name"));
   paramTLV.push_back(makeStringBlock(tlv::ParameterValue, "zhiyi"));
   paramTLV.encode();
@@ -164,7 +164,7 @@
     auto probeResponseBlock = contentBlock.get(tlv::ProbeResponse);
     probeResponseBlock.parse();
     Name caPrefix;
-    caPrefix.wireDecode(probeResponseBlock.get(tlv::Name));
+    caPrefix.wireDecode(probeResponseBlock.get(ndn::tlv::Name));
     BOOST_CHECK(caPrefix != "");
   });
   face.receive(interest);
@@ -186,7 +186,7 @@
   Interest interest("/ndn/CA/PROBE");
   interest.setCanBePrefix(false);
 
-  Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
+  Block paramTLV = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, "name"));
   paramTLV.push_back(makeStringBlock(tlv::ParameterValue, "zhiyi"));
   paramTLV.encode();
@@ -457,14 +457,14 @@
   auto clientKey = clientIdentity.getDefaultKey();
   security::Certificate clientCert;
   clientCert.setName(Name(clientKey.getName()).append("cert-request").appendVersion());
-  clientCert.setContentType(tlv::ContentType_Key);
+  clientCert.setContentType(ndn::tlv::ContentType_Key);
   clientCert.setFreshnessPeriod(time::hours(24));
   clientCert.setContent(clientKey.getPublicKey().data(), clientKey.getPublicKey().size());
   SignatureInfo signatureInfo;
   signatureInfo.setValidityPeriod(security::ValidityPeriod(time::system_clock::now(),
                                                            time::system_clock::now() + time::hours(10)));
   m_keyChain.sign(clientCert, signingByKey(clientKey.getName()).setSignatureInfo(signatureInfo));
-  CaState certRequest(Name("/ndn"), "122", RequestType::NEW, Status::SUCCESS, clientCert, makeEmptyBlock(tlv::ContentType_Key));
+  CaState certRequest(Name("/ndn"), "122", RequestType::NEW, Status::SUCCESS, clientCert, makeEmptyBlock(ndn::tlv::ContentType_Key));
   auto issuedCert = ca.issueCertificate(certRequest);
 
   CaProfile item;
@@ -520,7 +520,7 @@
   auto clientKey = clientIdentity.getDefaultKey();
   security::Certificate clientCert;
   clientCert.setName(Name(clientKey.getName()).append("NDNCERT").append(std::to_string(1473283247810732701)));
-  clientCert.setContentType(tlv::ContentType_Key);
+  clientCert.setContentType(ndn::tlv::ContentType_Key);
   clientCert.setFreshnessPeriod(time::hours(24));
   clientCert.setContent(clientKey.getPublicKey().data(), clientKey.getPublicKey().size());
   SignatureInfo signatureInfo;
diff --git a/tests/unit-tests/ca-sqlite.t.cpp b/tests/unit-tests/ca-sqlite.t.cpp
index 8e81a56..56c7501 100644
--- a/tests/unit-tests/ca-sqlite.t.cpp
+++ b/tests/unit-tests/ca-sqlite.t.cpp
@@ -36,7 +36,7 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeStringBlock(tlv::ContentType_Key, "PretendItIsAKey"));
+  CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeStringBlock(ndn::tlv::ContentType_Key, "PretendItIsAKey"));
   storage.addRequest(request1);
 
   // get operation
@@ -50,7 +50,7 @@
   JsonSection json;
   json.put("test", "4567");
   CaState request2(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert1,
-                   "email", "test", time::system_clock::now(), 3, time::seconds(3600), std::move(json), makeEmptyBlock(tlv::ContentType_Key));
+                   "email", "test", time::system_clock::now(), 3, time::seconds(3600), std::move(json), makeEmptyBlock(ndn::tlv::ContentType_Key));
   storage.updateRequest(request2);
   result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request2.m_cert, result.m_cert);
@@ -60,7 +60,7 @@
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  CaState request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2, makeStringBlock(tlv::ContentType_Key, "PretendItIsAKey"));
+  CaState request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2, makeStringBlock(ndn::tlv::ContentType_Key, "PretendItIsAKey"));
   storage.addRequest(request3);
 
   // list operation
@@ -85,7 +85,7 @@
     auto cert1 = key1.getDefaultCertificate();
 
     // add operation
-    CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeEmptyBlock(tlv::ContentType_Key));
+    CaState request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, makeEmptyBlock(ndn::tlv::ContentType_Key));
     BOOST_CHECK_NO_THROW(storage.addRequest(request1));
     // add again
     BOOST_CHECK_THROW(storage.addRequest(request1), std::runtime_error);
diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index 9c5ee14..efe956b 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -53,7 +53,7 @@
   auto identityA = addIdentity(Name("/example"));
   auto keyA = identityA.getDefaultKey();
   auto certA = key.getDefaultCertificate();
-  CaState state(Name("/example"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, certA, makeEmptyBlock(tlv::ContentType_Key));
+  CaState state(Name("/example"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, certA, makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   // create requester's credential
   auto identityB = addIdentity(Name("/trust/cert"));
diff --git a/tests/unit-tests/challenge-email.t.cpp b/tests/unit-tests/challenge-email.t.cpp
index 446f6c5..4bac092 100644
--- a/tests/unit-tests/challenge-email.t.cpp
+++ b/tests/unit-tests/challenge-email.t.cpp
@@ -45,7 +45,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(tlv::ContentType_Key));
+  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -94,7 +94,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(tlv::ContentType_Key));
+  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -117,7 +117,7 @@
   json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
   CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert,
                   "email", ChallengeEmail::NEED_CODE, time::system_clock::now(),
-                  3, time::seconds(3600), std::move(json), makeEmptyBlock(tlv::ContentType_Key));
+                  3, time::seconds(3600), std::move(json), makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_CODE));
@@ -139,7 +139,7 @@
   json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
   CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert,
                   "email", ChallengeEmail::NEED_CODE, time::system_clock::now(),
-                  3, time::seconds(3600), std::move(json), makeEmptyBlock(tlv::ContentType_Key));
+                  3, time::seconds(3600), std::move(json), makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_CODE));
diff --git a/tests/unit-tests/challenge-pin.t.cpp b/tests/unit-tests/challenge-pin.t.cpp
index 5d4b151..3655cca 100644
--- a/tests/unit-tests/challenge-pin.t.cpp
+++ b/tests/unit-tests/challenge-pin.t.cpp
@@ -38,7 +38,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(tlv::ContentType_Key));
+  CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert, makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   ChallengePin challenge;
   challenge.handleChallengeRequest(makeEmptyBlock(tlv::EncryptedPayload), request);
@@ -57,7 +57,7 @@
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
   CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert,
                   "pin", ChallengePin::NEED_CODE, time::system_clock::now(),
-                  3, time::seconds(3600), std::move(secret), makeEmptyBlock(tlv::ContentType_Key));
+                  3, time::seconds(3600), std::move(secret), makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengePin::PARAMETER_KEY_CODE));
@@ -79,7 +79,7 @@
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
   CaState request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, cert,
                   "pin", ChallengePin::NEED_CODE, time::system_clock::now(),
-                  3, time::seconds(3600), std::move(secret), makeEmptyBlock(tlv::ContentType_Key));
+                  3, time::seconds(3600), std::move(secret), makeEmptyBlock(ndn::tlv::ContentType_Key));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengePin::PARAMETER_KEY_CODE));
diff --git a/tests/unit-tests/configuration.t.cpp b/tests/unit-tests/configuration.t.cpp
index a1fa54f..7d5c901 100644
--- a/tests/unit-tests/configuration.t.cpp
+++ b/tests/unit-tests/configuration.t.cpp
@@ -19,7 +19,7 @@
  */
 
 #include "configuration.hpp"
-#include "protocol-detail/info.hpp"
+#include "detail/info-encoder.hpp"
 #include "test-common.hpp"
 
 namespace ndn {
diff --git a/tests/unit-tests/crypto-helper.t.cpp b/tests/unit-tests/crypto-helper.t.cpp
index f425f64..313969e 100644
--- a/tests/unit-tests/crypto-helper.t.cpp
+++ b/tests/unit-tests/crypto-helper.t.cpp
@@ -18,7 +18,7 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "protocol-detail/crypto-helper.hpp"
+#include "detail/crypto-helper.hpp"
 #include "test-common.hpp"
 
 namespace ndn {
diff --git a/tests/unit-tests/enc-tlv.t.cpp b/tests/unit-tests/enc-tlv.t.cpp
index 60c683c..314bf2b 100644
--- a/tests/unit-tests/enc-tlv.t.cpp
+++ b/tests/unit-tests/enc-tlv.t.cpp
@@ -18,8 +18,8 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "protocol-detail/enc-tlv.hpp"
-#include "protocol-detail/crypto-helper.hpp"
+#include "detail/enc-tlv.hpp"
+#include "detail/crypto-helper.hpp"
 #include "test-common.hpp"
 
 namespace ndn {
@@ -34,7 +34,7 @@
                          0x31, 0x1e, 0x41, 0x92, 0x96, 0x6f, 0xee, 0x92};
   const std::string plaintext = "alongstringalongstringalongstringalongstringalongstringalongstringalongstringalongstring";
   const std::string associatedData = "test";
-  auto block = encodeBlockWithAesGcm128(tlv::Content, key, (uint8_t*)plaintext.c_str(), plaintext.size(),
+  auto block = encodeBlockWithAesGcm128(ndn::tlv::Content, key, (uint8_t*)plaintext.c_str(), plaintext.size(),
                                         (uint8_t*)associatedData.c_str(), associatedData.size());
   auto decoded = decodeBlockWithAesGcm128(block, key, (uint8_t*)associatedData.c_str(), associatedData.size());
   BOOST_CHECK_EQUAL(plaintext, std::string((char*)decoded.get<uint8_t>(), decoded.size()));
diff --git a/tests/unit-tests/protocol-detail.t.cpp b/tests/unit-tests/protocol-detail.t.cpp
index a10b54b..6157d61 100644
--- a/tests/unit-tests/protocol-detail.t.cpp
+++ b/tests/unit-tests/protocol-detail.t.cpp
@@ -18,10 +18,10 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
-#include "protocol-detail/info.hpp"
-#include "protocol-detail/probe.hpp"
-#include "protocol-detail/new-renew-revoke.hpp"
-#include "protocol-detail/challenge.hpp"
+#include "detail/info-encoder.hpp"
+#include "detail/probe-encoder.hpp"
+#include "detail/new-renew-revoke-encoder.hpp"
+#include "detail/challenge-encoder.hpp"
 #include "test-common.hpp"
 
 namespace ndn {
@@ -37,8 +37,8 @@
 
   const auto& identity = addIdentity("/test");
   const auto& cert = identity.getDefaultKey().getDefaultCertificate();
-  auto encoded = INFO::encodeDataContent(config.m_caItem, cert);
-  auto decoded = INFO::decodeDataContent(encoded);
+  auto encoded = InfoEncoder::encodeDataContent(config.m_caItem, cert);
+  auto decoded = InfoEncoder::decodeDataContent(encoded);
   BOOST_CHECK_EQUAL(config.m_caItem.m_caPrefix, decoded.m_caPrefix);
   BOOST_CHECK_EQUAL(config.m_caItem.m_caInfo, decoded.m_caInfo);
   BOOST_CHECK_EQUAL(config.m_caItem.m_maxValidityPeriod, decoded.m_maxValidityPeriod);
@@ -51,8 +51,8 @@
 {
   std::vector<std::tuple<std::string, std::string>> parameters;
   parameters.push_back(std::make_tuple("email", "zhiyi@cs.ucla.edu"));
-  auto appParametersTlv = PROBE::encodeApplicationParameters(std::move(parameters));
-  auto decodedParameters = PROBE::decodeApplicationParameters(appParametersTlv);
+  auto appParametersTlv = ProbeEncoder::encodeApplicationParameters(std::move(parameters));
+  auto decodedParameters = ProbeEncoder::decodeApplicationParameters(appParametersTlv);
   BOOST_CHECK_EQUAL(std::get<0>(decodedParameters[0]), "email");
   BOOST_CHECK_EQUAL(std::get<1>(decodedParameters[0]), "zhiyi@cs.ucla.edu");
   BOOST_CHECK_EQUAL(decodedParameters.size(), 1);
@@ -61,10 +61,10 @@
   config.load("tests/unit-tests/config-files/config-ca-5");
   std::vector<Name> ids;
   ids.push_back(Name("/example"));
-  auto contentTlv = PROBE::encodeDataContent(ids, 2, config.m_redirection);
+  auto contentTlv = ProbeEncoder::encodeDataContent(ids, 2, config.m_redirection);
   std::vector<Name> decodedRedirectionItems;
   std::vector<std::pair<Name, int>> decodedIds;
-  PROBE::decodeDataContent(contentTlv, decodedIds, decodedRedirectionItems);
+  ProbeEncoder::decodeDataContent(contentTlv, decodedIds, decodedRedirectionItems);
   BOOST_CHECK_EQUAL(decodedIds[0].first, Name("/example"));
   BOOST_CHECK_EQUAL(decodedIds[0].second, 2);
   BOOST_CHECK_EQUAL(decodedRedirectionItems[0], config.m_redirection->at(0)->getFullName());
diff --git a/tests/unit-tests/requester.t.cpp b/tests/unit-tests/requester.t.cpp
index 590cb77..0ab1d67 100644
--- a/tests/unit-tests/requester.t.cpp
+++ b/tests/unit-tests/requester.t.cpp
@@ -19,8 +19,8 @@
  */
 
 #include "requester.hpp"
-#include "protocol-detail/error.hpp"
-#include "protocol-detail/probe.hpp"
+#include "detail/error-encoder.hpp"
+#include "detail/probe-encoder.hpp"
 #include "identity-challenge/challenge-module.hpp"
 #include "ca-module.hpp"
 #include "test-common.hpp"
@@ -79,7 +79,7 @@
   Data reply;
   reply.setName(Name("/site/CA/PROBE"));
   reply.setFreshnessPeriod(time::seconds(100));
-  reply.setContent(PROBE::encodeDataContent(availableNames, 3, ca.m_config.m_redirection));
+  reply.setContent(ProbeEncoder::encodeDataContent(availableNames, 3, ca.m_config.m_redirection));
   m_keyChain.sign(reply, signingByIdentity(identity));
 
   std::vector<std::pair<Name, int>> names;
@@ -112,7 +112,7 @@
   Data errorPacket;
   errorPacket.setName(Name("/site/pretend/this/is/error/packet"));
   errorPacket.setFreshnessPeriod(time::seconds(100));
-  errorPacket.setContent(ErrorTLV::encodeDataContent(ErrorCode::INVALID_PARAMETER, "This is a test."));
+  errorPacket.setContent(ErrorEncoder::encodeDataContent(ErrorCode::INVALID_PARAMETER, "This is a test."));
   m_keyChain.sign(errorPacket, signingByIdentity(identity));
 
   std::vector<std::pair<Name, int>> ids;
diff --git a/tools/ndncert-ca-server.cpp b/tools/ndncert-ca-server.cpp
index 90b26e5..c633c83 100644
--- a/tools/ndncert-ca-server.cpp
+++ b/tools/ndncert-ca-server.cpp
@@ -19,7 +19,6 @@
  */
 
 #include "ca-module.hpp"
-#include "identity-challenge/challenge-module.hpp"
 #include <boost/asio.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/program_options/options_description.hpp>
diff --git a/tools/ndncert-client.cpp b/tools/ndncert-client.cpp
index ed078a7..46bf35e 100644
--- a/tools/ndncert-client.cpp
+++ b/tools/ndncert-client.cpp
@@ -19,7 +19,7 @@
  */
 
 #include "identity-challenge/challenge-module.hpp"
-#include "protocol-detail/info.hpp"
+#include "detail/info-encoder.hpp"
 #include "requester.hpp"
 #include <ndn-cxx/security/verification-helpers.hpp>
 #include <boost/asio.hpp>