diff --git a/examples/congestion-pop.cc b/examples/congestion-pop.cc
new file mode 100644
index 0000000..9dd3a35
--- /dev/null
+++ b/examples/congestion-pop.cc
@@ -0,0 +1,218 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/random-variable.h"
+
+#include <iostream>
+#include <sstream>
+#include <map>
+#include <list>
+#include <set>
+#include "ns3/rocketfuel-topology-reader.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+using namespace ns3;
+using namespace std;
+using namespace boost;
+
+NS_LOG_COMPONENT_DEFINE ("Scenario");
+
+void PrintTime ()
+{
+  cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
+
+  Simulator::Schedule (Seconds (1.0), PrintTime);
+}
+
+class Experiment
+{
+public:
+  void
+  ConfigureTopology ()
+  {
+    string weights   ("./src/NDNabstraction/examples/sprint-pops.weights");
+    string latencies ("./src/NDNabstraction/examples/sprint-pops.latencies");
+    string positions ("./src/NDNabstraction/examples/sprint-pops.positions");
+    string strategy  ("ns3::CcnxBestRouteStrategy");
+    // string strategy ("ns3::CcnxFloodingStrategy");
+  
+    RocketfuelWeightsReader reader ("/sprint");
+
+    reader.SetFileName (positions);
+    reader.SetFileType (RocketfuelWeightsReader::POSITIONS);
+    reader.Read ();
+  
+    reader.SetFileName (weights);
+    reader.SetFileType (RocketfuelWeightsReader::WEIGHTS);    
+    reader.Read ();
+
+    reader.SetFileName (latencies);
+    reader.SetFileType (RocketfuelWeightsReader::LATENCIES);    
+    reader.Read ();
+    
+    reader.Commit ();
+    NS_ASSERT_MSG (reader.LinksSize () != 0, "Problems reading the topology file. Failing.");
+    
+    NS_LOG_INFO("Nodes = " << reader.GetNodes ().GetN());
+    NS_LOG_INFO("Links = " << reader.LinksSize ());
+  
+    // ------------------------------------------------------------
+    // -- Read topology data.
+    // --------------------------------------------
+        
+    InternetStackHelper stack;
+    Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+    stack.SetRoutingHelper (ipv4RoutingHelper);
+    stack.Install (reader.GetNodes ());
+
+    reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+
+    // Install CCNx stack
+    NS_LOG_INFO ("Installing CCNx stack");
+    CcnxStackHelper ccnxHelper;
+    ccnxHelper.SetForwardingStrategy (strategy);
+    ccnxHelper.EnableLimits (true, Seconds(0.1));
+    ccnxHelper.SetDefaultRoutes (false);
+    ccnxHelper.InstallAll ();
+
+    // // Populate FIB based on IPv4 global routing controller
+    ccnxHelper.InstallFakeGlobalRoutes ();
+    ccnxHelper.InstallRoutesToAll ();
+
+    m_rand = UniformVariable (0, reader.GetNodes ().GetN());
+  }
+
+public:  
+  void
+  Run (const Time &finishTime)
+  {
+    cout << "Run Simulation.\n";
+    Simulator::Stop (finishTime);
+    Simulator::Schedule (Seconds (1.0), PrintTime);
+    Simulator::Run ();
+    Simulator::Destroy ();
+    cout << "Done.\n";
+  }
+
+
+  ApplicationContainer
+  AddRandomApplications (uint16_t numStreams)
+  {
+    map<uint32_t, set<uint32_t> > streams;
+    ApplicationContainer apps;
+    
+    uint16_t createdStreams = 0;
+    uint16_t guard = 0;
+    while (createdStreams < numStreams && guard < (numeric_limits<uint16_t>::max ()-1))
+      {
+        guard ++;
+        
+        uint32_t node1_num = m_rand.GetValue ();
+        uint32_t node2_num = m_rand.GetValue ();
+
+        if (node1_num == node2_num)
+          continue;
+
+        if (streams[node1_num].count (node2_num) > 0) // don't create duplicate streams
+          continue;
+        
+        streams[node1_num].insert (node2_num);
+
+        Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
+
+        CcnxAppHelper consumerHelper ("ns3::CcnxConsumer");
+        consumerHelper.SetPrefix ("/" + lexical_cast<string> (node2->GetId ()));
+        consumerHelper.SetAttribute ("MeanRate", StringValue ("2Mbps"));
+        consumerHelper.SetAttribute ("Size", StringValue ("2"));
+
+        CcnxAppHelper producerHelper ("ns3::CcnxProducer");
+        producerHelper.SetPrefix ("/" + lexical_cast<string> (node2->GetId ()));
+        
+        apps.Add
+          (consumerHelper.Install (node1));
+
+        apps.Add
+          (producerHelper.Install (node2));
+
+        createdStreams ++;
+      }
+
+    return apps;
+  }
+
+
+  UniformVariable m_rand;
+};
+
+
+int 
+main (int argc, char *argv[])
+{
+  cout << "Begin congestion-pop scenario\n";
+  
+  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
+
+  Time finishTime = Seconds (20.0);
+
+  CommandLine cmd;
+  cmd.AddValue ("finish", "Finish time", finishTime);
+  cmd.Parse (argc, argv);
+
+  Experiment experiment;
+
+  for (uint32_t i = 0; i < 100; i++)
+    {
+  
+      experiment.ConfigureTopology ();
+      ApplicationContainer apps = experiment.AddRandomApplications (20);
+
+      for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+        {
+          cout << "From " << apps.Get (i*2)->GetNode ()->GetId ()
+               << " to "  << apps.Get (i*2 + 1)->GetNode ()->GetId ();
+          cout << "\n";
+        }
+  
+      CcnxTraceHelper traceHelper;
+      // traceHelper.EnableAggregateAppAll ("ns3::CcnxConsumer");
+      // traceHelper.EnableAggregateAppAll ("ns3::CcnxProducer");
+      // traceHelper.EnableAggregateL3All ();
+      // traceHelper.SetL3TraceFile ("trace-l3.log");
+      // traceHelper.SetAppTraceFile ("trace-app.log");
+      // traceHelper.EnableRateL3All ("rate-trace.log");
+      traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumer", "consumers-seqs.log");
+
+      experiment.Run (finishTime);
+    }
+
+  cout << "Finish congestion-pop scenario\n";
+  return 0;
+}
diff --git a/examples/sprint-pops.positions b/examples/sprint-pops.positions
new file mode 100644
index 0000000..928e443
--- /dev/null
+++ b/examples/sprint-pops.positions
@@ -0,0 +1,53 @@
+router
+0	unknown	-135.764	253.112
+1	unknown	-124.26	242.106
+2	unknown	-133.746	192.374
+3	unknown	-125.181	203.615
+4	unknown	-139.012	235.48
+5	unknown	-114.553	255.538
+6	unknown	-117.383	242.123
+7	unknown	-124.098	258.288
+8	unknown	-109.597	235.032
+9	unknown	-114.699	219.473
+10	unknown	-141.269	245.046
+11	unknown	-104.331	242.371
+12	unknown	-133.569	286.269
+13	unknown	-123.315	277.497
+14	unknown	-98.0591	218.885
+15	unknown	-103.065	209.249
+16	unknown	-97.6019	232.002
+17	unknown	-104.764	227.93
+18	unknown	-89.9659	217.538
+19	unknown	-111.243	201.883
+20	unknown	-105.782	215.929
+21	unknown	-96.3977	226.003
+22	unknown	-97.9862	200.901
+23	unknown	-78.8835	225.308
+24	unknown	-90.3514	236.091
+25	unknown	-117.767	232.718
+26	unknown	-114.42	224.798
+27	unknown	-136.333	222.043
+28	unknown	-122.444	228.514
+31	unknown	-97.4791	241.611
+32	unknown	-110.351	277.334
+33	unknown	-117.777	292.69
+35	unknown	-94.4122	211.85
+29	unknown	-88.3097	226.526
+36	unknown	-110.615	242.037
+38	unknown	-88.4545	248.603
+39	unknown	-103.356	298.492
+40	unknown	-116.839	305.342
+34	unknown	-131.979	243.096
+42	unknown	-100.976	287.547
+45	unknown	-82.2028	243.344
+46	unknown	-96.0201	256.972
+37	unknown	-103.425	254.683
+47	unknown	-88.0706	256.064
+48	unknown	-110.226	295.199
+44	unknown	-97.4778	278.521
+49	unknown	-106.546	309.269
+43	unknown	-76.3178	258.2
+30	unknown	-127.539	212.622
+50	unknown	-74.0048	237.243
+41	unknown	-105.291	188.236
+51	unknown	-115.94	188.128
diff --git a/examples/wscript b/examples/wscript
deleted file mode 100644
index 0d2e449..0000000
--- a/examples/wscript
+++ /dev/null
@@ -1,8 +0,0 @@
-## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-
-def build(bld):
-    if not bld.env['ENABLE_EXAMPLES']:
-        return;
-    
-    # obj = bld.create_ns3_program('stupid-interest-generator', ['NDNabstraction'])
-    # obj.source = 'stupid-interest-generator.cc'
