diff --git a/src/name-assignment/assignment-func.hpp b/src/name-assignment/assignment-func.hpp
index 9ed8e22..29b516a 100644
--- a/src/name-assignment/assignment-func.hpp
+++ b/src/name-assignment/assignment-func.hpp
@@ -46,7 +46,7 @@
    * @return a vector containing the possible namespaces derived from the parameters.
    */
   virtual std::vector<PartialName>
-  assignName(const std::multimap<std::string, std::string> &params) = 0;
+  assignName(const std::multimap<std::string, std::string>& params) = 0;
 
 public:
   template <class AssignmentType>
@@ -63,7 +63,7 @@
 
 NDNCERT_PUBLIC_WITH_TESTS_ELSE_PROTECTED:
     std::vector<std::string> m_nameFormat;
-    
+
 private:
   typedef function<unique_ptr<NameAssignmentFunc>(const std::string&)> FactoryCreateFunc;
   typedef std::map<std::string, FactoryCreateFunc> CurriedFuncFactory;
diff --git a/src/name-assignment/assignment-hash.cpp b/src/name-assignment/assignment-hash.cpp
index 0dec488..f292821 100644
--- a/src/name-assignment/assignment-hash.cpp
+++ b/src/name-assignment/assignment-hash.cpp
@@ -31,7 +31,7 @@
 {}
 
 std::vector<PartialName>
-AssignmentHash::assignName(const std::multimap<std::string, std::string> &params)
+AssignmentHash::assignName(const std::multimap<std::string, std::string>& params)
 {
   std::vector<PartialName> resultList;
   Name result;
diff --git a/src/name-assignment/assignment-hash.hpp b/src/name-assignment/assignment-hash.hpp
index 6acb30c..83acc28 100644
--- a/src/name-assignment/assignment-hash.hpp
+++ b/src/name-assignment/assignment-hash.hpp
@@ -35,7 +35,7 @@
   AssignmentHash(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::multimap<std::string, std::string> &params) override;
+  assignName(const std::multimap<std::string, std::string>& params) override;
 
 };
 
diff --git a/src/name-assignment/assignment-param.cpp b/src/name-assignment/assignment-param.cpp
index b99d685..53022cc 100644
--- a/src/name-assignment/assignment-param.cpp
+++ b/src/name-assignment/assignment-param.cpp
@@ -30,7 +30,7 @@
 {}
 
 std::vector<PartialName>
-AssignmentParam::assignName(const std::multimap<std::string, std::string> &params)
+AssignmentParam::assignName(const std::multimap<std::string, std::string>& params)
 {
   std::vector<PartialName> resultList;
   Name result;
diff --git a/src/name-assignment/assignment-param.hpp b/src/name-assignment/assignment-param.hpp
index cdf2cc5..52bcb80 100644
--- a/src/name-assignment/assignment-param.hpp
+++ b/src/name-assignment/assignment-param.hpp
@@ -35,7 +35,7 @@
   AssignmentParam(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::multimap<std::string, std::string> &params) override;
+  assignName(const std::multimap<std::string, std::string>& params) override;
 
 };
 
diff --git a/src/name-assignment/assignment-random.cpp b/src/name-assignment/assignment-random.cpp
index eaed861..284a1f7 100644
--- a/src/name-assignment/assignment-random.cpp
+++ b/src/name-assignment/assignment-random.cpp
@@ -31,7 +31,7 @@
 {}
 
 std::vector<PartialName>
-AssignmentRandom::assignName(const std::multimap<std::string, std::string> &params)
+AssignmentRandom::assignName(const std::multimap<std::string, std::string>& params)
 {
   std::vector<PartialName> resultList;
   resultList.emplace_back(to_string(random::generateSecureWord64()));
diff --git a/src/name-assignment/assignment-random.hpp b/src/name-assignment/assignment-random.hpp
index 978a0b7..86f8096 100644
--- a/src/name-assignment/assignment-random.hpp
+++ b/src/name-assignment/assignment-random.hpp
@@ -35,7 +35,7 @@
   AssignmentRandom(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::multimap<std::string, std::string> &params) override;
+  assignName(const std::multimap<std::string, std::string>& params) override;
 };
 
 } // namespace ndncert
