diff --git a/src/detail/ca-profile.cpp b/src/detail/ca-profile.cpp
index bd826e9..5216ae0 100644
--- a/src/detail/ca-profile.cpp
+++ b/src/detail/ca-profile.cpp
@@ -19,7 +19,7 @@
  */
 
 #include "detail/ca-profile.hpp"
-#include "identity-challenge/challenge-module.hpp"
+#include "challenge/challenge-module.hpp"
 #include <ndn-cxx/util/io.hpp>
 #include <boost/filesystem.hpp>
 
diff --git a/src/detail/ca-profile.hpp b/src/detail/ca-profile.hpp
index c9599f9..3fe0180 100644
--- a/src/detail/ca-profile.hpp
+++ b/src/detail/ca-profile.hpp
@@ -57,39 +57,37 @@
 
 public:
   /**
-   * CA Name prefix (without /CA suffix).
+   * @brief CA Name prefix (without /CA suffix).
    */
   Name m_caPrefix;
   /**
-   * CA Information.
-   * Default: "".
+   * @brief CA Information.
    */
   std::string m_caInfo;
   /**
-   * A list of parameter-keys for PROBE.
-   * Default: empty list.
+   * @brief A list of parameter-keys for PROBE.
    */
   std::list<std::string> m_probeParameterKeys;
   /**
-   * Maximum allowed validity period of the certificate being requested.
+   * @brief  Maximum allowed validity period of the certificate being requested.
+   *
    * The value is in the unit of second.
    * Default: one day (86400 seconds).
    */
   time::seconds m_maxValidityPeriod;
   /**
-   * Maximum allowed suffix length of requested name.
+   * @brief Maximum allowed suffix length of requested name.
+   *
    * E.g., When its value is 2, at most 2 name components can be assigned after m_caPrefix.
    * Default: none.
    */
   optional<size_t> m_maxSuffixLength = nullopt;
   /**
-   * A list of supported challenges. Only CA side will have m_supportedChallenges.
-   * Default: empty list.
+   * @brief A list of supported challenges. Only CA side will have m_supportedChallenges.
    */
   std::list<std::string> m_supportedChallenges;
   /**
-   * CA's certificate. Only Client side will have m_cert.
-   * Default: nullptr.
+   * @brief CA's certificate. Only Client side will have m_cert.
    */
   std::shared_ptr<security::Certificate> m_cert;
 };
diff --git a/src/detail/ca-request-state.cpp b/src/detail/ca-request-state.cpp
index 923f9be..adb453f 100644
--- a/src/detail/ca-request-state.cpp
+++ b/src/detail/ca-request-state.cpp
@@ -38,10 +38,6 @@
     return "Success";
   case Status::FAILURE:
     return "Failure";
-  case Status::NOT_STARTED:
-    return "Not started";
-  case Status::ENDED:
-    return "Ended";
   default:
     return "Unrecognized status";
   }
diff --git a/src/detail/ca-request-state.hpp b/src/detail/ca-request-state.hpp
index 27d19fa..160760e 100644
--- a/src/detail/ca-request-state.hpp
+++ b/src/detail/ca-request-state.hpp
@@ -34,9 +34,7 @@
   CHALLENGE = 1,
   PENDING = 2,
   SUCCESS = 3,
-  FAILURE = 4,
-  NOT_STARTED = 5,
-  ENDED = 6
+  FAILURE = 4
 };
 
 /**
@@ -121,7 +119,7 @@
   /**
    * @brief The status of the request.
    */
-  Status m_status = Status::NOT_STARTED;
+  Status m_status;
   /**
    * @brief The self-signed certificate in the request.
    */
diff --git a/src/detail/profile-storage.cpp b/src/detail/profile-storage.cpp
index 8fcbc9f..2917382 100644
--- a/src/detail/profile-storage.cpp
+++ b/src/detail/profile-storage.cpp
@@ -90,7 +90,7 @@
 }
 
 const std::list<CaProfile>&
-ProfileStorage::getCaProfiles() const
+ProfileStorage::getKnownProfiles() const
 {
   return m_caProfiles;
 }
diff --git a/src/detail/profile-storage.hpp b/src/detail/profile-storage.hpp
index eabb7c9..5955f15 100644
--- a/src/detail/profile-storage.hpp
+++ b/src/detail/profile-storage.hpp
@@ -28,7 +28,7 @@
 namespace requester {
 
 /**
- * @brief Represents Client configuration
+ * @brief CA profiles kept by a requester.
  * @sa https://github.com/named-data/ndncert/wiki/Client-Configuration-Sample
  */
 class ProfileStorage
@@ -53,13 +53,15 @@
   removeCaProfile(const Name& caName);
 
   /**
+   * @brief Add a new CA profile
+   *
    * Be cautious. This will add a new trust anchor for requesters.
    */
   void
   addCaProfile(const CaProfile& profile);
 
   const std::list<CaProfile>&
-  getCaProfiles() const;
+  getKnownProfiles() const;
 
 private:
   std::list<CaProfile> m_caProfiles;
