diff --git a/test/ndnSIM-pit.cc b/test/ndnSIM-pit.cc
index 38016e4..c439adc 100644
--- a/test/ndnSIM-pit.cc
+++ b/test/ndnSIM-pit.cc
@@ -29,17 +29,17 @@
 namespace ns3
 {
 
-class Client : public NdnApp
+class Client : public ndn::App
 {
 protected:
   void
   StartApplication ()
   {
-    NdnApp::StartApplication ();
+    ndn::App::StartApplication ();
 
     // add default route
-    Ptr<NdnFibEntry> fibEntry = GetNode ()->GetObject<NdnFib> ()->Add (NdnNameComponents ("/"), m_face, 0);
-    fibEntry->UpdateStatus (m_face, NdnFibFaceMetric::NDN_FIB_GREEN);
+    Ptr<ndn::fib::Entry> fibEntry = GetNode ()->GetObject<ndn::Fib> ()->Add (ndn::NameComponents ("/"), 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);
     Simulator::Schedule (Seconds (0.2), &Client::SendPacket, this, std::string("/2"), 1);
@@ -50,7 +50,7 @@
   void
   StopApplication ()
   {
-    NdnApp::StopApplication ();
+    ndn::App::StopApplication ();
   }
 
 private:
@@ -58,8 +58,8 @@
   SendPacket (const std::string &prefix, uint32_t nonce)
   {
     Ptr<Packet> pkt = Create<Packet> (0);
-    NdnInterestHeader i;
-    i.SetName (Create<NdnNameComponents> (prefix));
+    ndn::InterestHeader i;
+    i.SetName (Create<ndn::NameComponents> (prefix));
     i.SetNonce (nonce);
     i.SetInterestLifetime (Seconds (0.5));
 
@@ -69,38 +69,38 @@
 };
 
 void
-PitTest::Test (Ptr<NdnFib> fib)
+PitTest::Test (Ptr<ndn::Fib> fib)
 {
   NS_TEST_ASSERT_MSG_EQ (fib->GetSize (), 1, "There should be only one entry");
 
-  Ptr<const NdnFibEntry> fibEntry = fib->Begin ();
-  NS_TEST_ASSERT_MSG_EQ (fibEntry->GetPrefix (), NdnNameComponents ("/"), "prefix should be /");
+  Ptr<const ndn::fib::Entry> fibEntry = fib->Begin ();
+  NS_TEST_ASSERT_MSG_EQ (fibEntry->GetPrefix (), ndn::NameComponents ("/"), "prefix should be /");
 }
 
 void
-PitTest::Check0 (Ptr<NdnPit> pit)
+PitTest::Check0 (Ptr<ndn::Pit> pit)
 {
-  // NS_LOG_DEBUG (*GetNode ()->GetObject<NdnPit> ());
+  // NS_LOG_DEBUG (*GetNode ()->GetObject<ndn::Pit> ());
   NS_TEST_ASSERT_MSG_EQ (pit->GetSize (), 0, "There should 0 entries in PIT");
 }
 
 void
-PitTest::Check1 (Ptr<NdnPit> pit)
+PitTest::Check1 (Ptr<ndn::Pit> pit)
 {
   NS_TEST_ASSERT_MSG_EQ (pit->GetSize (), 1, "There should 1 entry in PIT");
 }
 
 void
-PitTest::Check2 (Ptr<NdnPit> pit)
+PitTest::Check2 (Ptr<ndn::Pit> pit)
 {
-  // NS_LOG_DEBUG (*GetNode ()->GetObject<NdnPit> ());
+  // NS_LOG_DEBUG (*GetNode ()->GetObject<ndn::Pit> ());
   NS_TEST_ASSERT_MSG_EQ (pit->GetSize (), 2, "There should 2 entries in PIT");
 }
 
 void
-PitTest::Check3 (Ptr<NdnPit> pit)
+PitTest::Check3 (Ptr<ndn::Pit> pit)
 {
-  // NS_LOG_DEBUG (*GetNode ()->GetObject<NdnPit> ());
+  // NS_LOG_DEBUG (*GetNode ()->GetObject<ndn::Pit> ());
   NS_TEST_ASSERT_MSG_EQ (pit->GetSize (), 3, "There should 3 entries in PIT");
 }
 
@@ -109,25 +109,25 @@
 PitTest::DoRun ()
 {
   Ptr<Node> node = CreateObject<Node> ();
-  NdnStackHelper ndn;
+  ndn::StackHelper ndn;
   ndn.Install (node);
 
   Ptr<Client> app1 = CreateObject<Client> ();
   node->AddApplication (app1);
 
-  Simulator::Schedule (Seconds (0.0001), &PitTest::Test, this, node->GetObject<NdnFib> ());
+  Simulator::Schedule (Seconds (0.0001), &PitTest::Test, this, node->GetObject<ndn::Fib> ());
     
-  Simulator::Schedule (Seconds (0.01), &PitTest::Check0, this, node->GetObject<NdnPit> ());
+  Simulator::Schedule (Seconds (0.01), &PitTest::Check0, this, node->GetObject<ndn::Pit> ());
 
-  Simulator::Schedule (Seconds (0.11), &PitTest::Check1, this, node->GetObject<NdnPit> ());
-  Simulator::Schedule (Seconds (0.21), &PitTest::Check2, this, node->GetObject<NdnPit> ());
-  Simulator::Schedule (Seconds (0.31), &PitTest::Check3, this, node->GetObject<NdnPit> ());
-  
-  Simulator::Schedule (Seconds (0.61), &PitTest::Check3, this, node->GetObject<NdnPit> ());
-  Simulator::Schedule (Seconds (0.71), &PitTest::Check2, this, node->GetObject<NdnPit> ());
-  Simulator::Schedule (Seconds (0.81), &PitTest::Check1, this, node->GetObject<NdnPit> ());
+  Simulator::Schedule (Seconds (0.11), &PitTest::Check1, this, node->GetObject<ndn::Pit> ());
+  Simulator::Schedule (Seconds (0.21), &PitTest::Check2, this, node->GetObject<ndn::Pit> ());
+  Simulator::Schedule (Seconds (0.31), &PitTest::Check3, this, node->GetObject<ndn::Pit> ());
 
-  Simulator::Schedule (Seconds (0.91), &PitTest::Check0, this, node->GetObject<NdnPit> ());
+  Simulator::Schedule (Seconds (0.61), &PitTest::Check3, this, node->GetObject<ndn::Pit> ());
+  Simulator::Schedule (Seconds (0.71), &PitTest::Check2, this, node->GetObject<ndn::Pit> ());
+  Simulator::Schedule (Seconds (0.81), &PitTest::Check1, this, node->GetObject<ndn::Pit> ());
+
+  Simulator::Schedule (Seconds (0.91), &PitTest::Check0, this, node->GetObject<ndn::Pit> ());
 
   Simulator::Stop (Seconds (1.0));
   Simulator::Run ();
diff --git a/test/ndnSIM-pit.h b/test/ndnSIM-pit.h
index 0e5a26e..bd8ad3d 100644
--- a/test/ndnSIM-pit.h
+++ b/test/ndnSIM-pit.h
@@ -24,11 +24,12 @@
 #include "ns3/test.h"
 #include "ns3/ptr.h"
 
-namespace ns3
-{
+namespace ns3 {
 
-class NdnFib;
-class NdnPit;
+namespace ndn {
+class Fib;
+class Pit;
+}
   
 class PitTest : public TestCase
 {
@@ -41,11 +42,11 @@
 private:
   virtual void DoRun ();
 
-  void Test (Ptr<NdnFib> fib);
-  void Check0 (Ptr<NdnPit> pit);
-  void Check1 (Ptr<NdnPit> pit);
-  void Check2 (Ptr<NdnPit> pit);
-  void Check3 (Ptr<NdnPit> pit);
+  void Test (Ptr<ndn::Fib> fib);
+  void Check0 (Ptr<ndn::Pit> pit);
+  void Check1 (Ptr<ndn::Pit> pit);
+  void Check2 (Ptr<ndn::Pit> pit);
+  void Check3 (Ptr<ndn::Pit> pit);
 };
   
 }
diff --git a/test/ndnSIM-serialization.cc b/test/ndnSIM-serialization.cc
index 9342317..dff675e 100644
--- a/test/ndnSIM-serialization.cc
+++ b/test/ndnSIM-serialization.cc
@@ -15,7 +15,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ *         Ilya Moiseenko <iliamo@cs.ucla.edu>
  */
 
 #include "ns3/core-module.h"
@@ -26,17 +27,18 @@
 
 using namespace std;
 
-namespace ns3
-{
+namespace ns3 {
+
+using namespace ndn;
 
 NS_LOG_COMPONENT_DEFINE ("ndn.Serialization");
 
 void
 InterestSerializationTest::DoRun ()
 {
-  NdnInterestHeader source;
-  source.SetName                (Create<NdnNameComponents> (boost::lexical_cast<NdnNameComponents> ("/test/test2")));
-  NS_TEST_ASSERT_MSG_EQ (source.GetName (), boost::lexical_cast<NdnNameComponents> ("/test/test2"), "set/get name failed");
+  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.SetMinSuffixComponents (20);
   NS_TEST_ASSERT_MSG_EQ (source.GetMinSuffixComponents (), 20, "set/get minSuffixComponents failed");
@@ -44,8 +46,8 @@
   source.SetMaxSuffixComponents (40);
   NS_TEST_ASSERT_MSG_EQ (source.GetMaxSuffixComponents (), 40, "set/get maxSuffixComponents failed");
 
-  source.SetExclude (Create<NdnNameComponents> (boost::lexical_cast<NdnNameComponents> ("/exclude/exclude2")));
-  NS_TEST_ASSERT_MSG_EQ (source.GetExclude (), boost::lexical_cast<NdnNameComponents> ("/exclude/exclude2"), "set/get exclude failed");
+  source.SetExclude (Create<NameComponents> (boost::lexical_cast<NameComponents> ("/exclude/exclude2")));
+  NS_TEST_ASSERT_MSG_EQ (source.GetExclude (), boost::lexical_cast<NameComponents> ("/exclude/exclude2"), "set/get exclude failed");
 
   source.SetChildSelector       (false);
   NS_TEST_ASSERT_MSG_EQ (source.IsEnabledChildSelector (), false, "set/get child selector failed");
@@ -74,7 +76,7 @@
   packet.AddHeader (source);
 	
   //deserialization
-  NdnInterestHeader target;
+  InterestHeader target;
   packet.RemoveHeader (target);
   
   NS_TEST_ASSERT_MSG_EQ (source.GetName ()                  , target.GetName ()                 , "source/target name failed");
diff --git a/test/ndnSIM-stats-tree.cc b/test/ndnSIM-stats-tree.cc
index 298c492..902cbe4 100644
--- a/test/ndnSIM-stats-tree.cc
+++ b/test/ndnSIM-stats-tree.cc
@@ -29,10 +29,10 @@
 
 NS_LOG_COMPONENT_DEFINE ("ndn.StatsTreeTest");
 
-namespace ns3
-{
+namespace ns3 {
 
-using namespace ndnSIM;
+using namespace ndn;
+using namespace ndn::ndnSIM;
 
 void
 StatsTreeTest::DoRun ()
@@ -45,20 +45,20 @@
 void
 StatsTreeTest::BasicTests ()
 {
-  NdnStackHelper ndn;
+  StackHelper ndn;
 
   Ptr<Node> node1   = CreateObject<Node> ();
-  Ptr<NdnApp> app1 = CreateObject<NdnProducer> ();
+  Ptr<App> app1 = CreateObject<Producer> ();
   node1->AddApplication (app1);
   ndn.Install (node1);
 
-  Ptr<NdnFace> face1 = CreateObject<NdnAppFace> (app1);
-  Ptr<NdnFace> face2 = CreateObject<NdnAppFace> (app1);
-  Ptr<NdnFace> face3 = CreateObject<NdnAppFace> (app1);
+  Ptr<Face> face1 = CreateObject<AppFace> (app1);
+  Ptr<Face> face2 = CreateObject<AppFace> (app1);
+  Ptr<Face> face3 = CreateObject<AppFace> (app1);
 
-  node1->GetObject<Ndn> ()->AddFace (face1);
-  node1->GetObject<Ndn> ()->AddFace (face2);
-  node1->GetObject<Ndn> ()->AddFace (face3);
+  node1->GetObject<L3Protocol> ()->AddFace (face1);
+  node1->GetObject<L3Protocol> ()->AddFace (face2);
+  node1->GetObject<L3Protocol> ()->AddFace (face3);
 
   // NS_LOG_DEBUG (*face1 << ", " << *face2 << ", " << *face3);
   
