Now everything compiles, but not everything is working yet
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);