diff --git a/tests/daemon/table/name-tree.cpp b/tests/daemon/table/name-tree.cpp
index e5e9089..0a6f986 100644
--- a/tests/daemon/table/name-tree.cpp
+++ b/tests/daemon/table/name-tree.cpp
@@ -1,11 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014  Regents of the University of California,
- *                     Arizona Board of Regents,
- *                     Colorado State University,
- *                     University Pierre & Marie Curie, Sorbonne University,
- *                     Washington University in St. Louis,
- *                     Beijing Institute of Technology
+ * Copyright (c) 2014,  Regents of the University of California,
+ *                      Arizona Board of Regents,
+ *                      Colorado State University,
+ *                      University Pierre & Marie Curie, Sorbonne University,
+ *                      Washington University in St. Louis,
+ *                      Beijing Institute of Technology,
+ *                      The University of Memphis
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
  *
  * You should have received a copy of the GNU General Public License along with
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
 
 #include "table/name-tree.hpp"
 #include "tests/test-common.hpp"
@@ -92,19 +93,19 @@
 
   // Insert a PIT
 
-  shared_ptr<pit::Entry> PitEntry(make_shared<pit::Entry>(prefix));
-  shared_ptr<pit::Entry> PitEntry2(make_shared<pit::Entry>(parentName));
+  shared_ptr<pit::Entry> pitEntry(make_shared<pit::Entry>(*makeInterest(prefix)));
+  shared_ptr<pit::Entry> pitEntry2(make_shared<pit::Entry>(*makeInterest(parentName)));
 
-  npe->insertPitEntry(PitEntry);
+  npe->insertPitEntry(pitEntry);
   BOOST_CHECK_EQUAL(npe->getPitEntries().size(), 1);
 
-  npe->insertPitEntry(PitEntry2);
+  npe->insertPitEntry(pitEntry2);
   BOOST_CHECK_EQUAL(npe->getPitEntries().size(), 2);
 
-  npe->erasePitEntry(PitEntry);
+  npe->erasePitEntry(pitEntry);
   BOOST_CHECK_EQUAL(npe->getPitEntries().size(), 1);
 
-  npe->erasePitEntry(PitEntry2);
+  npe->erasePitEntry(pitEntry2);
   BOOST_CHECK_EQUAL(npe->getPitEntries().size(), 0);
 }
 
diff --git a/tests/daemon/table/pit.cpp b/tests/daemon/table/pit.cpp
index e4e281b..9e623c1 100644
--- a/tests/daemon/table/pit.cpp
+++ b/tests/daemon/table/pit.cpp
@@ -305,7 +305,7 @@
 
 BOOST_AUTO_TEST_CASE(Erase)
 {
-  Interest interest(Name("ndn:/z88Admz6A2"));
+  shared_ptr<Interest> interest = makeInterest("/z88Admz6A2");
 
   NameTree nameTree(16);
   Pit pit(nameTree);
@@ -314,18 +314,18 @@
 
   BOOST_CHECK_EQUAL(pit.size(), 0);
 
-  insertResult = pit.insert(interest);
+  insertResult = pit.insert(*interest);
   BOOST_CHECK_EQUAL(insertResult.second, true);
   BOOST_CHECK_EQUAL(pit.size(), 1);
 
-  insertResult = pit.insert(interest);
+  insertResult = pit.insert(*interest);
   BOOST_CHECK_EQUAL(insertResult.second, false);
   BOOST_CHECK_EQUAL(pit.size(), 1);
 
   pit.erase(insertResult.first);
   BOOST_CHECK_EQUAL(pit.size(), 0);
 
-  insertResult = pit.insert(interest);
+  insertResult = pit.insert(*interest);
   BOOST_CHECK_EQUAL(insertResult.second, true);
   BOOST_CHECK_EQUAL(pit.size(), 1);
 
@@ -339,9 +339,9 @@
   Name nameABCD("ndn:/A/B/C/D");
   Name nameD   ("ndn:/D");
 
-  Interest interestA  (nameA  );
-  Interest interestABC(nameABC);
-  Interest interestD  (nameD  );
+  shared_ptr<Interest> interestA   = makeInterest(nameA  );
+  shared_ptr<Interest> interestABC = makeInterest(nameABC);
+  shared_ptr<Interest> interestD   = makeInterest(nameD  );
 
   NameTree nameTree(16);
   Pit pit(nameTree);
@@ -349,9 +349,9 @@
 
   BOOST_CHECK_EQUAL(pit.size(), 0);
 
-  pit.insert(interestA  );
-  pit.insert(interestABC);
-  pit.insert(interestD  );
+  pit.insert(*interestA  );
+  pit.insert(*interestABC);
+  pit.insert(*interestD  );
 
   nameTree.lookup(nameABCD); // make sure /A/B/C/D is in nameTree
 
