diff --git a/src/detail/probe-encoder.cpp b/src/detail/probe-encoder.cpp
index 0591501..5141ba1 100644
--- a/src/detail/probe-encoder.cpp
+++ b/src/detail/probe-encoder.cpp
@@ -24,7 +24,7 @@
 namespace ndncert {
 
 Block
-ProbeEncoder::encodeApplicationParameters(const std::vector<std::tuple<std::string, std::string>>& parameters)
+ProbeEncoder::encodeApplicationParameters(std::vector<std::tuple<std::string, std::string>>&& parameters)
 {
   auto content = makeEmptyBlock(ndn::tlv::ApplicationParameters);
   for (size_t i = 0; i < parameters.size(); ++i) {
diff --git a/src/detail/probe-encoder.hpp b/src/detail/probe-encoder.hpp
index 0db8cb9..0a991c3 100644
--- a/src/detail/probe-encoder.hpp
+++ b/src/detail/probe-encoder.hpp
@@ -31,7 +31,7 @@
 public:
   // For Client use
   static Block
-  encodeApplicationParameters(const std::vector<std::tuple<std::string, std::string>>& parameters);
+  encodeApplicationParameters(std::vector<std::tuple<std::string, std::string>>&& parameters);
 
   static void
   decodeDataContent(const Block& block, std::vector<std::pair<Name, int>>& availableNames,
diff --git a/src/requester.cpp b/src/requester.cpp
index 774b805..7b1df5f 100644
--- a/src/requester.cpp
+++ b/src/requester.cpp
@@ -88,14 +88,14 @@
 }
 
 shared_ptr<Interest>
-Requester::genProbeInterest(const CaProfile& ca,const std::vector<std::tuple<std::string, std::string>>& probeInfo)
+Requester::genProbeInterest(const CaProfile& ca, std::vector<std::tuple<std::string, std::string>>&& probeInfo)
 {
   Name interestName = ca.m_caPrefix;
   interestName.append("CA").append("PROBE");
   auto interest =std::make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
-  interest->setApplicationParameters(ProbeEncoder::encodeApplicationParameters(probeInfo));
+  interest->setApplicationParameters(ProbeEncoder::encodeApplicationParameters(std::move(probeInfo)));
   return interest;
 }
 
diff --git a/src/requester.hpp b/src/requester.hpp
index 117229c..4e2a1b1 100644
--- a/src/requester.hpp
+++ b/src/requester.hpp
@@ -84,7 +84,7 @@
    * @return A shared pointer of to the encoded interest, ready to be sent.
    */
   static shared_ptr<Interest>
-  genProbeInterest(const CaProfile& ca,const std::vector<std::tuple<std::string, std::string>>& probeInfo);
+  genProbeInterest(const CaProfile& ca, std::vector<std::tuple<std::string, std::string>>&& probeInfo);
 
   /**
    * @brief Decodes the replied data for PROBE process from the CA.
diff --git a/tests/unit-tests/protocol-encoders.t.cpp b/tests/unit-tests/protocol-encoders.t.cpp
index 96af9e4..f887a85 100644
--- a/tests/unit-tests/protocol-encoders.t.cpp
+++ b/tests/unit-tests/protocol-encoders.t.cpp
@@ -69,7 +69,7 @@
     std::vector<std::tuple<std::string, std::string>> parameters;
     parameters.emplace_back("key1", "value1");
     parameters.emplace_back("key2", "value2");
-    auto appParam = ProbeEncoder::encodeApplicationParameters(parameters);
+    auto appParam = ProbeEncoder::encodeApplicationParameters(std::move(parameters));
     auto param1 = ProbeEncoder::decodeApplicationParameters(appParam);
     BOOST_CHECK_EQUAL(parameters.size(),  param1.size());
     BOOST_CHECK_EQUAL(std::get<0>(parameters[0]),  std::get<0>(param1[0]));
diff --git a/tools/ndncert-client.cpp b/tools/ndncert-client.cpp
index f7f015c..f1b99dd 100644
--- a/tools/ndncert-client.cpp
+++ b/tools/ndncert-client.cpp
@@ -379,7 +379,7 @@
       std::cerr << "\n***************************************\n"
                 << "Step " << nStep++ << ": Please provide information for name assignment" << std::endl;
       auto capturedParams = captureParams(profile.m_probeParameterKeys);
-      face.expressInterest(*Requester::genProbeInterest(profile, capturedParams),
+      face.expressInterest(*Requester::genProbeInterest(profile, std::move(capturedParams)),
                            bind(&probeCb, _2, profile), bind(&onNackCb), bind(&timeoutCb));
     }
     else {
