diff --git a/tests/update/test-prefix-update-processor.cpp b/tests/update/test-prefix-update-processor.cpp
index 70fd491..fe0bfac 100644
--- a/tests/update/test-prefix-update-processor.cpp
+++ b/tests/update/test-prefix-update-processor.cpp
@@ -26,7 +26,7 @@
 #include "tests/test-common.hpp"
 
 #include <ndn-cxx/mgmt/nfd/control-response.hpp>
-#include <ndn-cxx/security/command-interest-signer.hpp>
+#include <ndn-cxx/security/interest-signer.hpp>
 #include <ndn-cxx/security/pib/identity.hpp>
 #include <ndn-cxx/security/signing-helpers.hpp>
 
@@ -163,13 +163,12 @@
   // append /<control-parameters>
   advertiseCommand.append(parameters.wireEncode());
 
-  ndn::security::CommandInterestSigner cis(m_keyChain);
+  ndn::security::InterestSigner signer(m_keyChain);
 
-  // CommandInterestSigner::makeCommandInterest() will append the last
+  // InterestSigner::makeCommandInterest() will append the last
   // three components: (<timestamp>/<random-value>/<signed-interests-components>)
-  ndn::Interest advertiseInterest =
-    cis.makeCommandInterest(advertiseCommand,
-                            ndn::security::signingByIdentity(opIdentity));
+  auto advertiseInterest = signer.makeCommandInterest(advertiseCommand,
+                                                      ndn::security::signingByIdentity(opIdentity));
 
   face.receive(advertiseInterest);
 
@@ -185,13 +184,12 @@
   face.sentData.clear();
   nameLsaSeqNoBeforeInterest = nlsr.m_lsdb.m_sequencingManager.getNameLsaSeq();
 
-  //Withdraw
+  // Withdraw
   ndn::Name withdrawCommand("/localhost/nlsr/prefix-update/withdraw");
   withdrawCommand.append(parameters.wireEncode());
 
-  ndn::Interest withdrawInterest
-    = cis.makeCommandInterest(withdrawCommand,
-                              ndn::security::signingByIdentity(opIdentity));
+  auto withdrawInterest= signer.makeCommandInterest(withdrawCommand,
+                                                    ndn::security::signingByIdentity(opIdentity));
 
   face.receive(withdrawInterest);
   this->advanceClocks(ndn::time::milliseconds(10));
diff --git a/tests/update/test-save-delete-prefix.cpp b/tests/update/test-save-delete-prefix.cpp
index 26644f8..7f93e9d 100644
--- a/tests/update/test-save-delete-prefix.cpp
+++ b/tests/update/test-save-delete-prefix.cpp
@@ -27,7 +27,7 @@
 #include "conf-parameter.hpp"
 
 #include <ndn-cxx/mgmt/nfd/control-response.hpp>
-#include <ndn-cxx/security/command-interest-signer.hpp>
+#include <ndn-cxx/security/interest-signer.hpp>
 #include <ndn-cxx/security/pib/identity.hpp>
 #include <ndn-cxx/security/signing-helpers.hpp>
 
@@ -138,21 +138,20 @@
   {
     ndn::nfd::ControlParameters parameters;
     parameters.setName(prefixName);
-    if (P_FLAG)
-    {
+    if (P_FLAG) {
       parameters.setFlags(update::PREFIX_FLAG);
     }
     ndn::Name advertiseCommand("/localhost/nlsr/prefix-update/advertise");
     ndn::Name withdrawCommand("/localhost/nlsr/prefix-update/withdraw");
-    ndn::security::CommandInterestSigner cis(m_keyChain);
+    ndn::security::InterestSigner signer(m_keyChain);
     // type true for advertise, else withdraw
     if (type == "advertise") {
       advertiseCommand.append(parameters.wireEncode());
-      return cis.makeCommandInterest(advertiseCommand, ndn::security::signingByIdentity(opIdentity));
+      return signer.makeCommandInterest(advertiseCommand, ndn::security::signingByIdentity(opIdentity));
     }
     else {
       withdrawCommand.append(parameters.wireEncode());
-      return cis.makeCommandInterest(withdrawCommand, ndn::security::signingByIdentity(opIdentity));
+      return signer.makeCommandInterest(withdrawCommand, ndn::security::signingByIdentity(opIdentity));
     }
   }
 
diff --git a/tools/nlsrc.cpp b/tools/nlsrc.cpp
index 6c1f064..12900f5 100644
--- a/tools/nlsrc.cpp
+++ b/tools/nlsrc.cpp
@@ -30,7 +30,7 @@
 #include <ndn-cxx/interest.hpp>
 #include <ndn-cxx/mgmt/nfd/control-parameters.hpp>
 #include <ndn-cxx/mgmt/nfd/control-response.hpp>
-#include <ndn-cxx/security/command-interest-signer.hpp>
+#include <ndn-cxx/security/interest-signer.hpp>
 #include <ndn-cxx/security/key-chain.hpp>
 #include <ndn-cxx/security/signing-helpers.hpp>
 #include <ndn-cxx/util/segment-fetcher.hpp>
@@ -205,13 +205,9 @@
   commandName.append(verb);
   commandName.append(parameters.wireEncode());
 
-  ndn::security::CommandInterestSigner cis(m_keyChain);
-
-  ndn::Interest commandInterest =
-    cis.makeCommandInterest(commandName,
-                            ndn::security::signingByIdentity(m_keyChain.getPib().
-                                                             getDefaultIdentity()));
-
+  ndn::security::InterestSigner signer(m_keyChain);
+  auto commandInterest = signer.makeCommandInterest(commandName,
+                           ndn::security::signingByIdentity(m_keyChain.getPib().getDefaultIdentity()));
   commandInterest.setMustBeFresh(true);
 
   m_face.expressInterest(commandInterest,
