diff --git a/examples/synthetic-topology.cc b/examples/synthetic-topology.cc
index b19b375..f03c22e 100644
--- a/examples/synthetic-topology.cc
+++ b/examples/synthetic-topology.cc
@@ -44,7 +44,7 @@
   Simulator::Schedule (Seconds (10.0), PrintTime);
 }
 
-int 
+int
 main (int argc, char *argv[])
 {
   string input ("./src/NDNabstraction/examples/synthetic-topology.txt");
@@ -64,18 +64,18 @@
   // --------------------------------------------
     
   AnnotatedTopologyReader reader ("/synthetic");
-  reader.SetMobilityModel ("ns3::SpringMobilityModel");
+  // reader.SetMobilityModel ("ns3::SpringMobilityModel");
   reader.SetFileName (input);
   NodeContainer nodes = reader.Read ();
-  SpringMobilityHelper::InstallSprings (reader.LinksBegin (), reader.LinksEnd ());
+  // SpringMobilityHelper::InstallSprings (reader.LinksBegin (), reader.LinksEnd ());
     
   InternetStackHelper stack;
   Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
   stack.SetRoutingHelper (ipv4RoutingHelper);
   stack.Install (nodes);
-  /*
-    reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
-  */
+
+  reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+
   NS_LOG_INFO("Nodes = " << nodes.GetN());
   NS_LOG_INFO("Links = " << reader.LinksSize ());
     
@@ -84,31 +84,50 @@
   CcnxStackHelper ccnxHelper;
   ccnxHelper.SetForwardingStrategy (strategy);
   ccnxHelper.EnableLimits (true, Seconds(0.1));
-  ccnxHelper.SetDefaultRoutes (true);
+  ccnxHelper.SetDefaultRoutes (false);
   ccnxHelper.InstallAll ();
     
   NS_LOG_INFO ("Installing Applications");
-  CcnxConsumerHelper consumerHelper ("/1");
-  ApplicationContainer consumers = consumerHelper.Install (Names::Find<Node> ("/synthetic", "NODE1"));
-    
-  CcnxConsumerHelper consumerHelper2("/2");
-  ApplicationContainer consumers2 = consumerHelper2.Install(Names::Find<Node> ("/synthetic", "NODE2"));
-    
-  CcnxProducerHelper producerHelper ("/1",1024);
-  ApplicationContainer producers = producerHelper.Install (Names::Find<Node> ("/synthetic", "NODE6"));
-        
-  CcnxProducerHelper producerHelper2 ("/2",1024);
-  ApplicationContainer producers2 = producerHelper2.Install (Names::Find<Node> ("/synthetic", "NODE7"));
+  CcnxConsumerHelper consumerHelper ("/6");
+  ApplicationContainer consumers = consumerHelper.Install (Names::Find<Node> ("/synthetic", "c1"));
 
+  consumerHelper.SetPrefix ("/7");
+  ApplicationContainer consumers2 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c2"));
+
+  consumerHelper.SetPrefix ("/8");
+  ApplicationContainer consumers3 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c3"));
+  
+  consumerHelper.SetPrefix ("/10");
+  ApplicationContainer consumers4 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c4"));
+
+  consumers.Start (Seconds (2.121212123));
+  consumers2.Start (Seconds (0.166666));
+  consumers3.Start (Seconds (4.1235432));
+  consumers4.Start (Seconds (3.00005421));
+  
+  CcnxProducerHelper producerHelper ("/6",1024);
+  ApplicationContainer producers = producerHelper.Install (Names::Find<Node> ("/synthetic", "p1"));
+        
+  CcnxProducerHelper producerHelper2 ("/7",1024);
+  ApplicationContainer producers2 = producerHelper2.Install (Names::Find<Node> ("/synthetic", "p2"));
+
+  CcnxProducerHelper producerHelper3 ("/8",1024);
+  ApplicationContainer producers3 = producerHelper3.Install (Names::Find<Node> ("/synthetic", "p3"));
+  
+  CcnxProducerHelper producerHelper4 ("/10",1024);
+  ApplicationContainer producers4 = producerHelper4.Install (Names::Find<Node> ("/synthetic", "p4"));
+  
   Simulator::Schedule (Seconds (10.0), PrintTime);
 
   // Populate FIB based on IPv4 global routing controller
-  //ccnxHelper.InstallFakeGlobalRoutes ();
-  //ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "NODE1"));
-  //ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "NODE7"));
-    
+  ccnxHelper.InstallFakeGlobalRoutes ();
+  ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p1"));
+  ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p2"));
+  ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p3"));
+  ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p4"));
+
   Simulator::Stop (finishTime);
-    
+
   NS_LOG_INFO ("Run Simulation.");
   Simulator::Run ();
   Simulator::Destroy ();
diff --git a/examples/synthetic-topology.txt b/examples/synthetic-topology.txt
index 2c080d9..0d175b0 100644
--- a/examples/synthetic-topology.txt
+++ b/examples/synthetic-topology.txt
@@ -1,20 +1,29 @@
 router
 #name	city	latitude	longitude
-NODE1	NODE1	60		20
-NODE2	NODE2	20		20
-NODE3	NODE3	40		40
-NODE4	NODE4	20		60
-NODE5	NODE5	40		80
-NODE6	NODE6	60  		100
-NODE7	NODE7	20		100
+c1	NODE1	50		30
+c2	NODE2	30		30
+c3	x	10		30
+n1	NODE3	40		40
+n12	NODE4	30		60
+n2	NODE5	40		80
+p1	NODE6	50  		90
+p2	NODE7	30		90
+p3	x	10		90
+c4	x	10		40
+p4	x	10		80
 link
 #capacity on 4/10/2003 (see page 20 of http://www.internet2.edu/presentations/spring03/20030410-Abilene-Corbato.pdf)
 #OSPF weight on 04/10/2003 (see http://www.abilene.iu.edu/images/Ab-IGP-topo.jpg)
-#x	y	capacity(kbps)	OSPF    Delay   QueueSize1	QueueSize2
-NODE1	NODE3	10Mbps 		1 	1  	150  	    	150
-NODE2	NODE3	10Mbps 		1 	1   	150 	    	150
-NODE3	NODE4	1Mbps 		1176   	1   	15  		15
-NODE3	NODE5	1Mbps 		587    	1   	15  		15
-NODE4	NODE5	1Mbps 		846    	1   	15  		15
-NODE5	NODE6	10Mbps 		260   	1   	150		150
-NODE5	NODE7	10Mbps 		700   	50  	150		150
+#x	y	capacity(kbps)	OSPF    Delay		MaxPackets
+c1	n1	10Mbps 		1 	1ms  		200
+c2	n1	10Mbps 		1 	1ms   		200
+c3	n1	10Mbps		1	1ms		200
+n1	n2	1Mbps 		1176   	1ms   		20 
+n1	n12	1Mbps 		587    	1ms   		20
+n12	n2	1Mbps 		846    	1ms   		20
+n2	p1	10Mbps 		260   	50ms   		200
+n2	p2	10Mbps 		700   	1ms  		200
+n2	p3	10Mbps		1	1ms		200
+c4	n1	10Mbps		1	1ms		200
+n2	p4	10Mbps		1	1ms		200
+
