diff --git a/examples/ccnx-simple-with-pcap.cc b/examples/ccnx-simple-with-pcap.cc
index b97565b..ea2f318 100644
--- a/examples/ccnx-simple-with-pcap.cc
+++ b/examples/ccnx-simple-with-pcap.cc
@@ -37,7 +37,7 @@
   Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("10ms"));
   Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
 
-  Config::SetDefault ("ns3::NdnProducer::SignatureBits", StringValue ("1"));
+  Config::SetDefault ("ns3::ndn::Producer::SignatureBits", StringValue ("1"));
   
   // Creating nodes
   NodeContainer nodes;
@@ -48,29 +48,29 @@
   p2p.Install (nodes.Get (0), nodes.Get (1));
   p2p.Install (nodes.Get (1), nodes.Get (2));
 
-  // Install Ndn stack on all nodes
-  NdnStackHelper ndnHelper;
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
   ndnHelper.SetDefaultRoutes (true);
   ndnHelper.InstallAll ();
 
   // Installing applications
 
   // Consumer
-  NdnAppHelper consumerHelper ("ns3::NdnConsumerCbr");
+  ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
   // Consumer will request /prefix/0, /prefix/1, ...
   consumerHelper.SetPrefix ("/prefix");
   consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second
   consumerHelper.Install (nodes.Get (0)); // first node
 
   // Producer
-  NdnAppHelper producerHelper ("ns3::NdnProducer");
+  ndn::AppHelper producerHelper ("ns3::ndn::Producer");
   // Producer will reply to all requests starting with /prefix
   producerHelper.SetPrefix ("/prefix");
   producerHelper.SetAttribute ("PayloadSize", StringValue("1024"));
   producerHelper.Install (nodes.Get (2)); // last node
 
   PcapWriter trace ("ndn-simple-trace.pcap");
-  Config::ConnectWithoutContext ("/NodeList/*/$ns3::NdnL3Protocol/FaceList/*/NdnTx",
+  Config::ConnectWithoutContext ("/NodeList/*/$ns3::ndn::L3Protocol/FaceList/*/NdnTx",
 				 MakeCallback (&PcapWriter::TracePacket, &trace));
   
   Simulator::Stop (Seconds (20.0));
diff --git a/examples/ndn-grid.cc b/examples/ndn-grid.cc
index ace79df..a37d245 100644
--- a/examples/ndn-grid.cc
+++ b/examples/ndn-grid.cc
@@ -78,17 +78,13 @@
   PointToPointGridHelper grid (nGrid, nGrid, p2p);
   grid.BoundingBox(100,100,200,200);
 
-  // Install Ndn stack on all nodes
+  // Install NDN stack on all nodes
   NS_LOG_INFO ("Installing Ndn stack on all nodes");
-  NdnStackHelper ndnHelper;
-  ndnHelper.SetContentStore ("ns3::NdnContentStoreLru",
-                              "Size", "10");
-  // ndnHelper.SetContentStore ("ns3::NdnContentStoreRandom",
-  //                             "Size", "10");
-  // ndnHelper.SetForwardingStrategy ("ns3::ndnSIM::BestRoute");
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetContentStore ("ns3::ndn::cs::Lru", "Size", "10");
   ndnHelper.InstallAll ();
 
-  NdnGlobalRoutingHelper ndnGlobalRoutingHelper;
+  ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
   ndnGlobalRoutingHelper.InstallAll ();
   
   // Getting containers for the consumer/producer
@@ -100,17 +96,17 @@
   NS_LOG_INFO ("Installing Applications");
   std::string prefix = "/prefix";
   
-  NdnAppHelper consumerHelper ("ns3::NdnConsumerCbr");
+  ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
   consumerHelper.SetPrefix (prefix);
   consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 10 interests a second
   ApplicationContainer consumers = consumerHelper.Install (consumerNodes);
   
-  NdnAppHelper producerHelper ("ns3::NdnProducer");
+  ndn::AppHelper producerHelper ("ns3::ndn::Producer");
   producerHelper.SetPrefix (prefix);
   producerHelper.SetAttribute ("PayloadSize", StringValue("1024"));
   ApplicationContainer producers = producerHelper.Install (producer);
 
-  // Add /prefix origins to NdnGlobalRouter
+  // Add /prefix origins to ndn::GlobalRouter
   ndnGlobalRoutingHelper.AddOrigins (prefix, producer);
 
   // Calculate and install FIBs
@@ -126,7 +122,7 @@
        node ++)
     {
       std::cout << "Node #" << (*node)->GetId () << std::endl;
-      (*node)->GetObject<NdnContentStore> ()->Print (std::cout);
+      (*node)->GetObject<ndn::ContentStore> ()->Print (std::cout);
       std::cout << std::endl;
     }
   
diff --git a/examples/ndn-simple.cc b/examples/ndn-simple.cc
index 5a3b6bf..eaa9d09 100644
--- a/examples/ndn-simple.cc
+++ b/examples/ndn-simple.cc
@@ -44,7 +44,7 @@
  *
  * To run scenario and see what is happening, use the following command:
  *
- *     NS_LOG=NdnSimple:NdnConsumer ./waf --run=ndn-simple
+ *     NS_LOG=ndn.Simple:ndn.Consumer ./waf --run=ndn-simple
  */
 
 NS_LOG_COMPONENT_DEFINE ("ndn.Simple");
@@ -73,12 +73,12 @@
 
   // Install Ndn stack on all nodes
   NS_LOG_INFO ("Installing Ndn stack");
-  NdnStackHelper ndnHelper;
+  ndn::StackHelper ndnHelper;
   ndnHelper.SetDefaultRoutes (true);
   ndnHelper.InstallAll ();
 
   NS_LOG_INFO ("Installing Ndn applications");
-  NdnAppHelper consumerHelper ("ns3::NdnConsumerCbr");
+  ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
   // Consumer will request /prefix/0, /prefix/1, ...
   consumerHelper.SetPrefix ("/prefix/0");
   consumerHelper.SetAttribute ("Frequency", StringValue ("1")); // 10 interests a second
@@ -90,7 +90,7 @@
   consumers.Start (Seconds (1));
   consumers.Stop  (Seconds (1.3));
   
-  NdnAppHelper producerHelper ("ns3::NdnProducer");
+  ndn::AppHelper producerHelper ("ns3::ndn::Producer");
   // Producer will reply to all requests starting with /prefix
   producerHelper.SetPrefix ("/prefix");
   producerHelper.SetAttribute ("PayloadSize", StringValue("1024"));
diff --git a/examples/trie.cc b/examples/trie.cc
index 2523857..9000f38 100644
--- a/examples/trie.cc
+++ b/examples/trie.cc
@@ -30,7 +30,7 @@
 
 using namespace std;
 using namespace ns3;
-using namespace ndnSIM;
+using namespace ndn::ndnSIM;
 using namespace boost;
 
 NS_LOG_COMPONENT_DEFINE ("ndn.Trie");
