diff --git a/examples/ndn-tree-cs-tracers.cpp b/examples/ndn-tree-cs-tracers.cpp
index ce27888..a713ad2 100644
--- a/examples/ndn-tree-cs-tracers.cpp
+++ b/examples/ndn-tree-cs-tracers.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,14 +70,17 @@
 
   // Install CCNx stack on all nodes
   ndn::StackHelper ndnHelper;
-  ndnHelper.SetForwardingStrategy("ns3::ndn::fw::BestRoute");
+  ndnHelper.SetContentStoreChoice(false);
   ndnHelper.SetContentStore("ns3::ndn::cs::Lru", "MaxSize",
                             "100"); // default ContentStore parameters
   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"),
@@ -99,12 +102,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);
 
   // Calculate and install FIBs
-  ccnxGlobalRoutingHelper.CalculateRoutes();
+  ndn::GlobalRoutingHelper::CalculateRoutes();
 
   Simulator::Stop(Seconds(20.0));
 
@@ -115,3 +118,11 @@
 
   return 0;
 }
+
+} // namespace ns3
+
+int
+main(int argc, char* argv[])
+{
+  return ns3::main(argc, argv);
+}
