diff --git a/src/detail/ndncert-common.cpp b/src/detail/ndncert-common.cpp
index 1915082..0c7c033 100644
--- a/src/detail/ndncert-common.cpp
+++ b/src/detail/ndncert-common.cpp
@@ -23,34 +23,36 @@
 namespace ndn {
 namespace ndncert {
 
-const std::map<ErrorCode, std::string> errorCodeText = {
-  {ErrorCode::NO_ERROR,             "NO_ERROR"},
-  {ErrorCode::BAD_INTEREST_FORMAT,  "BAD_INTEREST_FORMAT"},
-  {ErrorCode::BAD_PARAMETER_FORMAT, "BAD_PARAMETER_FORMAT"},
-  {ErrorCode::BAD_SIGNATURE,        "BAD_SIGNATURE"},
-  {ErrorCode::INVALID_PARAMETER,    "INVALID_PARAMETER"},
-  {ErrorCode::NAME_NOT_ALLOWED,     "NAME_NOT_ALLOWED"},
-  {ErrorCode::BAD_VALIDITY_PERIOD,  "BAD_VALIDITY_PERIOD"},
-  {ErrorCode::OUT_OF_TRIES,         "OUT_OF_TRIES"},
-  {ErrorCode::OUT_OF_TIME,          "OUT_OF_TIME"},
-  {ErrorCode::NO_AVAILABLE_NAMES,   "NO_AVAILABLE_NAMES"}
-};
-
-const std::map<RequestType, std::string> requestTypeText = {
-  {RequestType::NEW, "New"},
-  {RequestType::RENEW, "Renew"},
-  {RequestType::REVOKE, "Revoke"},
-  {RequestType::NOTINITIALIZED, "Not Initialized"},
-};
-
-std::string errorCodeToString(ErrorCode code)
+std::ostream&
+operator<<(std::ostream& out, ErrorCode code)
 {
-  return errorCodeText.at(code);
+  switch (code) {
+    case ErrorCode::NO_ERROR: out << "NO_ERROR"; break;
+    case ErrorCode::BAD_INTEREST_FORMAT: out << "BAD_INTEREST_FORMAT"; break;
+    case ErrorCode::BAD_PARAMETER_FORMAT: out << "BAD_PARAMETER_FORMAT"; break;
+    case ErrorCode::BAD_SIGNATURE: out << "BAD_SIGNATURE"; break;
+    case ErrorCode::INVALID_PARAMETER: out << "INVALID_PARAMETER"; break;
+    case ErrorCode::NAME_NOT_ALLOWED: out << "NAME_NOT_ALLOWED"; break;
+    case ErrorCode::BAD_VALIDITY_PERIOD: out << "BAD_VALIDITY_PERIOD"; break;
+    case ErrorCode::OUT_OF_TRIES: out << "OUT_OF_TRIES"; break;
+    case ErrorCode::OUT_OF_TIME: out << "OUT_OF_TIME"; break;
+    case ErrorCode::NO_AVAILABLE_NAMES: out << "NO_AVAILABLE_NAMES"; break;
+    default: out << "UNKNOWN_ERROR"; break;
+  }
+  return out;
 }
 
-std::string requestTypeToString(RequestType type)
+std::ostream&
+operator<<(std::ostream& out, RequestType type)
 {
-  return requestTypeText.at(type);
+  switch(type) {
+    case RequestType::NEW: out << "New"; break;
+    case RequestType::RENEW: out << "Renew"; break;
+    case RequestType::REVOKE: out << "Revoke"; break;
+    case RequestType::NOTINITIALIZED: out << "Not Initialized"; break;
+    default: out << "UNKNOWN_REQUEST_TYPE"; break;
+  }
+  return out;
 }
 
 } // namespace ndncert
diff --git a/src/detail/ndncert-common.hpp b/src/detail/ndncert-common.hpp
index 5805f74..1773bf9 100644
--- a/src/detail/ndncert-common.hpp
+++ b/src/detail/ndncert-common.hpp
@@ -97,7 +97,7 @@
 typedef boost::property_tree::ptree JsonSection;
 
 // NDNCERT error code
-enum class ErrorCode : uint16_t {
+enum class ErrorCode : uint64_t {
   NO_ERROR = 0,
   BAD_INTEREST_FORMAT = 1,
   BAD_PARAMETER_FORMAT = 2,
@@ -111,11 +111,11 @@
 };
 
 // Convert error code to string
-std::string
-errorCodeToString(ErrorCode code);
+std::ostream&
+operator<<(std::ostream& os, ErrorCode code);
 
 // NDNCERT request type
-enum class RequestType : uint16_t {
+enum class RequestType : uint64_t {
   NOTINITIALIZED = 0,
   NEW = 1,
   RENEW = 2,
@@ -123,8 +123,8 @@
 };
 
 // Convert request type to string
-std::string
-requestTypeToString(RequestType type);
+std::ostream&
+operator<<(std::ostream& out, RequestType type);
 
 } // namespace ndncert
 } // namespace ndn
diff --git a/src/requester.cpp b/src/requester.cpp
index 737d0cc..710780a 100644
--- a/src/requester.cpp
+++ b/src/requester.cpp
@@ -34,6 +34,7 @@
 #include <ndn-cxx/util/io.hpp>
 #include <ndn-cxx/util/random.hpp>
 #include <ndn-cxx/metadata-object.hpp>
+#include <boost/lexical_cast.hpp>
 
 namespace ndn {
 namespace ndncert {
@@ -313,10 +314,10 @@
     return;
   }
   NDN_LOG_ERROR("Error info replied from the CA with Error code: " +
-            errorCodeToString(std::get<0>(errorInfo)) +
+            boost::lexical_cast<std::string>(std::get<0>(errorInfo)) +
             " and Error Info: " + std::get<1>(errorInfo));
   NDN_THROW(std::runtime_error("Error info replied from the CA with Error code: " +
-                                           errorCodeToString(std::get<0>(errorInfo)) +
+                                       boost::lexical_cast<std::string>(std::get<0>(errorInfo)) +
                                            " and Error Info: " + std::get<1>(errorInfo)));
 }
 
