diff --git a/examples/ndn-tree-app-delay-tracer.cpp b/examples/ndn-tree-app-delay-tracer.cpp
index b503843..4a6c0c8 100644
--- a/examples/ndn-tree-app-delay-tracer.cpp
+++ b/examples/ndn-tree-app-delay-tracer.cpp
@@ -24,7 +24,7 @@
 #include "ns3/network-module.h"
 #include "ns3/ndnSIM-module.h"
 
-using namespace ns3;
+namespace ns3 {
 
 /**
  * This scenario simulates a tree topology (using topology reader module)
@@ -34,22 +34,22 @@
  *    \------/      \------/      \------/      \------/
  *         ^          ^                ^           ^
  *         |          |                |           |
- *    	    \        /                  \         /
- *           \      /  			 \  	 /    10Mbps / 1ms
- *            \    /  			  \ 	/
- *             |  |  			   |   |
- *    	       v  v                        v   v
+ *          \        /                  \         /
+ *           \      /                    \       /    10Mbps / 1ms
+ *            \    /                      \     /
+ *             |  |                        |   |
+ *             v  v                        v   v
  *          /-------\                    /-------\
  *          | rtr-1 |                    | rtr-2 |
  *          \-------/                    \-------/
  *                ^                        ^
- *      	  |	 		   |
- *      	   \			  /  10 Mpbs / 1ms
- *      	    +--------+  +--------+
- *      		     |  |
+ *                |                        |
+ *                 \                      /  10 Mpbs / 1ms
+ *                  +--------+  +--------+
+ *                           |  |
  *                           v  v
- *      		  /--------\
- *      		  |  root  |
+ *                        /--------\
+ *                        |  root  |
  *                        \--------/
  *
  *
@@ -70,12 +70,14 @@
 
   // Install CCNx stack on all nodes
   ndn::StackHelper ndnHelper;
-  ndnHelper.SetForwardingStrategy("ns3::ndn::fw::BestRoute");
   ndnHelper.InstallAll();
 
+  // Choosing forwarding strategy
+  ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/best-route");
+
   // 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> consumers[4] = {Names::Find<Node>("leaf-1"), Names::Find<Node>("leaf-2"),
@@ -98,12 +100,12 @@
 
   // Register /root prefix with global routing controller and
   // install producer that will satisfy Interests in /root namespace
-  ccnxGlobalRoutingHelper.AddOrigins("/root", producer);
+  ndnGlobalRoutingHelper.AddOrigins("/root", producer);
   producerHelper.SetPrefix("/root");
   producerHelper.Install(producer).Start(Seconds(9));
 
   // Calculate and install FIBs
-  ccnxGlobalRoutingHelper.CalculateRoutes();
+  ndn::GlobalRoutingHelper::CalculateRoutes();
 
   Simulator::Stop(Seconds(20.0));
 
@@ -114,3 +116,11 @@
 
   return 0;
 }
+
+} // namespace ns3
+
+int
+main(int argc, char* argv[])
+{
+  return ns3::main(argc, argv);
+}
