diff --git a/examples/ndn-congestion-alt-topo-plugin.cc b/examples/ndn-congestion-alt-topo-plugin.cc
index 5d593f6..b591250 100644
--- a/examples/ndn-congestion-alt-topo-plugin.cc
+++ b/examples/ndn-congestion-alt-topo-plugin.cc
@@ -68,12 +68,12 @@
   topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-11-node-two-bottlenecks.txt");
   topologyReader.Read ();
 
-  // Install CCNx stack on all nodes
-  ndn::StackHelper ccnxHelper;
-  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy");
-  ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru",
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::CustomStrategy");
+  ndnHelper.SetContentStore ("ns3::ndn::cs::Lru",
                               "MaxSize", "1"); // ! Attention ! If set to 0, then MaxSize is infinite
-  ccnxHelper.InstallAll ();
+  ndnHelper.InstallAll ();
 
   // Getting containers for the consumer/producer
   Ptr<Node> consumers[4] = { Names::Find<Node> ("c1"), Names::Find<Node> ("c2"), Names::Find<Node> ("c3"), Names::Find<Node> ("c4") };
diff --git a/examples/ndn-congestion-topo-plugin.cc b/examples/ndn-congestion-topo-plugin.cc
index f80a816..77069ee 100644
--- a/examples/ndn-congestion-topo-plugin.cc
+++ b/examples/ndn-congestion-topo-plugin.cc
@@ -54,16 +54,16 @@
   topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-6-node.txt");
   topologyReader.Read ();
 
-  // Install CCNx stack on all nodes
-  ndn::StackHelper ccnxHelper;
-  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
-  ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru",
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+  ndnHelper.SetContentStore ("ns3::ndn::cs::Lru",
                               "MaxSize", "10000");
-  ccnxHelper.InstallAll ();
+  ndnHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
-  ndn::GlobalRoutingHelper ccnxGlobalRoutingHelper;
-  ccnxGlobalRoutingHelper.InstallAll ();
+  ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
+  ndnGlobalRoutingHelper.InstallAll ();
 
   // Getting containers for the consumer/producer
   Ptr<Node> consumer1 = Names::Find<Node> ("Src1");
@@ -90,18 +90,18 @@
 
   // Register /dst1 prefix with global routing controller and
   // install producer that will satisfy Interests in /dst1 namespace
-  ccnxGlobalRoutingHelper.AddOrigins ("/dst1", producer1);
+  ndnGlobalRoutingHelper.AddOrigins ("/dst1", producer1);
   producerHelper.SetPrefix ("/dst1");
   producerHelper.Install (producer1);
 
   // Register /dst2 prefix with global routing controller and
   // install producer that will satisfy Interests in /dst2 namespace
-  ccnxGlobalRoutingHelper.AddOrigins ("/dst2", producer2);
+  ndnGlobalRoutingHelper.AddOrigins ("/dst2", producer2);
   producerHelper.SetPrefix ("/dst2");
   producerHelper.Install (producer2);
 
   // Calculate and install FIBs
-  ccnxGlobalRoutingHelper.CalculateRoutes ();
+  ndn::GlobalRoutingHelper::CalculateRoutes ();
 
   Simulator::Stop (Seconds (20.0));
 
diff --git a/examples/ndn-grid-topo-plugin.cc b/examples/ndn-grid-topo-plugin.cc
index 6d0e042..bbb8e86 100644
--- a/examples/ndn-grid-topo-plugin.cc
+++ b/examples/ndn-grid-topo-plugin.cc
@@ -58,21 +58,21 @@
   topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt");
   topologyReader.Read ();
 
-  // Install CCNx stack on all nodes
-  ndn::StackHelper ccnxHelper;
-  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
-  ccnxHelper.InstallAll ();
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+  ndnHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
-  ndn::GlobalRoutingHelper ccnxGlobalRoutingHelper;
-  ccnxGlobalRoutingHelper.InstallAll ();
+  ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
+  ndnGlobalRoutingHelper.InstallAll ();
 
   // Getting containers for the consumer/producer
   Ptr<Node> producer = Names::Find<Node> ("Node8");
   NodeContainer consumerNodes;
   consumerNodes.Add (Names::Find<Node> ("Node0"));
 
-  // Install CCNx applications
+  // Install NDN applications
   std::string prefix = "/prefix";
 
   ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
@@ -86,10 +86,10 @@
   producerHelper.Install (producer);
 
   // Add /prefix origins to ndn::GlobalRouter
-  ccnxGlobalRoutingHelper.AddOrigins (prefix, producer);
+  ndnGlobalRoutingHelper.AddOrigins (prefix, producer);
 
   // Calculate and install FIBs
-  ccnxGlobalRoutingHelper.CalculateRoutes ();
+  ndn::GlobalRoutingHelper::CalculateRoutes ();
 
   Simulator::Stop (Seconds (20.0));
 
diff --git a/examples/ndn-grid.cc b/examples/ndn-grid.cc
index 0651e22..8b75165 100644
--- a/examples/ndn-grid.cc
+++ b/examples/ndn-grid.cc
@@ -67,21 +67,21 @@
   PointToPointGridHelper grid (3, 3, p2p);
   grid.BoundingBox(100,100,200,200);
 
-  // Install CCNx stack on all nodes
-  ndn::StackHelper ccnxHelper;
-  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
-  ccnxHelper.InstallAll ();
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+  ndnHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
-  ndn::GlobalRoutingHelper ccnxGlobalRoutingHelper;
-  ccnxGlobalRoutingHelper.InstallAll ();
+  ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
+  ndnGlobalRoutingHelper.InstallAll ();
 
   // Getting containers for the consumer/producer
   Ptr<Node> producer = grid.GetNode (2, 2);
   NodeContainer consumerNodes;
   consumerNodes.Add (grid.GetNode (0,0));
 
-  // Install CCNx applications
+  // Install NDN applications
   std::string prefix = "/prefix";
 
   ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
@@ -95,10 +95,10 @@
   producerHelper.Install (producer);
 
   // Add /prefix origins to ndn::GlobalRouter
-  ccnxGlobalRoutingHelper.AddOrigins (prefix, producer);
+  ndnGlobalRoutingHelper.AddOrigins (prefix, producer);
 
   // Calculate and install FIBs
-  ccnxGlobalRoutingHelper.CalculateRoutes ();
+  ndn::GlobalRoutingHelper::CalculateRoutes ();
 
   Simulator::Stop (Seconds (20.0));
 
diff --git a/examples/ndn-simple.cc b/examples/ndn-simple.cc
index 78993ee..dea70a0 100644
--- a/examples/ndn-simple.cc
+++ b/examples/ndn-simple.cc
@@ -66,10 +66,10 @@
   p2p.Install (nodes.Get (0), nodes.Get (1));
   p2p.Install (nodes.Get (1), nodes.Get (2));
 
-  // Install CCNx stack on all nodes
-  ndn::StackHelper ccnxHelper;
-  ccnxHelper.SetDefaultRoutes (true);
-  ccnxHelper.InstallAll ();
+  // Install NDN stack on all nodes
+  ndn::StackHelper ndnHelper;
+  ndnHelper.SetDefaultRoutes (true);
+  ndnHelper.InstallAll ();
 
   // Installing applications
 
