diff --git a/test/ndnSIM-fib-entry.cc b/test/ndnSIM-fib-entry.cc
index 2fbdb85..4d563c7 100644
--- a/test/ndnSIM-fib-entry.cc
+++ b/test/ndnSIM-fib-entry.cc
@@ -45,7 +45,7 @@
     ndn::App::StartApplication ();
 
     // add default route
-    Ptr<ndn::fib::Entry> fibEntry = GetNode ()->GetObject<ndn::Fib> ()->Add (ndn::NameComponents ("/"), m_face, 0);
+    Ptr<ndn::fib::Entry> fibEntry = GetNode ()->GetObject<ndn::Fib> ()->Add (ndn::Name ("/"), m_face, 0);
     fibEntry->UpdateStatus (m_face, ndn::fib::FaceMetric::NDN_FIB_GREEN);
 
     Simulator::Schedule (Seconds (0.5), &Client::SendPacket, this, std::string("/1"), 1);
@@ -64,7 +64,7 @@
   {
     Ptr<Packet> pkt = Create<Packet> (0);
     ndn::InterestHeader i;
-    i.SetName (Create<ndn::NameComponents> (prefix));
+    i.SetName (Create<ndn::Name> (prefix));
     i.SetNonce (nonce);
     i.SetInterestLifetime (Seconds (0.5));
 
diff --git a/test/ndnSIM-pit.cc b/test/ndnSIM-pit.cc
index 18c2751..c1ba4c1 100644
--- a/test/ndnSIM-pit.cc
+++ b/test/ndnSIM-pit.cc
@@ -39,7 +39,7 @@
     ndn::App::StartApplication ();
 
     // add default route
-    Ptr<ndn::fib::Entry> fibEntry = GetNode ()->GetObject<ndn::Fib> ()->Add (ndn::NameComponents ("/"), m_face, 0);
+    Ptr<ndn::fib::Entry> fibEntry = GetNode ()->GetObject<ndn::Fib> ()->Add (ndn::Name ("/"), m_face, 0);
     fibEntry->UpdateStatus (m_face, ndn::fib::FaceMetric::NDN_FIB_GREEN);
     
     Simulator::Schedule (Seconds (0.1), &Client::SendPacket, this, std::string("/1"), 1);
@@ -60,7 +60,7 @@
   {
     Ptr<Packet> pkt = Create<Packet> (0);
     ndn::InterestHeader i;
-    i.SetName (Create<ndn::NameComponents> (prefix));
+    i.SetName (Create<ndn::Name> (prefix));
     i.SetNonce (nonce);
     i.SetInterestLifetime (Seconds (0.5));
 
@@ -75,7 +75,7 @@
   NS_TEST_ASSERT_MSG_EQ (fib->GetSize (), 1, "There should be only one entry");
 
   Ptr<const ndn::fib::Entry> fibEntry = fib->Begin ();
-  NS_TEST_ASSERT_MSG_EQ (fibEntry->GetPrefix (), ndn::NameComponents ("/"), "prefix should be /");
+  NS_TEST_ASSERT_MSG_EQ (fibEntry->GetPrefix (), ndn::Name ("/"), "prefix should be /");
 }
 
 void
diff --git a/test/ndnSIM-serialization.cc b/test/ndnSIM-serialization.cc
index 1ce7130..16ddb51 100644
--- a/test/ndnSIM-serialization.cc
+++ b/test/ndnSIM-serialization.cc
@@ -38,8 +38,8 @@
 {
   InterestHeader source;
   
-  source.SetName (Create<NameComponents> (boost::lexical_cast<NameComponents> ("/test/test2")));
-  NS_TEST_ASSERT_MSG_EQ (source.GetName (), boost::lexical_cast<NameComponents> ("/test/test2"), "set/get name failed");
+  source.SetName (Create<Name> (boost::lexical_cast<Name> ("/test/test2")));
+  NS_TEST_ASSERT_MSG_EQ (source.GetName (), boost::lexical_cast<Name> ("/test/test2"), "set/get name failed");
   
   source.SetScope (2);
   NS_TEST_ASSERT_MSG_EQ (source.GetScope (), 2, "set/get scope failed");
@@ -73,8 +73,8 @@
 {
   ContentObjectHeader source;
   
-  source.SetName (Create<NameComponents> (boost::lexical_cast<NameComponents> ("/test/test2/1")));
-  NS_TEST_ASSERT_MSG_EQ (source.GetName (), boost::lexical_cast<NameComponents> ("/test/test2/1"), "set/get name failed");
+  source.SetName (Create<Name> (boost::lexical_cast<Name> ("/test/test2/1")));
+  NS_TEST_ASSERT_MSG_EQ (source.GetName (), boost::lexical_cast<Name> ("/test/test2/1"), "set/get name failed");
   
   source.SetFreshness (Seconds (10));
   NS_TEST_ASSERT_MSG_EQ (source.GetFreshness (), Seconds (10), "set/get freshness failed");
diff --git a/test/ndnSIM-trie.cc b/test/ndnSIM-trie.cc
index ed8356e..ee53ad4 100644
--- a/test/ndnSIM-trie.cc
+++ b/test/ndnSIM-trie.cc
@@ -60,7 +60,7 @@
 {
   cerr << "TrieTest is temporarily broken" << endl;
   // typedef trie_with_policy<
-  //   ns3::NdnNameComponents,
+  //   ns3::NdnName,
   //   smart_pointer_payload_traits<Integer>,
   //   multi_policy_traits<
   //     mpl::vector2<lru_policy_traits,random_policy_traits>
@@ -75,7 +75,7 @@
   
   // // // // x.getTrie ().PrintStat (std::cout);
   
-  // ns3::NdnNameComponents n1,n2,n3,n4;
+  // ns3::NdnName n1,n2,n3,n4;
   // // // // n1("a")("b")("c");
   // // // // n2("a")("b")("d");
   // // // // n3("a")("b")("f");
@@ -108,12 +108,12 @@
   // node->AggregateObject (fib);
   // Ptr<ndn::Face> face = CreateObject<ndn::AppFace> (app);
 
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla"), face, 1);
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla/1"), face, 1);
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla/2"), face, 1);
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla/3"), face, 1);
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla/1/1"), face, 1);
-  // fib->Add (lexical_cast<ndn::NameComponents> ("/bla/1/2"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla/1"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla/2"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla/3"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla/1/1"), face, 1);
+  // fib->Add (lexical_cast<ndn::Name> ("/bla/1/2"), face, 1);
   
   // cout << *fib << endl;
 
@@ -125,7 +125,7 @@
   //     std::cout << *item.payload () << " " << std::endl;
   //   }
 
-  // ns3::NdnNameComponents n4;
+  // ns3::NdnName n4;
   // n4("a")("c");
     
   // // std::cout << *x->find (n4).get<0> ();
