diff --git a/src/ca-state.cpp b/src/ca-state.cpp
index b8b32c0..3b05e03 100644
--- a/src/ca-state.cpp
+++ b/src/ca-state.cpp
@@ -24,6 +24,28 @@
 namespace ndn {
 namespace ndncert {
 
+std::string statusToString(Status status) {
+  switch (status)
+  {
+  case Status::BEFORE_CHALLENGE:
+    return "Before challenge";
+  case Status::CHALLENGE:
+    return "In challenge";
+  case Status::PENDING:
+    return "Pending after challenge";
+  case Status::SUCCESS:
+    return "Success";
+  case Status::FAILURE:
+    return "Failure";
+  case Status::NOT_STARTED:
+    return "Not started";
+  case Status::ENDED:
+    return "Ended";
+  default:
+    return "Unrecognized status";
+  }
+}
+
 ChallengeState::ChallengeState(const std::string& challengeStatus,
                                const time::system_clock::TimePoint& challengeTp,
                                size_t remainingTries, time::seconds remainingTime,
diff --git a/src/ca-state.hpp b/src/ca-state.hpp
index e25704e..e6ad885 100644
--- a/src/ca-state.hpp
+++ b/src/ca-state.hpp
@@ -26,6 +26,21 @@
 namespace ndn {
 namespace ndncert {
 
+// NDNCERT Request status enumeration
+enum class Status : uint16_t {
+  BEFORE_CHALLENGE = 0,
+  CHALLENGE = 1,
+  PENDING = 2,
+  SUCCESS = 3,
+  FAILURE = 4,
+  NOT_STARTED = 5,
+  ENDED = 6
+};
+
+// Convert request status to string
+std::string
+statusToString(Status status);
+
 /**
  * @brief The state maintained by the Challenge modules
  */
diff --git a/src/ca-storage/ca-sqlite.cpp b/src/ca-storage/ca-sqlite.cpp
index e9905d6..a74445b 100644
--- a/src/ca-storage/ca-sqlite.cpp
+++ b/src/ca-storage/ca-sqlite.cpp
@@ -184,8 +184,7 @@
   statement.bind(2, request.m_challengeType, SQLITE_TRANSIENT);
   if (request.m_challengeState) {
     statement.bind(3, request.m_challengeState->m_challengeStatus, SQLITE_TRANSIENT);
-    statement.bind(4, convertJson2String(request.m_challengeState->m_secrets),
-                   SQLITE_TRANSIENT);
+    statement.bind(4, convertJson2String(request.m_challengeState->m_secrets), SQLITE_TRANSIENT);
     statement.bind(5, time::toIsoString(request.m_challengeState->m_timestamp), SQLITE_TRANSIENT);
     statement.bind(6, request.m_challengeState->m_remainingTries);
     statement.bind(7, request.m_challengeState->m_remainingTime.count());
diff --git a/src/ndncert-common.cpp b/src/ndncert-common.cpp
index 76d45f6..7874635 100644
--- a/src/ndncert-common.cpp
+++ b/src/ndncert-common.cpp
@@ -40,28 +40,6 @@
   return json;
 }
 
-std::string statusToString(Status status) {
-  switch (status)
-  {
-  case Status::BEFORE_CHALLENGE:
-    return "Before challenge";
-  case Status::CHALLENGE:
-    return "In challenge";
-  case Status::PENDING:
-    return "Pending after challenge";
-  case Status::SUCCESS:
-    return "Success";
-  case Status::FAILURE:
-    return "Failure";
-  case Status::NOT_STARTED:
-    return "Not started";
-  case Status::ENDED:
-    return "Ended";
-  default:
-    return "Unrecognized status";
-  }
-}
-
 std::map<ErrorCode, std::string> errorCodeText = {
   {ErrorCode::NO_ERROR,             "NO_ERROR"},
   {ErrorCode::BAD_INTEREST_FORMAT,  "BAD_INTEREST_FORMAT"},
diff --git a/src/ndncert-common.hpp b/src/ndncert-common.hpp
index fbb1c06..2a38778 100644
--- a/src/ndncert-common.hpp
+++ b/src/ndncert-common.hpp
@@ -112,21 +112,6 @@
 JsonSection
 convertString2Json(const std::string& jsonContent);
 
-// NDNCERT Request status enumeration
-enum class Status : uint16_t {
-  BEFORE_CHALLENGE = 0,
-  CHALLENGE = 1,
-  PENDING = 2,
-  SUCCESS = 3,
-  FAILURE = 4,
-  NOT_STARTED = 5,
-  ENDED = 6
-};
-
-// Convert request status to string
-std::string
-statusToString(Status status);
-
 // NDNCERT error code
 enum class ErrorCode : uint16_t {
   NO_ERROR = 0,
