diff --git a/tools/ndnrepowatch.cpp b/tools/ndnrepowatch.cpp
index 63a26ca..16be915 100644
--- a/tools/ndnrepowatch.cpp
+++ b/tools/ndnrepowatch.cpp
@@ -21,6 +21,7 @@
 #include "../src/repo-command-response.hpp"
 
 #include <ndn-cxx/face.hpp>
+#include <ndn-cxx/security/command-interest-signer.hpp>
 #include <ndn-cxx/security/key-chain.hpp>
 #include <ndn-cxx/security/signing-helpers.hpp>
 #include <ndn-cxx/util/scheduler.hpp>
@@ -76,9 +77,9 @@
     , maxInterestNum(0)
     , status(START)
     , isVerbose(false)
-
     , m_scheduler(m_face.getIoService())
     , m_checkPeriod(DEFAULT_CHECK_PERIOD)
+    , m_cmdSigner(m_keyChain)
   {
   }
 
@@ -140,6 +141,7 @@
   ndn::Name m_dataPrefix;
   ndn::KeyChain m_keyChain;
   typedef std::map<uint64_t, shared_ptr<ndn::Data> > DataContainer;
+  ndn::security::CommandInterestSigner m_cmdSigner;
 };
 
 void
@@ -283,17 +285,19 @@
 NdnRepoWatch::generateCommandInterest(const ndn::Name& commandPrefix, const std::string& command,
                                       const RepoCommandParameter& commandParameter)
 {
-  ndn::Interest interest(ndn::Name(commandPrefix)
-                         .append(command)
-                         .append(commandParameter.wireEncode()));
-  interest.setInterestLifetime(interestLifetime);
+  Name cmd = commandPrefix;
+  cmd
+    .append(command)
+    .append(commandParameter.wireEncode());
+  ndn::Interest interest;
 
   if (identityForCommand.empty())
-    m_keyChain.sign(interest);
+    interest = m_cmdSigner.makeCommandInterest(cmd);
   else {
-    m_keyChain.sign(interest, ndn::signingByIdentity(identityForCommand));
+    interest = m_cmdSigner.makeCommandInterest(cmd, ndn::signingByIdentity(identityForCommand));
   }
 
+  interest.setInterestLifetime(interestLifetime);
   return interest;
 }
 
