diff --git a/tests/unit-tests/ca-memory.t.cpp b/tests/unit-tests/ca-memory.t.cpp
index 3a69e0b..290e4ca 100644
--- a/tests/unit-tests/ca-memory.t.cpp
+++ b/tests/unit-tests/ca-memory.t.cpp
@@ -39,10 +39,12 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey1;
-  RequestState request1(Name("/ndn/site1"), requestId, RequestType::NEW,
-                        Status::BEFORE_CHALLENGE, cert1, std::move(aesKey1));
+  RequestId requestId = {{101}};
+  RequestState request1;
+  request1.caPrefix = Name("/ndn/site1");
+  request1.requestId = requestId;
+  request1.requestType = RequestType::NEW;
+  request1.cert = cert1;
   BOOST_CHECK_NO_THROW(storage.addRequest(request1));
 
   // get operation
@@ -53,27 +55,33 @@
   BOOST_CHECK_EQUAL_COLLECTIONS(request1.encryptionKey.begin(), request1.encryptionKey.end(),
                                 result.encryptionKey.begin(), result.encryptionKey.end());
 
-  JsonSection json;
-  json.put("code", "1234");
-
   // update operation
-  std::array<uint8_t, 16> aesKey2;
-  RequestState request2(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert1,
-                   "email", "test", time::system_clock::now(), 3, time::seconds(3600),
-                   std::move(json), std::move(aesKey2), 0);
+  RequestState request2;
+  request2.caPrefix = Name("/ndn/site1");
+  request2.requestId = requestId;
+  request2.requestType = RequestType::NEW;
+  request2.cert = cert1;
+  request2.challengeType = "email";
+  JsonSection secret;
+  secret.add("code", "1234");
+  request2.challengeState = ChallengeState("test", time::system_clock::now(), 3,
+                                           time::seconds(3600), std::move(secret));
   storage.updateRequest(request2);
   result = storage.getRequest(requestId);
   BOOST_CHECK_EQUAL(request2.cert, result.cert);
   BOOST_CHECK(request2.status == result.status);
   BOOST_CHECK_EQUAL(request2.caPrefix, result.caPrefix);
 
+  // another add operation
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  RequestId requestId2 = {{8,7,6,5,4,3,2,1}};
-  std::array<uint8_t, 16> aesKey3;
-  RequestState request3(Name("/ndn/site2"), requestId2, RequestType::NEW, Status::BEFORE_CHALLENGE,
-                        cert2, std::move(aesKey3));
+  RequestId requestId2 = {{102}};
+  RequestState request3;
+  request3.caPrefix = Name("/ndn/site2");
+  request3.requestId = requestId2;
+  request3.requestType = RequestType::NEW;
+  request3.cert = cert2;
   storage.addRequest(request3);
 
   // list operation
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index b2d3300..a74db0d 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -467,9 +467,13 @@
   signatureInfo.setValidityPeriod(security::ValidityPeriod(time::system_clock::now(),
                                                            time::system_clock::now() + time::hours(10)));
   m_keyChain.sign(clientCert, signingByKey(clientKey.getName()).setSignatureInfo(signatureInfo));
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  RequestState certRequest(Name("/ndn"), requestId, RequestType::NEW, Status::SUCCESS, clientCert, std::move(aesKey));
+  RequestId requestId = {{101}};
+  RequestState certRequest;
+  certRequest.caPrefix = Name("/ndn");
+  certRequest.requestId = requestId;
+  certRequest.requestType = RequestType::NEW;
+  certRequest.status = Status::SUCCESS;
+  certRequest.cert = clientCert;
   auto issuedCert = ca.issueCertificate(certRequest);
 
   CaProfile item;
diff --git a/tests/unit-tests/ca-sqlite.t.cpp b/tests/unit-tests/ca-sqlite.t.cpp
index f0383ff..e338b63 100644
--- a/tests/unit-tests/ca-sqlite.t.cpp
+++ b/tests/unit-tests/ca-sqlite.t.cpp
@@ -38,9 +38,12 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey1;
-  RequestState request1(Name("/ndn/site1"), requestId, RequestType::NEW, Status::BEFORE_CHALLENGE, cert1, std::move(aesKey1));
+  RequestId requestId = {{101}};
+  RequestState request1;
+  request1.caPrefix = Name("/ndn/site1");
+  request1.requestId = requestId;
+  request1.requestType = RequestType::NEW;
+  request1.cert = cert1;
   storage.addRequest(request1);
 
   // get operation
@@ -52,25 +55,32 @@
                                 result.encryptionKey.begin(), result.encryptionKey.end());
 
   // update operation
-  JsonSection json;
-  json.put("test", "4567");
-  std::array<uint8_t, 16> aesKey2;
-  RequestState request2(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert1,
-                   "email", "test", time::system_clock::now(), 3, time::seconds(3600),
-                  std::move(json), std::move(aesKey2), 0);
+  RequestState request2;
+  request2.caPrefix = Name("/ndn/site1");
+  request2.requestId = requestId;
+  request2.requestType = RequestType::NEW;
+  request2.cert = cert1;
+  request2.challengeType = "email";
+  JsonSection secret;
+  secret.add("code", "1234");
+  request2.challengeState = ChallengeState("test", time::system_clock::now(), 3,
+                                           time::seconds(3600), std::move(secret));
   storage.updateRequest(request2);
   result = storage.getRequest(requestId);
   BOOST_CHECK_EQUAL(request2.cert, result.cert);
   BOOST_CHECK(request2.status == result.status);
   BOOST_CHECK_EQUAL(request2.caPrefix, result.caPrefix);
 
+  // another add operation
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  RequestId requestId2 = {{8,7,6,5,4,3,2,1}};
-  std::array<uint8_t, 16> aesKey3;
-  RequestState request3(Name("/ndn/site2"), requestId2, RequestType::NEW,
-                        Status::BEFORE_CHALLENGE, cert2, std::move(aesKey3));
+  RequestId requestId2 = {{102}};
+  RequestState request3;
+  request3.caPrefix = Name("/ndn/site2");
+  request3.requestId = requestId2;
+  request3.requestType = RequestType::NEW;
+  request3.cert = cert2;
   storage.addRequest(request3);
 
   // list operation
@@ -88,20 +98,23 @@
 
 BOOST_AUTO_TEST_CASE(DuplicateAdd)
 {
-    CaSqlite storage(Name(), dbDir.string() + "/TestCaSqlite_DuplicateAdd.db");
+  CaSqlite storage(Name(), dbDir.string() + "/TestCaSqlite_DuplicateAdd.db");
 
-    auto identity1 = addIdentity(Name("/ndn/site1"));
-    auto key1 = identity1.getDefaultKey();
-    auto cert1 = key1.getDefaultCertificate();
+  auto identity1 = addIdentity(Name("/ndn/site1"));
+  auto key1 = identity1.getDefaultKey();
+  auto cert1 = key1.getDefaultCertificate();
 
-    // add operation
-    RequestId requestId = {{1,2,3,4,5,6,7,8}};
-    std::array<uint8_t, 16> aesKey;
-    RequestState request1(Name("/ndn/site1"),requestId, RequestType::NEW,
-                          Status::BEFORE_CHALLENGE, cert1, std::move(aesKey));
-    BOOST_CHECK_NO_THROW(storage.addRequest(request1));
-    // add again
-    BOOST_CHECK_THROW(storage.addRequest(request1), std::runtime_error);
+  // add operation
+  RequestId requestId = {{101}};
+  RequestState request1;
+  request1.caPrefix = Name("/ndn/site1");
+  request1.requestId = requestId;
+  request1.requestType = RequestType::NEW;
+  request1.cert = cert1;
+  BOOST_CHECK_NO_THROW(storage.addRequest(request1));
+
+  // add again
+  BOOST_CHECK_THROW(storage.addRequest(request1), std::runtime_error);
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestCaModule
diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index 03cf023..31f6b33 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -53,10 +53,12 @@
   auto identityA = addIdentity(Name("/example"));
   auto keyA = identityA.getDefaultKey();
   auto certA = key.getDefaultCertificate();
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState state(Name("/example"), requestId, RequestType::NEW,
-                         Status::BEFORE_CHALLENGE, certA, std::move(aesKey));
+  RequestId requestId = {{101}};
+  ca::RequestState state;
+  state.caPrefix = Name("/example");
+  state.requestId = requestId;
+  state.requestType = RequestType::NEW;
+  state.cert = certA;
 
   // 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 429e532..8ee9be9 100644
--- a/tests/unit-tests/challenge-email.t.cpp
+++ b/tests/unit-tests/challenge-email.t.cpp
@@ -45,9 +45,12 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::BEFORE_CHALLENGE, cert, std::move(aesKey));
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.cert = cert;
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -96,9 +99,12 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::BEFORE_CHALLENGE, cert, std::move(aesKey));
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.cert = cert;
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -117,13 +123,18 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  JsonSection json;
-  json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert,
-                           "email", ChallengeEmail::NEED_CODE, time::system_clock::now(),
-                           3, time::seconds(3600), std::move(json), std::move(aesKey), 0);
+  JsonSection secret;
+  secret.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.status = Status::CHALLENGE;
+  request.cert = cert;
+  request.challengeType = "email";
+  request.challengeState = ca::ChallengeState(ChallengeEmail::NEED_CODE, time::system_clock::now(),
+                                              3, time::seconds(3600), std::move(secret));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengeEmail::PARAMETER_KEY_CODE));
@@ -141,13 +152,18 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  JsonSection json;
-  json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert,
-                           "email", ChallengeEmail::NEED_CODE, time::system_clock::now(),
-                           3, time::seconds(3600), std::move(json), std::move(aesKey), 0);
+  JsonSection secret;
+  secret.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.status = Status::CHALLENGE;
+  request.cert = cert;
+  request.challengeType = "email";
+  request.challengeState = ca::ChallengeState(ChallengeEmail::NEED_CODE, time::system_clock::now(),
+                                              3, time::seconds(3600), std::move(secret));
 
   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 f3b10d8..61167d0 100644
--- a/tests/unit-tests/challenge-pin.t.cpp
+++ b/tests/unit-tests/challenge-pin.t.cpp
@@ -38,9 +38,12 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::BEFORE_CHALLENGE, cert, std::move(aesKey));
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.cert = cert;
 
   ChallengePin challenge;
   challenge.handleChallengeRequest(makeEmptyBlock(tlv::EncryptedPayload), request);
@@ -57,11 +60,16 @@
   auto cert = key.getDefaultCertificate();
   JsonSection secret;
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert,
-                           "pin", ChallengePin::NEED_CODE, time::system_clock::now(),
-                           3, time::seconds(3600), std::move(secret), std::move(aesKey), 0);
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.status = Status::CHALLENGE;
+  request.cert = cert;
+  request.challengeType = "pin";
+  request.challengeState = ca::ChallengeState(ChallengePin::NEED_CODE, time::system_clock::now(),
+                                              3, time::seconds(3600), std::move(secret));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengePin::PARAMETER_KEY_CODE));
@@ -81,11 +89,16 @@
   auto cert = key.getDefaultCertificate();
   JsonSection secret;
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
-  RequestId requestId = {{1,2,3,4,5,6,7,8}};
-  std::array<uint8_t, 16> aesKey;
-  ca::RequestState request(Name("/ndn/site1"), requestId, RequestType::NEW, Status::CHALLENGE, cert,
-                           "pin", ChallengePin::NEED_CODE, time::system_clock::now(),
-                           3, time::seconds(3600), std::move(secret), std::move(aesKey), 0);
+  RequestId requestId = {{101}};
+  ca::RequestState request;
+  request.caPrefix = Name("/ndn/site1");
+  request.requestId = requestId;
+  request.requestType = RequestType::NEW;
+  request.status = Status::CHALLENGE;
+  request.cert = cert;
+  request.challengeType = "pin";
+  request.challengeState = ca::ChallengeState(ChallengePin::NEED_CODE, time::system_clock::now(),
+                                              3, time::seconds(3600), std::move(secret));
 
   Block paramTLV = makeEmptyBlock(tlv::EncryptedPayload);
   paramTLV.push_back(makeStringBlock(tlv::ParameterKey, ChallengePin::PARAMETER_KEY_CODE));
diff --git a/tests/unit-tests/protocol-encoders.t.cpp b/tests/unit-tests/protocol-encoders.t.cpp
index c69131b..5147ef9 100644
--- a/tests/unit-tests/protocol-encoders.t.cpp
+++ b/tests/unit-tests/protocol-encoders.t.cpp
@@ -147,11 +147,17 @@
   caCache.load("tests/unit-tests/config-files/config-client-1");
   security::Certificate certRequest = *caCache.getKnownProfiles().front().m_cert;
   RequestId id = {{102}};
-  std::array<uint8_t, 16> aesKey;
-  std::memcpy(aesKey.data(), key, sizeof(key));
-  ca::RequestState state(Name("/ndn/ucla"), id, RequestType::NEW, Status::PENDING,
-                         certRequest, "pin", "test", time::system_clock::now(), 3, time::seconds(321), JsonSection(),
-                         std::move(aesKey), 0);
+  ca::RequestState state;
+  state.caPrefix = Name("/ndn/ucla");
+  state.requestId = id;
+  state.requestType = RequestType::NEW;
+  state.status = Status::PENDING;
+  state.cert = certRequest;
+  std::memcpy(state.encryptionKey.data(), key, sizeof(key));
+  state.challengeType = "pin";
+  state.challengeState = ca::ChallengeState("test", time::system_clock::now(),
+                                            3, time::seconds(3600), JsonSection());
+
   auto contentBlock = challengetlv::encodeDataContent(state, Name("/ndn/ucla/a/b/c"));
 
   requester::RequestState context(m_keyChain, caCache.getKnownProfiles().front(), RequestType::NEW);
