diff --git a/src/requester.cpp b/src/requester.cpp
index 8a8dc86..ef839c0 100644
--- a/src/requester.cpp
+++ b/src/requester.cpp
@@ -113,7 +113,7 @@
 }
 
 shared_ptr<Interest>
-Requester::genNewInterest(RequestContext& state, const Name& identityName,
+Requester::genNewInterest(RequestState& state, const Name& identityName,
                           const time::system_clock::TimePoint& notBefore,
                           const time::system_clock::TimePoint& notAfter)
 {
@@ -173,7 +173,7 @@
 }
 
 shared_ptr<Interest>
-Requester::genRevokeInterest(RequestContext& state, const security::Certificate& certificate)
+Requester::genRevokeInterest(RequestState& state, const security::Certificate& certificate)
 {
   if (!state.m_caItem.m_caPrefix.isPrefixOf(certificate.getName())) {
     return nullptr;
@@ -190,7 +190,7 @@
 }
 
 std::list<std::string>
-Requester::onNewRenewRevokeResponse(RequestContext& state, const Data& reply)
+Requester::onNewRenewRevokeResponse(RequestState& state, const Data& reply)
 {
   if (!security::verifySignature(reply, *state.m_caItem.m_cert)) {
     NDN_LOG_ERROR("Cannot verify replied Data packet signature.");
@@ -213,7 +213,7 @@
 }
 
 std::vector<std::tuple<std::string, std::string>>
-Requester::selectOrContinueChallenge(RequestContext& state, const std::string& challengeSelected)
+Requester::selectOrContinueChallenge(RequestState& state, const std::string& challengeSelected)
 {
   auto challenge = ChallengeModule::createChallengeModule(challengeSelected);
   if (challenge == nullptr) {
@@ -224,7 +224,7 @@
 }
 
 shared_ptr<Interest>
-Requester::genChallengeInterest(RequestContext& state,
+Requester::genChallengeInterest(RequestState& state,
                                 std::vector<std::tuple<std::string, std::string>>&& parameters)
 {
   if (state.m_challengeType == "") {
@@ -254,7 +254,7 @@
 }
 
 void
-Requester::onChallengeResponse(RequestContext& state, const Data& reply)
+Requester::onChallengeResponse(RequestState& state, const Data& reply)
 {
   if (!security::verifySignature(reply, *state.m_caItem.m_cert)) {
     NDN_LOG_ERROR("Cannot verify replied Data packet signature.");
@@ -265,7 +265,7 @@
 }
 
 shared_ptr<Interest>
-Requester::genCertFetchInterest(const RequestContext& state)
+Requester::genCertFetchInterest(const RequestState& state)
 {
   Name interestName = state.m_issuedCertName;
   auto interest =std::make_shared<Interest>(interestName);
@@ -288,7 +288,7 @@
 }
 
 void
-Requester::endSession(RequestContext& state)
+Requester::endSession(RequestState& state)
 {
   if (state.m_status == Status::SUCCESS || state.m_status == Status::ENDED) {
     return;
