Moving helper components to the plugins/ folder. Disabling compilation of these components
diff --git a/helper/ccnb-parser/syntax-tree/ccnb-parser-block.h b/helper/ccnb-parser/syntax-tree/ccnb-parser-block.h
index fe098ad..9538a1f 100644
--- a/helper/ccnb-parser/syntax-tree/ccnb-parser-block.h
+++ b/helper/ccnb-parser/syntax-tree/ccnb-parser-block.h
@@ -65,6 +65,16 @@
   virtual boost::any accept( Visitor &v, boost::any param ) = 0;
 };
 
+// Necessary until Buffer::Iterator gets PeekU8 call
+inline
+uint8_t
+BufferIteratorPeekU8 (Buffer::Iterator &i)
+{
+  uint8_t ret = i.ReadU8 ();
+  i.Prev ();
+  return ret;
+}
+
 }
 }
 
diff --git a/helper/ccnb-parser/syntax-tree/ccnb-parser-dtag.cc b/helper/ccnb-parser/syntax-tree/ccnb-parser-dtag.cc
index 0fdea06..68fc794 100644
--- a/helper/ccnb-parser/syntax-tree/ccnb-parser-dtag.cc
+++ b/helper/ccnb-parser/syntax-tree/ccnb-parser-dtag.cc
@@ -41,7 +41,7 @@
     return; // hack #1. Do not process nesting block for <Content>
   
   // parse attributes until first nested block reached
-  while (!start.IsEnd () && start.PeekU8 ()!=CCN_CLOSE)
+  while (!start.IsEnd () && BufferIteratorPeekU8 (start)!=CCN_CLOSE)
     {
       Ptr<Block> block = Block::ParseBlock (start);
       if (DynamicCast<BaseAttr> (block)!=0)
@@ -54,7 +54,7 @@
 	}
 
   // parse the rest of nested blocks
-  while (!start.IsEnd () && start.PeekU8 ()!=CCN_CLOSE)
+  while (!start.IsEnd () && BufferIteratorPeekU8 (start)!=CCN_CLOSE)
     {
       // hack #2. Stop processing nested blocks if last block was <Content>
       if (m_dtag == CCN_DTAG_ContentObject && // we are in <ContentObject>
diff --git a/helper/ccnb-parser/syntax-tree/ccnb-parser-tag.cc b/helper/ccnb-parser/syntax-tree/ccnb-parser-tag.cc
index 5862ad4..723c57e 100644
--- a/helper/ccnb-parser/syntax-tree/ccnb-parser-tag.cc
+++ b/helper/ccnb-parser/syntax-tree/ccnb-parser-tag.cc
@@ -37,7 +37,7 @@
     throw CcnbDecodingException ();
   
   // parse attributes until first nested block reached
-  while (!start.IsEnd () && start.PeekU8 ()!=CCN_CLOSE)
+  while (!start.IsEnd () && BufferIteratorPeekU8 (start)!=CCN_CLOSE)
     {
       Ptr<Block> block = Block::ParseBlock (start);
       if (DynamicCast<BaseAttr> (block)!=0)
@@ -50,7 +50,7 @@
 	}
 
   // parse the rest of nested blocks
-  while (!start.IsEnd () && start.PeekU8 ()!=CCN_CLOSE)
+  while (!start.IsEnd () && BufferIteratorPeekU8 (start)!=CCN_CLOSE)
     {
       Ptr<Block> block = Block::ParseBlock (start);
 	  m_nestedTags.push_back (block);
diff --git a/helper/ccnx-trace-helper.cc b/helper/ccnx-trace-helper.cc
deleted file mode 100644
index a153862..0000000
--- a/helper/ccnx-trace-helper.cc
+++ /dev/null
@@ -1,415 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-trace-helper.h"
-
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/packet.h"
-#include "ns3/log.h"
-#include "ns3/assert.h"
-#include "ns3/node-list.h"
-#include "ns3/object-vector.h"
-#include "ns3/simulator.h"
-#include "ns3/names.h"
-#include "ns3/tcp-l4-protocol.h"
-#include "ns3/node.h"
-
-#include <boost/ref.hpp>
-#include <boost/lexical_cast.hpp>
-
-#include "tracers/ccnx-aggregate-app-tracer.h"
-#include "tracers/ccnx-aggregate-l3-tracer.h"
-#include "tracers/ccnx-rate-l3-tracer.h"
-#include "tracers/ccnx-seqs-app-tracer.h"
-#include "tracers/ipv4-rate-l3-tracer.h"
-#include "tracers/ipv4-seqs-app-tracer.h"
-#include "tracers/ccnx-consumer-window-tracer.h"
-#include "tracers/ccnx-path-weight-tracer.h"
-
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-#include <fstream>
-
-using namespace std;
-using namespace boost;
-
-NS_LOG_COMPONENT_DEFINE ("CcnxTraceHelper");
-
-namespace ns3 {
-
-CcnxTraceHelper::CcnxTraceHelper ()
-  : m_l3RateTrace (0)
-  , m_appSeqsTrace (0)
-  , m_ipv4RateTrace (0)
-  , m_ipv4AppSeqsTrace (0)
-  , m_windowsTrace (0)
-  , m_windowsTcpTrace (0)
-  , m_pathWeightsTrace (0)
-{
-}
-
-CcnxTraceHelper::~CcnxTraceHelper ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_l3RateTrace != 0) delete m_l3RateTrace;
-  if (m_appSeqsTrace != 0) delete m_appSeqsTrace;
-  if (m_ipv4AppSeqsTrace != 0) delete m_ipv4AppSeqsTrace;
-  if (m_windowsTrace != 0) delete m_windowsTrace;
-  if (m_windowsTcpTrace != 0) delete m_windowsTcpTrace;
-  if (m_pathWeightsTrace != 0) delete m_pathWeightsTrace;
-  if (m_ipv4RateTrace != 0) delete m_ipv4RateTrace;
-  
-  if (m_apps.size () > 0)
-    {
-      ofstream of;
-      if (!m_appTrace.empty ())
-        {
-          of.open (m_appTrace.c_str (), ios_base::trunc | ios_base::out);
-          of << "# ";
-          m_apps.front ()->PrintHeader (of);
-          of << "\n";
-        }
-      
-      for (std::list<Ptr<CcnxAppTracer> >::iterator app = m_apps.begin ();
-           app != m_apps.end ();
-           app++)
-        {
-          if (!m_appTrace.empty ())
-            {
-              (*app)->Print (of);
-              of << "\n";
-            }
-          else
-            {
-              NS_LOG_INFO (*(*app));
-            }
-        }
-    }
-
-  if (m_l3s.size () > 0)
-    {
-      ofstream of;
-      if (!m_l3Trace.empty ())
-        {
-          of.open (m_l3Trace.c_str (), ios_base::trunc | ios_base::out);
-          of << "# ";
-          m_l3s.front ()->PrintHeader (of);
-          of << "\n";
-        }
-      
-      for (std::list<Ptr<CcnxL3Tracer> >::iterator l3 = m_l3s.begin ();
-           l3 != m_l3s.end ();
-           l3++)
-        {
-          if (!m_l3Trace.empty ())
-            {
-              (*l3)->Print (of);
-              of << "\n";
-            }
-          else
-            {
-              NS_LOG_INFO (*(*l3));
-            }
-        }
-    }
-}
-
-void
-CcnxTraceHelper::SetAppTraceFile (const std::string &appTrace)
-{
-  NS_LOG_FUNCTION (this << appTrace);
-  m_appTrace = appTrace;
-}
-
-void
-CcnxTraceHelper::SetL3TraceFile (const std::string &l3Trace)
-{
-  NS_LOG_FUNCTION (this << l3Trace);
-  m_l3Trace = l3Trace;
-}
-
-void
-CcnxTraceHelper::EnableAggregateAppAll (const std::string &appName)
-{
-  NS_LOG_FUNCTION (this << appName);
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      ObjectVectorValue apps;
-      (*node)->GetAttribute ("ApplicationList", apps);
-
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-      
-      uint32_t appId = 0;
-      for (ObjectVectorValue::Iterator app = apps.Begin ();
-           app != apps.End ();
-           app++, appId++)
-        {
-          NS_LOG_DEBUG ("App: " << lexical_cast<string> (appId) << ", typeId: " << (*app)->GetInstanceTypeId ().GetName ());
-          if ((*app)->GetInstanceTypeId ().GetName () == appName)
-            {
-              m_apps.push_back (Create<CcnxAggregateAppTracer> (appName,
-                                                                *node,
-                                                                lexical_cast<string> (appId)));
-            }
-        }
-    }
-}
-
-void
-CcnxTraceHelper::EnableAggregateL3All ()
-{
-  NS_LOG_FUNCTION (this);
-  
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-      
-      m_l3s.push_back (Create<CcnxAggregateL3Tracer> (*node));
-    }
-}
-
-void
-CcnxTraceHelper::EnableRateL3All (const std::string &l3RateTrace)
-{
-  NS_LOG_FUNCTION (this);
-  m_l3RateTrace = new ofstream (l3RateTrace.c_str (), ios::trunc);
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-
-      Ptr<CcnxRateL3Tracer> trace = Create<CcnxRateL3Tracer> (boost::ref(*m_l3RateTrace), *node);
-      trace->SetAveragingPeriod (Seconds (0.2));
-      m_l3Rates.push_back (trace);
-    }
-
-  if (m_l3Rates.size () > 0)
-    {
-      // *m_l3RateTrace << "# "; // not necessary for R's read.table
-      m_l3Rates.front ()->PrintHeader (*m_l3RateTrace);
-      *m_l3RateTrace << "\n";
-    }
-}
-
-void
-CcnxTraceHelper::EnableIpv4RateL3All (const std::string &file)
-{
-  NS_LOG_FUNCTION (this);
-  m_ipv4RateTrace = new ofstream (file.c_str (), ios::trunc);
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-
-      Ptr<Ipv4RateL3Tracer> trace = Create<Ipv4RateL3Tracer> (boost::ref(*m_ipv4RateTrace), *node);
-      trace->SetAveragingPeriod (Seconds (0.2));
-      m_ipv4Rates.push_back (trace);
-    }
-
-  if (m_ipv4Rates.size () > 0)
-    {
-      // *m_ipv4RateTrace << "# "; // not necessary for R's read.table
-      m_ipv4Rates.front ()->PrintHeader (*m_ipv4RateTrace);
-      *m_ipv4RateTrace << "\n";
-    }
-}
-
-
-void
-CcnxTraceHelper::EnableSeqsAppAll (const std::string &appName, const std::string &trace)
-{
-  NS_LOG_FUNCTION (this);
-  m_appSeqsTrace = new ofstream (trace.c_str (), ios::trunc);
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      ObjectVectorValue apps;
-      (*node)->GetAttribute ("ApplicationList", apps);
-
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-      
-      uint32_t appId = 0;
-      for (ObjectVectorValue::Iterator app = apps.Begin ();
-           app != apps.End ();
-           app++, appId++)
-        {
-          NS_LOG_DEBUG ("App: " << lexical_cast<string> (appId) << ", typeId: " << (*app)->GetInstanceTypeId ().GetName ());
-          if ((*app)->GetInstanceTypeId ().GetName () == appName)
-            {
-              Ptr<CcnxSeqsAppTracer> trace = Create<CcnxSeqsAppTracer> (boost::ref(*m_appSeqsTrace),
-                                                                        appName,
-                                                                        *node,
-                                                                        lexical_cast<string> (appId));
-              m_appSeqs.push_back (trace);
-            }
-        }
-      
-    }
-
-  if (m_appSeqs.size () > 0)
-    {
-      // *m_l3RateTrace << "# "; // not necessary for R's read.table
-      m_appSeqs.front ()->PrintHeader (*m_appSeqsTrace);
-      *m_appSeqsTrace << "\n";
-    }
-}
-
-void
-CcnxTraceHelper::EnableIpv4SeqsAppAll (const std::string &trace)
-{
-  NS_LOG_FUNCTION (this);
-  m_ipv4AppSeqsTrace = new ofstream (trace.c_str (), ios::trunc);
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      ObjectVectorValue apps;
-      (*node)->GetAttribute ("ApplicationList", apps);
-
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-      
-      uint32_t appId = 0;
-      for (ObjectVectorValue::Iterator app = apps.Begin ();
-           app != apps.End ();
-           app++, appId++)
-        {
-          NS_LOG_DEBUG ("App: " << lexical_cast<string> (appId) << ", typeId: " << (*app)->GetInstanceTypeId ().GetName ());
-          if ((*app)->GetInstanceTypeId ().GetName () == "ns3::PacketSink" ||
-              (*app)->GetInstanceTypeId ().GetName () == "ns3::BulkSendApplication")
-            {
-              Ptr<Ipv4SeqsAppTracer> trace = Create<Ipv4SeqsAppTracer> (boost::ref(*m_ipv4AppSeqsTrace),
-                                                                        *node,
-                                                                        lexical_cast<string> (appId));
-              m_ipv4AppSeqs.push_back (trace);
-            }
-        }
-      
-    }
-
-  if (m_ipv4AppSeqs.size () > 0)
-    {
-      m_ipv4AppSeqs.front ()->PrintHeader (*m_ipv4AppSeqsTrace);
-      *m_ipv4AppSeqsTrace << "\n";
-    }
-}
-
-void
-CcnxTraceHelper::EnableWindowsAll (const std::string &windowTrace)
-{
-  NS_LOG_FUNCTION (this);
-  m_windowsTrace = new ofstream (windowTrace.c_str (), ios::trunc);
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      ObjectVectorValue apps;
-      (*node)->GetAttribute ("ApplicationList", apps);
-
-      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
-      
-      uint32_t appId = 0;
-      for (ObjectVectorValue::Iterator app = apps.Begin ();
-           app != apps.End ();
-           app++, appId++)
-        {
-          if ((*app)->GetInstanceTypeId ().GetName () == "ns3::CcnxConsumerWindow")
-            {
-              Ptr<CcnxConsumerWindowTracer> trace = Create<CcnxConsumerWindowTracer> (boost::ref(*m_windowsTrace),
-                                                                                      *node,
-                                                                                      lexical_cast<string> (appId));
-              m_windows.push_back (trace);
-            }
-        }
-      
-    }
-
-  if (m_windows.size () > 0)
-    {
-      m_windows.front ()->PrintHeader (*m_windowsTrace);
-      *m_windowsTrace << "\n";
-    }
-}
-
-void
-CcnxTraceHelper::TcpConnect (Ptr<Node> node)
-{
-  ObjectVectorValue sockets;
-  node->GetObject<TcpL4Protocol> ()->GetAttribute ("SocketList", sockets);
-  
-  uint32_t sockId = 0;      
-  for (ObjectVectorValue::Iterator socket = sockets.Begin ();
-       socket != sockets.End ();
-       socket++, sockId++)
-    {
-      // std::cout << "Node: " << node->GetId () << ", Socket " << sockId << "\n";
-          
-      Ptr<TcpCongestionWindowTracer> trace = Create<TcpCongestionWindowTracer> (boost::ref(*m_windowsTcpTrace),
-                                                                                node,
-                                                                                lexical_cast<string> (sockId));
-      m_windowsTcp.push_back (trace);
-    }
-}
-
-void
-CcnxTraceHelper::EnableWindowsTcpAll (const std::string &windowTrace)
-{
-  NS_LOG_FUNCTION (this);
-  m_windowsTcpTrace = new ofstream (windowTrace.c_str (), ios::trunc);
-
-  WindowTracer::PrintHeader (*m_windowsTcpTrace);
-  *m_windowsTcpTrace << "\n";
-}
-
-void
-CcnxTraceHelper::EnablePathWeights (const std::string &pathWeights)
-{
-  NS_LOG_FUNCTION (this);
-  m_pathWeightsTrace = new ofstream (pathWeights.c_str (), ios::trunc);
-
-  CcnxPathWeightTracer::PrintHeader (*m_pathWeightsTrace);
-  *m_pathWeightsTrace << "\n";
-
-  for (NodeList::Iterator node = NodeList::Begin ();
-       node != NodeList::End ();
-       node++)
-    {
-      Ptr<CcnxPathWeightTracer> trace = Create<CcnxPathWeightTracer> (boost::ref(*m_pathWeightsTrace),
-                                                                      *node);
-      m_pathWeights.push_back (trace);
-    }
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-aggregate-app-tracer.cc b/helper/tracers/ccnx-aggregate-app-tracer.cc
deleted file mode 100644
index 6129e8c..0000000
--- a/helper/tracers/ccnx-aggregate-app-tracer.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-aggregate-app-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-namespace ns3 {
-    
-CcnxAggregateAppTracer::CcnxAggregateAppTracer (const std::string &app, Ptr<Node> node, const std::string &appId)
-  : CcnxAppTracer (app, node, appId)
-  , m_inInterests (0)
-  , m_outInterests (0)
-  , m_inNacks (0)
-  , m_inData (0)
-  , m_outData (0)
-
-  , m_inInterestsBytes (0)
-  , m_outInterestsBytes (0)
-  , m_inNacksBytes (0)
-  , m_inDataBytes (0)
-  , m_outDataBytes (0)
-{
-}
-
-CcnxAggregateAppTracer::CcnxAggregateAppTracer (const std::string &app, const std::string &node, const std::string &appId)
-  : CcnxAppTracer (app, node, appId)
-  , m_inInterests (0)
-  , m_outInterests (0)
-  , m_inNacks (0)
-  , m_inData (0)
-  , m_outData (0)
-
-  , m_inInterestsBytes (0)
-  , m_outInterestsBytes (0)
-  , m_inNacksBytes (0)
-  , m_inDataBytes (0)
-  , m_outDataBytes (0)
-{
-}
-
-void
-CcnxAggregateAppTracer::Reset ()
-{
-  m_inInterests = 0;
-  m_outInterests = 0;
-  m_inNacks = 0;
-  m_inData = 0;
-  m_outData = 0;
-
-  m_inInterestsBytes = 0;
-  m_outInterestsBytes = 0;
-  m_inNacksBytes = 0;
-  m_inDataBytes = 0;
-  m_outDataBytes = 0;
-}
-
-void
-CcnxAggregateAppTracer::PrintHeader (std::ostream &os) const
-{
-  os << "NodeId" << "\t"
-     << "App" << "\t"
-     << "AppId" << "\t"
-     << "InInterests" << "\t"
-     << "OutInterests" << "\t"
-    
-     << "InNacks" << "\t"
-    
-     << "InData" << "\t"
-     << "OutData" << "\t"
-
-     << "InInterestsBytes" << "\t"
-     << "OutInterestsBytes" << "\t"
-    
-     << "InNacksBytes" << "\t"
-    
-     << "InDataBytes" << "\t"
-     << "OutDataBytes";
-}
-
-void
-CcnxAggregateAppTracer::Print (std::ostream &os) const
-{
-  os << m_node << "\t"
-     << m_app << "\t"
-     << m_appId << "\t"
-
-     << m_inInterests << "\t"
-     << m_outInterests << "\t"
-    
-     << m_inNacks << "\t"
-    
-     << m_inData << "\t"
-     << m_outData << "\t"
-
-     << m_inInterestsBytes << "\t"
-     << m_outInterestsBytes << "\t"
-    
-     << m_inNacksBytes << "\t"
-    
-     << m_inDataBytes << "\t"
-     << m_outDataBytes;
-}
-
-void
-CcnxAggregateAppTracer::OutInterests (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  m_outInterests++;
-  m_outInterestsBytes += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateAppTracer::OutData (std::string context,
-                                 Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                                 Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  m_outData++;
-  m_outDataBytes += header->GetSerializedSize () + payload->GetSerializedSize ();
-}
-
-void
-CcnxAggregateAppTracer::InInterests (std::string context,
-                                     Ptr<const CcnxInterestHeader> header,
-                                     Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  m_inInterests++;
-  m_inInterestsBytes += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateAppTracer::InNacks (std::string context,
-                                 Ptr<const CcnxInterestHeader> header,
-                                 Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  m_inNacks++;
-  m_inNacksBytes += header->GetSerializedSize ();
-}
-  
-void
-CcnxAggregateAppTracer::InData (std::string context,
-                                Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                                Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  m_inData++;
-  m_inDataBytes += header->GetSerializedSize () + payload->GetSerializedSize ();
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-aggregate-app-tracer.h b/helper/tracers/ccnx-aggregate-app-tracer.h
deleted file mode 100644
index e321b64..0000000
--- a/helper/tracers/ccnx-aggregate-app-tracer.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_AGGREGATE_APP_TRACER_H
-#define CCNX_AGGREGATE_APP_TRACER_H
-
-#include "ns3/ccnx-app-tracer.h"
-
-namespace ns3 {
-
-class CcnxAggregateAppTracer : public CcnxAppTracer
-{
-public:
-  CcnxAggregateAppTracer (const std::string &app, Ptr<Node> node, const std::string &appId = "*");
-  CcnxAggregateAppTracer (const std::string &app, const std::string &node, const std::string &appId = "*");
-  virtual ~CcnxAggregateAppTracer () { };
-
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  OutInterests (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  InInterests  (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  InNacks (std::string context,
-           Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  OutData (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-  
-  virtual void
-  InData  (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-protected:
-  void
-  Reset ();
-
-protected:
-  uint64_t m_inInterests;
-  uint64_t m_outInterests;
-  uint64_t m_inNacks;
-  uint64_t m_inData; 
-  uint64_t m_outData;
-
-  uint64_t m_inInterestsBytes;
-  uint64_t m_outInterestsBytes;
-  uint64_t m_inNacksBytes;
-  uint64_t m_inDataBytes;
-  uint64_t m_outDataBytes;
-};
-
-} // namespace ns3
-
-#endif // CCNX_AGGREGATE_APP_TRACER_H
diff --git a/helper/tracers/ccnx-aggregate-l3-tracer.cc b/helper/tracers/ccnx-aggregate-l3-tracer.cc
deleted file mode 100644
index 596f036..0000000
--- a/helper/tracers/ccnx-aggregate-l3-tracer.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-aggregate-l3-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-namespace ns3 {
-    
-CcnxAggregateL3Tracer::CcnxAggregateL3Tracer (Ptr<Node> node)
-  : CcnxL3Tracer (node)
-{
-  Reset ();
-}
-
-CcnxAggregateL3Tracer::CcnxAggregateL3Tracer (const std::string &node)
-  : CcnxL3Tracer (node)
-{
-  Reset ();
-}
-
-void
-CcnxAggregateL3Tracer::Stats::Reset ()
-{
-  m_inInterests = 0;
-  m_outInterests = 0;
-  m_dropInterests = 0;
-  m_inNacks = 0;
-  m_outNacks = 0;
-  m_dropNacks = 0;
-  m_inData = 0;
-  m_outData = 0;
-  m_dropData = 0;
-}
-
-
-void
-CcnxAggregateL3Tracer::Reset ()
-{
-  m_packets.Reset ();
-  m_bytes.Reset ();
-}
-
-
-void
-CcnxAggregateL3Tracer::PrintHeader (std::ostream &os) const
-{
-  os << "Node" << "\t"
-     << "InInterests" << "\t"
-     << "OutInterests" << "\t"
-     << "DropInterests" << "\t"
-    
-     << "InNacks" << "\t"
-     << "OutNacks" << "\t"
-     << "DropNacks" << "\t"
-    
-     << "InData" << "\t"
-     << "OutData" << "\t"
-     << "DropData" << "\t"
-    
-     << "InInterestsBytes" << "\t"
-     << "OutInterestsBytes" << "\t"
-     << "DropInterestsBytes" << "\t"
-    
-     << "InNacksBytes" << "\t"
-     << "OutNacksBytes" << "\t"
-     << "DropNacksBytes" << "\t"
-    
-     << "InDataBytes" << "\t"
-     << "OutDataBytes" << "\t"
-     << "DropDataBytes";
-}
-
-void
-CcnxAggregateL3Tracer::Print (std::ostream &os) const
-{
-  os << m_node << "\t"
-     << m_packets.m_inInterests   << "\t"
-     << m_packets.m_outInterests  << "\t"
-     << m_packets.m_dropInterests << "\t"
-
-     << m_packets.m_inNacks   << "\t"
-     << m_packets.m_outNacks  << "\t"
-     << m_packets.m_dropNacks << "\t"
-
-     << m_packets.m_inData   << "\t"
-     << m_packets.m_outData  << "\t"
-     << m_packets.m_dropData << "\t"
-
-     << m_bytes.m_inInterests   << "\t"
-     << m_bytes.m_outInterests  << "\t"
-     << m_bytes.m_dropInterests << "\t"
-
-     << m_bytes.m_inNacks   << "\t"
-     << m_bytes.m_outNacks  << "\t"
-     << m_bytes.m_dropNacks << "\t"
-
-     << m_bytes.m_inData   << "\t"
-     << m_bytes.m_outData  << "\t"
-     << m_bytes.m_dropData;
-}
-
-void
-CcnxAggregateL3Tracer::OutInterests  (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace>)
-{
-  m_packets.m_outInterests++;
-  m_bytes.m_outInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::InInterests   (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace>)
-{
-  m_packets.m_inInterests++;
-  m_bytes.m_inInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::DropInterests (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ccnx::DropReason, Ptr<const CcnxFace>)
-{
-  m_packets.m_dropInterests++;
-  m_bytes.m_dropInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::OutNacks  (std::string context,
-                                  Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace>)
-{
-  m_packets.m_outNacks++;
-  m_bytes.m_outNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::InNacks   (std::string context,
-                                  Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace>)
-{
-  m_packets.m_inNacks++;
-  m_bytes.m_inNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::DropNacks (std::string context,
-                                  Ptr<const CcnxInterestHeader> header, Ccnx::DropReason, Ptr<const CcnxFace>)
-{
-  m_packets.m_dropNacks++;
-  m_bytes.m_dropNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxAggregateL3Tracer::OutData  (std::string context,
-                                 Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                                 bool fromCache, Ptr<const CcnxFace>)
-{
-  m_packets.m_outData++;
-  m_bytes.m_outData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-void
-CcnxAggregateL3Tracer::InData   (std::string context,
-                                 Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                                 Ptr<const CcnxFace>)
-{
-  m_packets.m_inData++;
-  m_bytes.m_inData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-void
-CcnxAggregateL3Tracer::DropData (std::string context,
-                                 Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                                 Ccnx::DropReason, Ptr<const CcnxFace>)
-{
-  m_packets.m_dropData++;
-  m_bytes.m_dropData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-aggregate-l3-tracer.h b/helper/tracers/ccnx-aggregate-l3-tracer.h
deleted file mode 100644
index 8536258..0000000
--- a/helper/tracers/ccnx-aggregate-l3-tracer.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_AGGREGATE_L3_TRACER_H
-#define CCNX_AGGREGATE_L3_TRACER_H
-
-#include "ns3/ccnx-l3-tracer.h"
-
-namespace ns3 {
-
-class CcnxAggregateL3Tracer : public CcnxL3Tracer
-{
-public:
-  CcnxAggregateL3Tracer (Ptr<Node> node);
-  CcnxAggregateL3Tracer (const std::string &node);
-  virtual ~CcnxAggregateL3Tracer () { };
-  
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  OutInterests  (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  InInterests   (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropInterests (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>);
-  
-  virtual void
-  OutNacks  (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  InNacks   (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropNacks (std::string context,
-             Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>);
-  
-  virtual void
-  OutData  (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, bool fromCache, Ptr<const CcnxFace>);
-
-  virtual void
-  InData   (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropData (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ccnx::DropReason, Ptr<const CcnxFace>);
-
-protected:
-  void
-  Reset ();
-  
-protected:
-  Stats m_packets;
-  Stats m_bytes;
-};
-
-} // namespace ns3
-
-#endif // CCNX_AGGREGATE_L3_TRACER_H
diff --git a/helper/tracers/ccnx-app-tracer.cc b/helper/tracers/ccnx-app-tracer.cc
deleted file mode 100644
index a2bbbdd..0000000
--- a/helper/tracers/ccnx-app-tracer.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-app-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/names.h"
-
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-
-#include <boost/lexical_cast.hpp>
-
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-using namespace std;
-using namespace boost;
-
-namespace ns3 {
-    
-CcnxAppTracer::CcnxAppTracer (const std::string &app, Ptr<Node> node, const std::string &appId)
-  : m_app (app)
-  , m_appId (appId)
-  , m_nodePtr (node)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  Connect ();
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_node = name;
-    }
-}
-
-CcnxAppTracer::CcnxAppTracer (const std::string &app, const std::string &node, const std::string &appId)
-  : m_app (app)
-  , m_appId (appId)
-  , m_node (node)
-{
-  Connect ();
-}
-
-void
-CcnxAppTracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$"+m_app+"/TransmittedInterests",
-                   MakeCallback (&CcnxAppTracer::OutInterests, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$"+m_app+"/ReceivedNacks",
-                   MakeCallback (&CcnxAppTracer::InNacks, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$"+m_app+"/ReceivedInterests",
-                   MakeCallback (&CcnxAppTracer::InInterests, this));
-  
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$"+m_app+"/TransmittedContentObjects",
-                   MakeCallback (&CcnxAppTracer::OutData, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$"+m_app+"/ReceivedContentObjects",
-                   MakeCallback (&CcnxAppTracer::InData, this));
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-app-tracer.h b/helper/tracers/ccnx-app-tracer.h
deleted file mode 100644
index fd9f42d..0000000
--- a/helper/tracers/ccnx-app-tracer.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_APP_TRACER_H
-#define CCNX_APP_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-#include "ns3/ccnx.h"
-
-namespace ns3 {
-
-class CcnxApp;
-
-class CcnxAppTracer : public SimpleRefCount<CcnxAppTracer>
-{
-public:
-  CcnxAppTracer (const std::string &app, Ptr<Node> node, const std::string &appId = "*");
-  CcnxAppTracer (const std::string &app, const std::string &node, const std::string &appId = "*");
-  virtual ~CcnxAppTracer ()  { };
-
-  void
-  Connect ();
-
-  virtual void
-  PrintHeader (std::ostream &os) const = 0;
-  
-  virtual void
-  Print (std::ostream &os) const = 0;
-
-  virtual void
-  OutInterests (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>) = 0;
-
-  virtual void
-  InInterests  (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>) = 0;
-
-  virtual void
-  InNacks (std::string context,
-           Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>) = 0;
-
-  virtual void
-  OutData (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>) = 0;
-  
-  virtual void
-  InData  (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>) = 0;
-
-protected:
-  std::string m_app;
-  std::string m_appId;
-  std::string m_node;
-  Ptr<Node> m_nodePtr;
-};
-
-inline std::ostream&
-operator << (std::ostream &os, const CcnxAppTracer &tracer)
-{
-  os << "# ";
-  tracer.PrintHeader (os);
-  os << "\n";
-  tracer.Print (os);
-  return os;
-}
-
-} // namespace ns3
-
-#endif // CCNX_APP_TRACER_H
diff --git a/helper/tracers/ccnx-consumer-window-tracer.cc b/helper/tracers/ccnx-consumer-window-tracer.cc
deleted file mode 100644
index eea664a..0000000
--- a/helper/tracers/ccnx-consumer-window-tracer.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-consumer-window-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/names.h"
-#include "ns3/simulator.h"
-
-#include <boost/lexical_cast.hpp>
-
-using namespace std;
-using namespace boost;
-
-namespace ns3 {
-
-void
-CcnxConsumerWindowTracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$ns3::CcnxConsumerWindow/WindowTrace",
-                   MakeCallback (&WindowTracer::OnWindowChange, this));
-}
-
-void
-TcpCongestionWindowTracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::TcpL4Protocol/SocketList/*/CongestionWindow",
-                   MakeCallback (&WindowTracer::OnWindowChange, this));
-}
-
-
-WindowTracer::WindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId)
-  : m_appId (appId)
-  , m_nodePtr (node)
-  , m_os (os)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_nodeName = name;
-    }
-  else
-    m_nodeName = m_node;
-}
-
-
-void
-WindowTracer::PrintHeader (std::ostream &os)
-{
-  os << "Time\t"
-     << "Node\t"
-     << "AppId\t"
-     << "Window";
-}
-
-void
-WindowTracer::OnWindowChange (std::string context,
-                              uint32_t oldValue, uint32_t newValue)
-{
-  m_os                                                             
-    << Simulator::Now ().ToDouble (Time::S) << "\t"                   
-    << m_nodeName << "\t"                                                 
-    << m_appId << "\t"
-    << newValue << endl;
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-consumer-window-tracer.h b/helper/tracers/ccnx-consumer-window-tracer.h
deleted file mode 100644
index c538931..0000000
--- a/helper/tracers/ccnx-consumer-window-tracer.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2012 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_CONSUMER_WINDOW_TRACER_H
-#define CCNX_CONSUMER_WINDOW_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-
-namespace ns3 {
-
-class Node;
-
-class WindowTracer : public SimpleRefCount<WindowTracer>
-{
-public:
-  WindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*");
-  virtual ~WindowTracer () { };
-                
-  static void
-  PrintHeader (std::ostream &os);
-  
-  virtual void
-  OnWindowChange (std::string context,
-                  uint32_t oldValue, uint32_t newValue);
-
-protected:
-  std::string m_appId;
-  std::string m_node;
-  std::string m_nodeName;
-  Ptr<Node> m_nodePtr;
-  std::ostream& m_os;
-};
-
-class CcnxConsumerWindowTracer : public WindowTracer
-{
-public:
-  CcnxConsumerWindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*")
-    : WindowTracer (os, node, appId)
-  { Connect (); }
-
-  void
-  Connect ();
-};
-
-class TcpCongestionWindowTracer : public WindowTracer
-{
-public:
-  TcpCongestionWindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*")
-    : WindowTracer (os, node, appId)
-  { Connect (); }
-
-  void
-  Connect ();
-};
-
-
-} // namespace ns3
-
-#endif // CCNX_CONSUMER_WINDOW_TRACER_H
diff --git a/helper/tracers/ccnx-l3-tracer.cc b/helper/tracers/ccnx-l3-tracer.cc
deleted file mode 100644
index 415105b..0000000
--- a/helper/tracers/ccnx-l3-tracer.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-l3-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/names.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-
-#include <boost/lexical_cast.hpp>
-
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-using namespace std;
-
-namespace ns3 {
-    
-CcnxL3Tracer::CcnxL3Tracer (Ptr<Node> node)
-: m_nodePtr (node)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  Connect ();
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_node = name;
-    }
-}
-
-CcnxL3Tracer::CcnxL3Tracer (const std::string &node)
-: m_node (node)
-{
-  Connect ();
-}
-
-void
-CcnxL3Tracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/ForwardingStrategy/OutInterests",
-                   MakeCallback (&CcnxL3Tracer::OutInterests, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/InInterests",
-                   MakeCallback (&CcnxL3Tracer::InInterests, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/DropInterests",
-                   MakeCallback (&CcnxL3Tracer::DropInterests, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/OutNacks",
-                   MakeCallback (&CcnxL3Tracer::OutNacks, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/InNacks",
-                   MakeCallback (&CcnxL3Tracer::InNacks, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/DropNacks",
-                   MakeCallback (&CcnxL3Tracer::DropNacks, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/OutData",
-                   MakeCallback (&CcnxL3Tracer::OutData, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/InData",
-                   MakeCallback (&CcnxL3Tracer::InData, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/DropData",
-                   MakeCallback (&CcnxL3Tracer::DropData, this));
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-l3-tracer.h b/helper/tracers/ccnx-l3-tracer.h
deleted file mode 100644
index ac21cef..0000000
--- a/helper/tracers/ccnx-l3-tracer.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_L3_TRACER_H
-#define CCNX_L3_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-#include "ns3/ccnx.h"
-
-namespace ns3 {
-
-class Node;
-
-class CcnxL3Tracer : public SimpleRefCount<CcnxL3Tracer>
-{
-public:
-  CcnxL3Tracer (Ptr<Node> node);
-  CcnxL3Tracer (const std::string &node);
-  virtual ~CcnxL3Tracer () { };
-
-  void
-  Connect ();
-  
-  virtual void
-  PrintHeader (std::ostream &os) const = 0;
-
-  virtual void
-  Print (std::ostream &os) const = 0;
-  
-  virtual void
-  OutInterests  (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  InInterests   (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  DropInterests (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>) = 0;
-  
-  virtual void
-  OutNacks  (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  InNacks   (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  DropNacks (std::string context,
-             Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>) = 0;
-
-  
-  virtual void
-  OutData  (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, bool fromCache, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  InData   (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<const CcnxFace>) = 0;
-
-  virtual void
-  DropData (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ccnx::DropReason, Ptr<const CcnxFace>) = 0;
-
-protected:
-  std::string m_node;
-  Ptr<Node> m_nodePtr;
-
-  struct Stats
-  {
-    void Reset ();
-    
-    uint64_t m_inInterests;
-    uint64_t m_outInterests;
-    uint64_t m_dropInterests;
-    uint64_t m_inNacks;
-    uint64_t m_outNacks;
-    uint64_t m_dropNacks;
-    uint64_t m_inData;
-    uint64_t m_outData;
-    uint64_t m_dropData;
-  };
-};
-
-inline std::ostream&
-operator << (std::ostream &os, const CcnxL3Tracer &tracer)
-{
-  os << "# ";
-  tracer.PrintHeader (os);
-  os << "\n";
-  tracer.Print (os);
-  return os;
-}
-
-} // namespace ns3
-
-#endif // CCNX_L3_TRACER_H
diff --git a/helper/tracers/ccnx-path-weight-tracer.cc b/helper/tracers/ccnx-path-weight-tracer.cc
deleted file mode 100644
index b2685bd..0000000
--- a/helper/tracers/ccnx-path-weight-tracer.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-path-weight-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/names.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/boolean.h"
-#include "ns3/simulator.h"
-
-#include <boost/lexical_cast.hpp>
-#include <boost/foreach.hpp>
-
-using namespace std;
-
-namespace ns3 {
-    
-CcnxPathWeightTracer::CcnxPathWeightTracer (std::ostream &os, Ptr<Node> node)
-  : m_os (os)
-  , m_nodePtr (node)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  Connect ();
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_node = name;
-    }
-}
-
-void
-CcnxPathWeightTracer::Connect ()
-{
-  Config::Set ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/FaceList/*/MetricTagging",
-               BooleanValue (true));
-
-  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/*/PathWeightsTrace",
-                   MakeCallback (&CcnxPathWeightTracer::InLocalFace, this));
-}
-
-void
-CcnxPathWeightTracer::PrintHeader (std::ostream &os)
-{
-  os << "Time\t"
-     << "Src\t"
-     << "Dst\t"
-     << "SeqNo\t"
-     << "Weight";
-}
-
-void
-CcnxPathWeightTracer::InLocalFace (std::string context,
-                                   Ptr<Node> src, Ptr<Node> dst, uint32_t seqno, uint32_t weight)
-{
-  std::string srcName = Names::FindName (src);
-  std::string dstName = Names::FindName (dst);
-  if (srcName == "") srcName = boost::lexical_cast<std::string> (src->GetId ());
-  if (dstName == "") srcName = boost::lexical_cast<std::string> (dst->GetId ());
-  // std::cout << "Path weights from " << Names::FindName (src) << " to "<< Names::FindName (dst) <<" : " << weight << "\n";
-
-  m_os << Simulator::Now ().ToDouble (Time::S) << "\t"
-       << srcName << "\t"
-       << dstName << "\t"
-       << seqno << "\t"
-       << weight << "\n";
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-path-weight-tracer.h b/helper/tracers/ccnx-path-weight-tracer.h
deleted file mode 100644
index 303197d..0000000
--- a/helper/tracers/ccnx-path-weight-tracer.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_PATH_WEIGHT_TRACER_H
-#define CCNX_PATH_WEIGHT_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-#include "ns3/weights-path-stretch-tag.h"
-#include <list>
-
-namespace ns3 {
-
-class Node;
-class Packet;
-class CcnxApp;
-
-class CcnxPathWeightTracer : public SimpleRefCount<CcnxPathWeightTracer>
-{
-public:
-  CcnxPathWeightTracer (std::ostream &os, Ptr<Node> node);
-  virtual ~CcnxPathWeightTracer () { };
-
-  void
-  Connect ();
-  
-  static void
-  PrintHeader (std::ostream &os);
-
-  /**
-   * \brief Process packet weight upon reception of packet on a local face
-   */
-  virtual void
-  InLocalFace (std::string context,
-               Ptr<Node> src, Ptr<Node> dst, uint32_t seqno, uint32_t weight);
-
-protected:
-  std::ostream &m_os;
-  std::string m_node;
-  Ptr<Node> m_nodePtr;
-};
-
-} // namespace ns3
-
-#endif // CCNX_PATH_WEIGHT_TRACER_H
diff --git a/helper/tracers/ccnx-rate-l3-tracer.cc b/helper/tracers/ccnx-rate-l3-tracer.cc
deleted file mode 100644
index d44ce44..0000000
--- a/helper/tracers/ccnx-rate-l3-tracer.cc
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-rate-l3-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/simulator.h"
-
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-namespace ns3 {
-    
-CcnxRateL3Tracer::CcnxRateL3Tracer (std::ostream &os, Ptr<Node> node)
-  : CcnxL3Tracer (node)
-  , m_os (os)
-{
-  SetAveragingPeriod (Seconds (1.0));
-}
-
-CcnxRateL3Tracer::CcnxRateL3Tracer (std::ostream &os, const std::string &node)
-  : CcnxL3Tracer (node)
-  , m_os (os)
-{
-  SetAveragingPeriod (Seconds (1.0));
-}
-
-CcnxRateL3Tracer::~CcnxRateL3Tracer ()
-{
-  m_printEvent.Cancel ();
-}
-
-void
-CcnxRateL3Tracer::SetAveragingPeriod (const Time &period)
-{
-  m_period = period;
-  m_printEvent.Cancel ();
-  m_printEvent = Simulator::Schedule (m_period, &CcnxRateL3Tracer::PeriodicPrinter, this);
-}
-
-void
-CcnxRateL3Tracer::PeriodicPrinter ()
-{
-  Print (m_os);
-  Reset ();
-  
-  m_printEvent = Simulator::Schedule (m_period, &CcnxRateL3Tracer::PeriodicPrinter, this);
-}
-
-void
-CcnxRateL3Tracer::PrintHeader (std::ostream &os) const
-{
-  os << "Time" << "\t"
-
-     << "Node" << "\t"
-     << "FaceId" << "\t"
-     << "FaceDescr" << "\t"
-
-     << "Type" << "\t"
-     << "Packets" << "\t"
-     << "Kilobytes";
-}
-
-void
-CcnxRateL3Tracer::Reset ()
-{
-  for (std::map<Ptr<const CcnxFace>, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
-       stats != m_stats.end ();
-       stats++)
-    {
-      stats->second.get<0> ().Reset ();
-      stats->second.get<1> ().Reset ();
-    }
-}
-
-const double alpha = 0.8;
-
-#define STATS(INDEX) stats->second.get<INDEX> ()
-#define RATE(INDEX, fieldName) STATS(INDEX).fieldName / m_period.ToDouble (Time::S)
-
-#define PRINTER(printName, fieldName) \
-STATS(2).fieldName = /*new value*/alpha * RATE(0, fieldName) + /*old value*/(1-alpha) * STATS(2).fieldName; \
- STATS(3).fieldName = /*new value*/alpha * RATE(1, fieldName) / 1024.0 + /*old value*/(1-alpha) * STATS(3).fieldName; \
-                                                                        \
-os << time.ToDouble (Time::S) << "\t"                                   \
- << m_node << "\t"                                                      \
- << stats->first->GetId () << "\t"                                      \
- << *stats->first << "\t"                                               \
- << printName << "\t"                                                   \
- << STATS(2).fieldName  << "\t"                                        \
- << STATS(3).fieldName << "\n";
-
-void
-CcnxRateL3Tracer::Print (std::ostream &os) const
-{
-  for (std::map<Ptr<const CcnxFace>, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
-       stats != m_stats.end ();
-       stats++)
-    {
-      Time time = Simulator::Now ();
-
-      PRINTER ("InInterests",   m_inInterests);
-      PRINTER ("OutInterests",  m_outInterests);
-      PRINTER ("DropInterests", m_dropInterests);
-      
-      PRINTER ("InNacks",   m_inNacks);
-      PRINTER ("OutNacks",  m_outNacks);
-      PRINTER ("DropNacks", m_dropNacks);
-
-      PRINTER ("InData",   m_inData);
-      PRINTER ("OutData",  m_outData);
-      PRINTER ("DropData", m_dropData);
-    }
-}
-
-
-void
-CcnxRateL3Tracer::OutInterests  (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_outInterests ++;
-  m_stats[face].get<1> ().m_outInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::InInterests   (std::string context,
-                                 Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_inInterests ++;
-  m_stats[face].get<1> ().m_inInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::DropInterests (std::string context,
-                                      Ptr<const CcnxInterestHeader> header, Ccnx::DropReason, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_dropInterests ++;
-  m_stats[face].get<1> ().m_dropInterests += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::OutNacks  (std::string context,
-                                  Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_outNacks ++;
-  m_stats[face].get<1> ().m_outNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::InNacks   (std::string context,
-                                  Ptr<const CcnxInterestHeader> header, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_inNacks ++;
-  m_stats[face].get<1> ().m_inNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::DropNacks (std::string context,
-                             Ptr<const CcnxInterestHeader> header, Ccnx::DropReason, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_dropNacks ++;
-  m_stats[face].get<1> ().m_dropNacks += header->GetSerializedSize ();
-}
-
-void
-CcnxRateL3Tracer::OutData  (std::string context,
-                            Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                            bool fromCache, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_inData ++;
-  m_stats[face].get<1> ().m_inData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-void
-CcnxRateL3Tracer::InData   (std::string context,
-                            Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                            Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_outData ++;
-  m_stats[face].get<1> ().m_outData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-void
-CcnxRateL3Tracer::DropData (std::string context,
-                            Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet> payload,
-                            Ccnx::DropReason, Ptr<const CcnxFace> face)
-{
-  m_stats[face].get<0> ().m_dropData ++;
-  m_stats[face].get<1> ().m_dropData += header->GetSerializedSize () + payload->GetSize ();
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-rate-l3-tracer.h b/helper/tracers/ccnx-rate-l3-tracer.h
deleted file mode 100644
index 83e48c4..0000000
--- a/helper/tracers/ccnx-rate-l3-tracer.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_RATE_L3_TRACER_H
-#define CCNX_RATE_L3_TRACER_H
-
-#include "ns3/ccnx-l3-tracer.h"
-
-#include "ns3/nstime.h"
-#include "ns3/event-id.h"
-
-#include <boost/tuple/tuple.hpp>
-#include <map>
-
-namespace ns3 {
-
-/**
- * @ingroup ccnx
- * @brief CCNx network-layer rate tracer
- */
-class CcnxRateL3Tracer : public CcnxL3Tracer
-{
-public:
-  /**
-   * @brief Network layer tracer constructor
-   */
-  CcnxRateL3Tracer (std::ostream &os, Ptr<Node> node);
-  CcnxRateL3Tracer (std::ostream &os, const std::string &node);
-  virtual ~CcnxRateL3Tracer ();
-
-  void
-  SetAveragingPeriod (const Time &period);
-  
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  OutInterests  (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  InInterests   (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropInterests (std::string context,
-                 Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>);
-  
-  virtual void
-  OutNacks  (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  InNacks   (std::string context,
-             Ptr<const CcnxInterestHeader>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropNacks (std::string context,
-             Ptr<const CcnxInterestHeader>, Ccnx::DropReason, Ptr<const CcnxFace>);
-  
-  virtual void
-  OutData  (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, bool fromCache, Ptr<const CcnxFace>);
-
-  virtual void
-  InData   (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<const CcnxFace>);
-
-  virtual void
-  DropData (std::string context,
-            Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ccnx::DropReason, Ptr<const CcnxFace>);
-
-private:
-  void
-  PeriodicPrinter ();
-  
-  void
-  Reset ();
-
-private:
-  std::ostream& m_os;
-  Time m_period;
-  EventId m_printEvent;
-
-  mutable std::map<Ptr<const CcnxFace>, boost::tuple<Stats, Stats, Stats, Stats> > m_stats;
-};
-
-} // namespace ns3
-
-#endif // CCNX_RATE_L3_TRACER_H
diff --git a/helper/tracers/ccnx-seqs-app-tracer.cc b/helper/tracers/ccnx-seqs-app-tracer.cc
deleted file mode 100644
index 5ea636e..0000000
--- a/helper/tracers/ccnx-seqs-app-tracer.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ccnx-seqs-app-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/simulator.h"
-
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-namespace ns3 {
-    
-CcnxSeqsAppTracer::CcnxSeqsAppTracer (std::ostream &os, const std::string &app, Ptr<Node> node, const std::string &appId)
-  : CcnxAppTracer (app, node, appId)
-  , m_os (os)
-{
-}
-
-CcnxSeqsAppTracer::CcnxSeqsAppTracer (std::ostream &os, const std::string &app, const std::string &node, const std::string &appId)
-  : CcnxAppTracer (app, node, appId)
-  , m_os (os)
-{
-}
-
-void
-CcnxSeqsAppTracer::Reset ()
-{
-}
-
-void
-CcnxSeqsAppTracer::PrintHeader (std::ostream &os) const
-{
-  os << "Time\t"
-     << "Node\t"
-     << "AppName\t"
-     << "AppId\t"
-     << "Type\t"
-     << "SeqNo";
-}
-
-void
-CcnxSeqsAppTracer::Print (std::ostream &os) const
-{
-}
-
-#define PRINTER(type)                                              \
- m_os                                                              \
- << Simulator::Now ().ToDouble (Time::S) << "\t"                   \
- << m_node << "\t"                                                 \
- << m_app << "\t"                                                  \
- << m_appId << "\t"                                                \
- << type << "\t"                                                   \
- << header->GetName ().GetLastComponent () << std::endl;
-
-void
-CcnxSeqsAppTracer::OutInterests (std::string context,
-                                 Ptr<const CcnxInterestHeader> header, Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  PRINTER ("OutInterest");
-}
-
-void
-CcnxSeqsAppTracer::OutData (std::string context,
-                            Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet>,
-                            Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  PRINTER ("OutData");
-}
-
-void
-CcnxSeqsAppTracer::InInterests (std::string context,
-                                Ptr<const CcnxInterestHeader> header,
-                                Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  PRINTER ("InInterest");
-}
-
-void
-CcnxSeqsAppTracer::InNacks (std::string context,
-                            Ptr<const CcnxInterestHeader> header,
-                            Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  PRINTER ("InNacks");
-}
-  
-void
-CcnxSeqsAppTracer::InData (std::string context,
-                           Ptr<const CcnxContentObjectHeader> header, Ptr<const Packet>,
-                           Ptr<CcnxApp>, Ptr<CcnxFace>)
-{
-  PRINTER ("InData");
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ccnx-seqs-app-tracer.h b/helper/tracers/ccnx-seqs-app-tracer.h
deleted file mode 100644
index b0fd618..0000000
--- a/helper/tracers/ccnx-seqs-app-tracer.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef CCNX_SEQS_APP_TRACER_H
-#define CCNX_SEQS_APP_TRACER_H
-
-#include "ns3/ccnx-app-tracer.h"
-
-namespace ns3 {
-
-class CcnxSeqsAppTracer : public CcnxAppTracer
-{
-public:
-  CcnxSeqsAppTracer (std::ostream &os, const std::string &app, Ptr<Node> node, const std::string &appId = "*");
-  CcnxSeqsAppTracer (std::ostream &os, const std::string &app, const std::string &node, const std::string &appId = "*");
-  virtual ~CcnxSeqsAppTracer () { };
-
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  OutInterests (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  InInterests  (std::string context,
-                Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  InNacks (std::string context,
-           Ptr<const CcnxInterestHeader>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-  virtual void
-  OutData (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-  
-  virtual void
-  InData  (std::string context,
-           Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>, Ptr<CcnxApp>, Ptr<CcnxFace>);
-
-protected:
-  void
-  Reset ();
-
-protected:
-  std::ostream& m_os;
-};
-
-} // namespace ns3
-
-#endif // CCNX_AGGREGATE_APP_TRACER_H
diff --git a/helper/tracers/ipv4-app-tracer.cc b/helper/tracers/ipv4-app-tracer.cc
deleted file mode 100644
index 57fb612..0000000
--- a/helper/tracers/ipv4-app-tracer.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2012 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ipv4-app-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/names.h"
-
-#include <boost/lexical_cast.hpp>
-
-using namespace std;
-using namespace boost;
-
-namespace ns3 {
-    
-Ipv4AppTracer::Ipv4AppTracer (Ptr<Node> node, const std::string &appId)
-  : m_appId (appId)
-  , m_nodePtr (node)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  Connect ();
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_node = name;
-    }
-}
-
-void
-Ipv4AppTracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/SendOutgoing",
-                   MakeCallback (&Ipv4AppTracer::Tx, this));
-
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/LocalDeliver",
-                   MakeCallback (&Ipv4AppTracer::Rx, this));
-  
-  // Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Tx",
-  //                  MakeCallback (&Ipv4AppTracer::Rx, this));
-
-  // Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$ns3::PacketSink/Rx",
-  //                  MakeCallback (&Ipv4AppTracer::InData, this));
-
-  // Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$ns3::BulkSendApplication/Tx",
-  //                  MakeCallback (&Ipv4AppTracer::OutData, this));
-}
-
-
-} // namespace ns3
diff --git a/helper/tracers/ipv4-app-tracer.h b/helper/tracers/ipv4-app-tracer.h
deleted file mode 100644
index f24c6c3..0000000
--- a/helper/tracers/ipv4-app-tracer.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2012 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef IPV4_APP_TRACER_H
-#define IPV4_APP_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-#include "ns3/ipv4.h"
-
-namespace ns3 {
-
-class Ipv4Header;
-
-class Ipv4AppTracer : public SimpleRefCount<Ipv4AppTracer>
-{
-public:
-  Ipv4AppTracer (Ptr<Node> node, const std::string &appId = "*");
-  virtual ~Ipv4AppTracer ()  { };
-
-  void
-  Connect ();
-
-  virtual void
-  PrintHeader (std::ostream &os) const = 0;
-  
-  virtual void
-  Print (std::ostream &os) const = 0;
-
-  virtual void
-  Rx (std::string context,
-      const Ipv4Header &, Ptr<const Packet>, uint32_t) = 0;
-  
-  virtual void
-  Tx (std::string context,
-      const Ipv4Header &, Ptr<const Packet>, uint32_t) = 0;
-  
-protected:
-  std::string m_app;
-  std::string m_appId;
-  std::string m_node;
-  Ptr<Node> m_nodePtr;
-};
-
-inline std::ostream&
-operator << (std::ostream &os, const Ipv4AppTracer &tracer)
-{
-  os << "# ";
-  tracer.PrintHeader (os);
-  os << "\n";
-  tracer.Print (os);
-  return os;
-}
-
-} // namespace ns3
-
-#endif // IPV4_APP_TRACER_H
diff --git a/helper/tracers/ipv4-l3-tracer.cc b/helper/tracers/ipv4-l3-tracer.cc
deleted file mode 100644
index ed2cb9c..0000000
--- a/helper/tracers/ipv4-l3-tracer.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ipv4-l3-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/names.h"
-#include "ns3/callback.h"
-#include "ns3/ccnx-app.h"
-#include "ns3/ccnx-face.h"
-
-#include <boost/lexical_cast.hpp>
-
-using namespace std;
-
-namespace ns3 {
-    
-Ipv4L3Tracer::Ipv4L3Tracer (Ptr<Node> node)
-: m_nodePtr (node)
-{
-  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
-
-  Connect ();
-
-  string name = Names::FindName (node);
-  if (!name.empty ())
-    {
-      m_node = name;
-    }
-}
-
-void
-Ipv4L3Tracer::Connect ()
-{
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Tx",
-                   MakeCallback (&Ipv4L3Tracer::Tx, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Rx",
-                   MakeCallback (&Ipv4L3Tracer::Rx, this));
-  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Drop",
-                   MakeCallback (&Ipv4L3Tracer::Drop, this));
-}
-
-} // namespace ns3
diff --git a/helper/tracers/ipv4-l3-tracer.h b/helper/tracers/ipv4-l3-tracer.h
deleted file mode 100644
index e5f3c74..0000000
--- a/helper/tracers/ipv4-l3-tracer.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef IPV4_L3_TRACER_H
-#define IPV4_L3_TRACER_H
-
-#include "ns3/ptr.h"
-#include "ns3/simple-ref-count.h"
-#include "ns3/ipv4-l3-protocol.h"
-
-namespace ns3 {
-
-class Node;
-
-class Ipv4L3Tracer : public SimpleRefCount<Ipv4L3Tracer>
-{
-public:
-  Ipv4L3Tracer (Ptr<Node> node);
-  virtual ~Ipv4L3Tracer () { };
-
-  void
-  Connect ();
-  
-  virtual void
-  PrintHeader (std::ostream &os) const = 0;
-
-  virtual void
-  Print (std::ostream &os) const = 0;
-  
-  virtual void
-  Rx  (std::string context,
-       Ptr<const Packet>, Ptr<Ipv4>,  uint32_t) = 0;
-
-  virtual void
-  Tx   (std::string context,
-        Ptr<const Packet>, Ptr<Ipv4>,  uint32_t) = 0;
-
-  virtual void
-  Drop (std::string context,
-        const Ipv4Header &, Ptr<const Packet>, Ipv4L3Protocol::DropReason, Ptr<Ipv4>, uint32_t) = 0;
-
-protected:
-  std::string m_node;
-  Ptr<Node> m_nodePtr;
-
-  struct Stats
-  {
-    void Reset ()
-    {
-      m_in = 0;
-      m_out = 0;
-      m_drop = 0;
-    }
-    
-    uint64_t m_in;
-    uint64_t m_out;
-    uint64_t m_drop;
-  };
-};
-
-inline std::ostream&
-operator << (std::ostream &os, const Ipv4L3Tracer &tracer)
-{
-  os << "# ";
-  tracer.PrintHeader (os);
-  os << "\n";
-  tracer.Print (os);
-  return os;
-}
-
-} // namespace ns3
-
-#endif // IPV4_L3_TRACER_H
diff --git a/helper/tracers/ipv4-rate-l3-tracer.cc b/helper/tracers/ipv4-rate-l3-tracer.cc
deleted file mode 100644
index e97ba18..0000000
--- a/helper/tracers/ipv4-rate-l3-tracer.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ipv4-rate-l3-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/simulator.h"
-
-#include "ns3/ipv4-header.h"
-
-namespace ns3 {
-    
-Ipv4RateL3Tracer::Ipv4RateL3Tracer (std::ostream &os, Ptr<Node> node)
-  : Ipv4L3Tracer (node)
-  , m_os (os)
-{
-  SetAveragingPeriod (Seconds (1.0));
-}
-
-Ipv4RateL3Tracer::~Ipv4RateL3Tracer ()
-{
-  m_printEvent.Cancel ();
-}
-
-void
-Ipv4RateL3Tracer::SetAveragingPeriod (const Time &period)
-{
-  m_period = period;
-  m_printEvent.Cancel ();
-  m_printEvent = Simulator::Schedule (m_period, &Ipv4RateL3Tracer::PeriodicPrinter, this);
-}
-
-void
-Ipv4RateL3Tracer::PeriodicPrinter ()
-{
-  Print (m_os);
-  Reset ();
-  
-  m_printEvent = Simulator::Schedule (m_period, &Ipv4RateL3Tracer::PeriodicPrinter, this);
-}
-
-void
-Ipv4RateL3Tracer::PrintHeader (std::ostream &os) const
-{
-  os << "Time" << "\t"
-
-     << "Node" << "\t"
-     << "Interface" << "\t"
-
-     << "Type" << "\t"
-     << "Packets" << "\t"
-     << "Kilobytes";
-}
-
-void
-Ipv4RateL3Tracer::Reset ()
-{
-  for (std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
-       stats != m_stats.end ();
-       stats++)
-    {
-      stats->second.get<0> ().Reset ();
-      stats->second.get<1> ().Reset ();
-    }
-}
-
-const double alpha = 0.8;
-
-#define STATS(INDEX) stats->second.get<INDEX> ()
-#define RATE(INDEX, fieldName) STATS(INDEX).fieldName / m_period.ToDouble (Time::S)
-
-#define PRINTER(printName, fieldName) \
-STATS(2).fieldName = /*new value*/alpha * RATE(0, fieldName) + /*old value*/(1-alpha) * STATS(2).fieldName; \
-STATS(3).fieldName = /*new value*/alpha * RATE(1, fieldName) / 1024.0 + /*old value*/(1-alpha) * STATS(3).fieldName; \
-                                                                        \
-os << time.ToDouble (Time::S) << "\t"                                   \
- << m_node << "\t"                                                      \
- << stats->first << "\t"                                      \
- << printName << "\t"                                                   \
- << STATS(2).fieldName  << "\t"                                        \
- << STATS(3).fieldName << "\n";
-
-void
-Ipv4RateL3Tracer::Print (std::ostream &os) const
-{
-  for (std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
-       stats != m_stats.end ();
-       stats++)
-    {
-      Time time = Simulator::Now ();
-
-      PRINTER ("In",   m_in);
-      PRINTER ("Out",  m_out);
-      PRINTER ("Drop", m_drop);
-    }
-}
-
-void
-Ipv4RateL3Tracer::Rx  (std::string context,
-                       Ptr<const Packet> packet, Ptr<Ipv4> ipv4,  uint32_t iface)
-{
-  m_stats[iface].get<0> ().m_in ++;
-  m_stats[iface].get<1> ().m_in += packet->GetSize ();
-}
-
-void
-Ipv4RateL3Tracer::Tx   (std::string context,
-                        Ptr<const Packet> packet, Ptr<Ipv4> ipv4,  uint32_t iface)
-{
-  m_stats[iface].get<0> ().m_out ++;
-  m_stats[iface].get<1> ().m_out += packet->GetSize ();
-}
-
-void
-Ipv4RateL3Tracer::Drop (std::string context,
-                        const Ipv4Header &header, Ptr<const Packet> packet, Ipv4L3Protocol::DropReason, Ptr<Ipv4> ipv4, uint32_t iface)
-{
-  m_stats[iface].get<0> ().m_drop ++;
-  m_stats[iface].get<1> ().m_drop += packet->GetSize ();
-}
-
-
-} // namespace ns3
diff --git a/helper/tracers/ipv4-rate-l3-tracer.h b/helper/tracers/ipv4-rate-l3-tracer.h
deleted file mode 100644
index 454ac14..0000000
--- a/helper/tracers/ipv4-rate-l3-tracer.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef IPV4_RATE_L3_TRACER_H
-#define IPV4_RATE_L3_TRACER_H
-
-#include "ipv4-l3-tracer.h"
-
-#include "ns3/nstime.h"
-#include "ns3/event-id.h"
-
-#include <boost/tuple/tuple.hpp>
-#include <map>
-
-namespace ns3 {
-
-/**
- * @ingroup ccnx
- * @brief CCNx network-layer rate tracer
- */
-class Ipv4RateL3Tracer : public Ipv4L3Tracer
-{
-public:
-  /**
-   * @brief Network layer tracer constructor
-   */
-  Ipv4RateL3Tracer (std::ostream &os, Ptr<Node> node);
-  virtual ~Ipv4RateL3Tracer ();
-
-  void
-  SetAveragingPeriod (const Time &period);
-  
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  Rx  (std::string context,
-       Ptr<const Packet>, Ptr<Ipv4>,  uint32_t);
-
-  virtual void
-  Tx   (std::string context,
-        Ptr<const Packet>, Ptr<Ipv4>,  uint32_t);
-
-  virtual void
-  Drop (std::string context,
-        const Ipv4Header &, Ptr<const Packet>, Ipv4L3Protocol::DropReason, Ptr<Ipv4>, uint32_t);
-
-private:
-  void
-  PeriodicPrinter ();
-  
-  void
-  Reset ();
-
-private:
-  std::ostream& m_os;
-  Time m_period;
-  EventId m_printEvent;
-
-  mutable std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> > m_stats;
-};
-
-} // namespace ns3
-
-#endif // IPV4_RATE_L3_TRACER_H
diff --git a/helper/tracers/ipv4-seqs-app-tracer.cc b/helper/tracers/ipv4-seqs-app-tracer.cc
deleted file mode 100644
index 3147ed0..0000000
--- a/helper/tracers/ipv4-seqs-app-tracer.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "ipv4-seqs-app-tracer.h"
-#include "ns3/node.h"
-#include "ns3/packet.h"
-#include "ns3/config.h"
-#include "ns3/callback.h"
-#include "ns3/simulator.h"
-
-#include "ns3/tcp-l4-protocol.h"
-#include "ns3/tcp-header.h"
-#include "ns3/ipv4-header.h"
-
-namespace ns3 {
-    
-Ipv4SeqsAppTracer::Ipv4SeqsAppTracer (std::ostream &os, Ptr<Node> node, const std::string &appId)
-  : Ipv4AppTracer (node, appId)
-  , m_os (os)
-{
-}
-
-void
-Ipv4SeqsAppTracer::Reset ()
-{
-}
-
-void
-Ipv4SeqsAppTracer::PrintHeader (std::ostream &os) const
-{
-  os << "Time\t"
-     << "Node\t"
-     << "AppName\t"
-     << "AppId\t"
-     << "Type\t"
-     << "SeqNo";
-}
-
-void
-Ipv4SeqsAppTracer::Print (std::ostream &os) const
-{
-}
-
-#define PRINTER(type,size)                                         \
- m_os                                                              \
- << Simulator::Now ().ToDouble (Time::S) << "\t"                   \
- << m_node << "\t"                                                 \
- << m_app << "\t"                                                  \
- << m_appId << "\t"                                                \
- << type << "\t"                                                   \
- << size / 1040.0 << std::endl;
-
-void
-Ipv4SeqsAppTracer::Tx (std::string context,
-    const Ipv4Header &ip, Ptr<const Packet>, uint32_t)
-{
-  if (ip.GetProtocol () != TcpL4Protocol::PROT_NUMBER) return;
-}
-
-void
-Ipv4SeqsAppTracer::Rx (std::string context,
-                       const Ipv4Header &ip, Ptr<const Packet> pktOrig, uint32_t)
-{
-  if (ip.GetProtocol () != TcpL4Protocol::PROT_NUMBER) return;
-
-  TcpHeader tcp;
-  Ptr<Packet> packet = pktOrig->Copy ();
-  packet->RemoveHeader (tcp);
-
-  if (tcp.GetFlags () | TcpHeader::ACK)
-    {
-      PRINTER("InAck", tcp.GetAckNumber ().GetValue ());
-    }
-}
-  
-
-// void
-// Ipv4SeqsAppTracer::InData (std::string context,
-//                            Ptr<const Packet> packet, const Address &address)
-// {
-//   PRINTER ("InData", m_inSeq);
-//   m_inSeq += packet->GetSize ();
-// }
-  
-// void
-// Ipv4SeqsAppTracer::OutData (std::string context,
-//                             Ptr<const Packet> packet)
-// {
-//   PRINTER ("OutData", m_outSeq);
-//   m_outSeq += packet->GetSize ();
-// }
-
-} // namespace ns3
diff --git a/helper/tracers/ipv4-seqs-app-tracer.h b/helper/tracers/ipv4-seqs-app-tracer.h
deleted file mode 100644
index 4805968..0000000
--- a/helper/tracers/ipv4-seqs-app-tracer.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 UCLA
- *
- * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef IPV4_SEQS_APP_TRACER_H
-#define IPV4_SEQS_APP_TRACER_H
-
-#include "ns3/ipv4-app-tracer.h"
-
-namespace ns3 {
-
-class Ipv4SeqsAppTracer : public Ipv4AppTracer
-{
-public:
-  Ipv4SeqsAppTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*");
-  virtual ~Ipv4SeqsAppTracer () { };
-
-  virtual void
-  PrintHeader (std::ostream &os) const;
-
-  virtual void
-  Print (std::ostream &os) const;
-
-  virtual void
-  Rx (std::string context,
-      const Ipv4Header &, Ptr<const Packet>, uint32_t);
-  
-  virtual void
-  Tx (std::string context,
-      const Ipv4Header &, Ptr<const Packet>, uint32_t);
-
-protected:
-  void
-  Reset ();
-
-protected:
-  std::ostream& m_os;
-};
-
-} // namespace ns3
-
-#endif // IPV4_AGGREGATE_APP_TRACER_H