Many corrections to face/local-face/net-device-face/fib/pit.  Now
interest packets actually go down to ccnx stack.  Also, now it is
possible to manually configure FIB entries.

CcnxFib now is an object aggregated to the node
diff --git a/helper/ccnx-consumer-helper.cc b/helper/ccnx-consumer-helper.cc
index b99e0b6..765f6b6 100644
--- a/helper/ccnx-consumer-helper.cc
+++ b/helper/ccnx-consumer-helper.cc
@@ -27,10 +27,13 @@
 namespace ns3 
 {
     
-CcnxConsumerHelper::CcnxConsumerHelper (Ptr<CcnxNameComponents> interestName)
+CcnxConsumerHelper::CcnxConsumerHelper (const std::string &prefix)
 {
     m_factory.SetTypeId ("ns3::CcnxConsumer");
-    m_factory.Set ("InterestName", CcnxNameComponentsValue (*interestName));
+    
+    CcnxNameComponentsValue prefixValue;
+    prefixValue.DeserializeFromString (prefix, MakeCcnxNameComponentsChecker ());
+    m_factory.Set ("InterestName", prefixValue);
 }
     
 void 
@@ -67,17 +70,10 @@
 Ptr<Application>
 CcnxConsumerHelper::InstallPriv (Ptr<Node> node)
 {
-    Ptr<CcnxLocalFace> localFace = CreateObject<CcnxLocalFace> ();
-    localFace->SetNode(node);
-    
-    m_factory.Set ("Face", PointerValue (localFace));
-    Ptr<CcnxConsumer> app = m_factory.Create<CcnxConsumer> ();
-        
-    localFace->RegisterProtocolHandler (MakeCallback (&CcnxConsumer::HandlePacket, app));
-    localFace->SetUp();
-        
+    Ptr<CcnxConsumer> app = m_factory.Create<CcnxConsumer> ();        
     node->AddApplication (app);
         
     return app;
 }
+
 }
diff --git a/helper/ccnx-consumer-helper.h b/helper/ccnx-consumer-helper.h
index e512a8f..d885e2e 100644
--- a/helper/ccnx-consumer-helper.h
+++ b/helper/ccnx-consumer-helper.h
@@ -38,69 +38,70 @@
 namespace ns3 
 {    
 /**
-* \brief A helper to make it easier to instantiate an ns3::CcnxConsumer Application
-* on a set of nodes.
-*/
+ * \brief A helper to make it easier to instantiate an ns3::CcnxConsumer Application
+ * on a set of nodes.
+ */
     
 class CcnxConsumerHelper
 {        
 public:
 
-/**
-* Create an CcnxConsumerHelper to make it easier to work with CcnxConsumer Apps
-*
-*/
-CcnxConsumerHelper (Ptr<CcnxNameComponents> interestName);
+  /**
+   * \brief Create an CcnxConsumerHelper to make it easier to work with CcnxConsumer Apps
+   *
+   * \param prefix Prefix which will be requested by the consumer applications
+   */
+  CcnxConsumerHelper (const std::string &prefix);
         
-/**
-* Helper function used to set the underlying application attributes.
-*
-* \param name the name of the application attribute to set
-* \param value the value of the application attribute to set
-*/
-void SetAttribute (std::string name, const AttributeValue &value);
+  /**
+   * \brief Helper function used to set the underlying application attributes.
+   *
+   * \param name the name of the application attribute to set
+   * \param value the value of the application attribute to set
+   */
+  void SetAttribute (std::string name, const AttributeValue &value);
         
-/**
-* Install an ns3::CcnxConsumer on each node of the input container
-* configured with all the attributes set with SetAttribute.
-*
-* \param c NodeContainer of the set of nodes on which an CcnxConsumer 
-* will be installed.
-* \returns Container of Ptr to the applications installed.
-*/
-ApplicationContainer Install (NodeContainer c);
+  /**
+   * Install an ns3::CcnxConsumer on each node of the input container
+   * configured with all the attributes set with SetAttribute.
+   *
+   * \param c NodeContainer of the set of nodes on which an CcnxConsumer 
+   * will be installed.
+   * \returns Container of Ptr to the applications installed.
+   */
+  ApplicationContainer Install (NodeContainer c);
         
-/**
-* Install an ns3::CcnxConsumer on the node configured with all the 
-* attributes set with SetAttribute.
-*
-* \param node The node on which an CcnxConsumer will be installed.
-* \returns Container of Ptr to the applications installed.
-*/
-ApplicationContainer Install (Ptr<Node> node);
+  /**
+   * Install an ns3::CcnxConsumer on the node configured with all the 
+   * attributes set with SetAttribute.
+   *
+   * \param node The node on which an CcnxConsumer will be installed.
+   * \returns Container of Ptr to the applications installed.
+   */
+  ApplicationContainer Install (Ptr<Node> node);
         
-/**
-* Install an ns3::CcnxConsumer on the node configured with all the 
-* attributes set with SetAttribute.
-*
-* \param nodeName The node on which an CcnxConsumer will be installed.
-* \returns Container of Ptr to the applications installed.
-*/
-ApplicationContainer Install (std::string nodeName);
+  /**
+   * Install an ns3::CcnxConsumer on the node configured with all the 
+   * attributes set with SetAttribute.
+   *
+   * \param nodeName The node on which an CcnxConsumer will be installed.
+   * \returns Container of Ptr to the applications installed.
+   */
+  ApplicationContainer Install (std::string nodeName);
         
 private:
-/**
-* \internal
-* Install an ns3::CcnxConsumer on the node configured with all the 
-* attributes set with SetAttribute.
-*
-* \param node The node on which an CcnxConsumer will be installed.
-* \returns Ptr to the application installed.
-*/
-Ptr<Application> InstallPriv (Ptr<Node> node);
-ObjectFactory m_factory;
+  /**
+   * \internal
+   * Install an ns3::CcnxConsumer on the node configured with all the 
+   * attributes set with SetAttribute.
+   *
+   * \param node The node on which an CcnxConsumer will be installed.
+   * \returns Ptr to the application installed.
+   */
+  Ptr<Application> InstallPriv (Ptr<Node> node);
+  ObjectFactory m_factory;
+};
 
-};    
 }
 
 #endif
diff --git a/helper/ccnx-face-container.cc b/helper/ccnx-face-container.cc
index ce595bb..8a7a9e2 100644
--- a/helper/ccnx-face-container.cc
+++ b/helper/ccnx-face-container.cc
@@ -76,16 +76,16 @@
   return m_faces.size ();
 }
 
-void 
-CcnxFaceContainer::SetMetricToAll (uint16_t metric)
-{
-  for (FaceContainer::iterator it=m_faces.begin ();
-       it != m_faces.end ();
-       it++)
-    {
-      (*it)->SetMetric (metric);
-    }
-}
+// void 
+// CcnxFaceContainer::SetMetricToAll (uint16_t metric)
+// {
+//   for (FaceContainer::iterator it=m_faces.begin ();
+//        it != m_faces.end ();
+//        it++)
+//     {
+//       (*it)->SetMetric (metric);
+//     }
+// }
 
 void 
 CcnxFaceContainer::Add (const Ptr<CcnxFace> &face)
diff --git a/helper/ccnx-face-container.h b/helper/ccnx-face-container.h
index ecb29d9..39391f8 100644
--- a/helper/ccnx-face-container.h
+++ b/helper/ccnx-face-container.h
@@ -26,11 +26,10 @@
 
 #include "ns3/ptr.h"
 #include "ns3/simple-ref-count.h"
+#include "ns3/ccnx-face.h"
 
 namespace ns3 {
 
-class CcnxFace;
-
 /**
  * \ingroup ccnx-helpers
  * \brief A pool for CCNx faces
@@ -105,12 +104,12 @@
    */
   uint32_t GetN () const;
 
-  /**
-   * \brief Set a metric for all faces in the container
-   *
-   * \param metric value of metric to assign to all faces in the container
-   */
-  void SetMetricToAll (uint16_t metric);
+  // /**
+  //  * \brief Set a metric for all faces in the container
+  //  *
+  //  * \param metric value of metric to assign to all faces in the container
+  //  */
+  // void SetMetricToAll (uint16_t metric);
 
   /**
    * Add an entry to the container
diff --git a/helper/ccnx-header-helper.cc b/helper/ccnx-header-helper.cc
index 85c88f1..1c7a806 100644
--- a/helper/ccnx-header-helper.cc
+++ b/helper/ccnx-header-helper.cc
@@ -27,6 +27,7 @@
 
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-content-object-header.h"
+#include <iomanip>
 
 NS_LOG_COMPONENT_DEFINE ("CcnxHeaderHelper");
 
@@ -35,12 +36,12 @@
 {
 
 CcnxHeaderHelper::Type
-CcnxHeaderHelper::CreateCorrectCcnxHeader (Ptr<const Packet> packet)
+CcnxHeaderHelper::GetCcnxHeaderType (Ptr<const Packet> packet)
 {
   uint8_t type[2];
   uint32_t read=packet->CopyData (type,2);
   if (read!=2) throw CcnxUnknownHeaderException();
-  
+
   if (type[0] == INTEREST_BYTE0 && type[1] == INTEREST_BYTE1)
     {
       return CcnxHeaderHelper::INTEREST;
diff --git a/helper/ccnx-header-helper.h b/helper/ccnx-header-helper.h
index 996b874..f4096db 100644
--- a/helper/ccnx-header-helper.h
+++ b/helper/ccnx-header-helper.h
@@ -74,7 +74,7 @@
    */
   
   static Type
-  CreateCorrectCcnxHeader (Ptr<const Packet> packet);
+  GetCcnxHeaderType (Ptr<const Packet> packet);
 };
 
   /**
diff --git a/helper/ccnx-interest-sender-helper.cc b/helper/ccnx-interest-sender-helper.cc
deleted file mode 100644
index addd9de..0000000
--- a/helper/ccnx-interest-sender-helper.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*-  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 "ccnx-interest-sender-helper.h"
-#include "ns3/inet-socket-address.h"
-#include "ns3/packet-socket-address.h"
-#include "ns3/string.h"
-#include "ns3/names.h"
-
-namespace ns3 
-{
-    
-CcnxInterestSenderHelper::CcnxInterestSenderHelper (Ptr<CcnxNameComponents> interestName)
-{
-    m_factory.SetTypeId ("ns3::CcnxConsumer");
-    m_factory.Set ("InterestName", CcnxNameComponentsValue (*interestName));
-}
-    
-void 
-CcnxInterestSenderHelper::SetAttribute (std::string name, const AttributeValue &value)
-{
-    m_factory.Set (name, value);
-}
-    
-ApplicationContainer
-CcnxInterestSenderHelper::Install (Ptr<Node> node)
-{
-    return ApplicationContainer (InstallPriv (node));
-}
-    
-ApplicationContainer
-CcnxInterestSenderHelper::Install (std::string nodeName)
-{
-    Ptr<Node> node = Names::Find<Node> (nodeName);
-    return ApplicationContainer (InstallPriv (node));
-}
-    
-ApplicationContainer
-CcnxInterestSenderHelper::Install (NodeContainer c)
-{
-    ApplicationContainer apps;
-    for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i)
-    {
-        apps.Add (InstallPriv (*i));
-    }
-        
-    return apps;
-}
-    
-Ptr<Application>
-CcnxInterestSenderHelper::InstallPriv (Ptr<Node> node)
-{
-    Ptr<CcnxLocalFace> localFace = Create<CcnxLocalFace> ();
-    localFace->SetNode(node);
-    localFace->SetUp();
-    m_factory.Set ("Face", PointerValue (localFace));
-    
-    Ptr<Application> app = m_factory.Create<Application> ();
-    node->AddApplication (app);
-        
-    return app;
-}
-}
\ No newline at end of file
diff --git a/helper/ccnx-interest-sender-helper.h b/helper/ccnx-interest-sender-helper.h
deleted file mode 100644
index b58b41f..0000000
--- a/helper/ccnx-interest-sender-helper.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*-  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>
- */
-
-#ifndef CCNX_INTEREST_SENDER_HELPER_H
-#define CCNX_INTEREST_SENDER_HELPER_H
-
-#include <stdint.h>
-#include <string>
-#include "ns3/object-factory.h"
-#include "ns3/address.h"
-#include "ns3/attribute.h"
-#include "ns3/net-device.h"
-#include "ns3/node-container.h"
-#include "ns3/application-container.h"
-#include "ns3/ccnx-name-components.h"
-#include "ns3/pointer.h"
-#include "ns3/ccnx-local-face.h"
-
-namespace ns3 
-{    
-/**
- * \brief A helper to make it easier to instantiate an ns3::CcnxInterestSenderApplication
- * on a set of nodes.
- */
-
-class CcnxInterestSenderHelper
-{
-
-public:
-    /**
-     * Create an CcnxInterestSenderHelper to make it easier to work with CcnxInterestSenderApps
-     *
-     */
-    CcnxInterestSenderHelper (Ptr<CcnxNameComponents> interestName);
-        
-    /**
-     * Helper function used to set the underlying application attributes.
-     *
-     * \param name the name of the application attribute to set
-     * \param value the value of the application attribute to set
-     */
-    void SetAttribute (std::string name, const AttributeValue &value);
-        
-    /**
-     * Install an ns3::CcnxInterestSender on each node of the input container
-     * configured with all the attributes set with SetAttribute.
-     *
-     * \param c NodeContainer of the set of nodes on which an CcnxInterestSender 
-     * will be installed.
-     * \returns Container of Ptr to the applications installed.
-     */
-    ApplicationContainer Install (NodeContainer c);
-        
-    /**
-     * Install an ns3::CcnxInterestSender on the node configured with all the 
-     * attributes set with SetAttribute.
-     *
-     * \param node The node on which an CcnxInterestSender will be installed.
-     * \returns Container of Ptr to the applications installed.
-     */
-    ApplicationContainer Install (Ptr<Node> node);
-        
-    /**
-     * Install an ns3::CcnxInterestSender on the node configured with all the 
-     * attributes set with SetAttribute.
-     *
-     * \param nodeName The node on which an CcnxInterestSender will be installed.
-     * \returns Container of Ptr to the applications installed.
-     */
-    ApplicationContainer Install (std::string nodeName);
-        
-private:
-    /**
-     * \internal
-     * Install an ns3::CcnxInterestSender on the node configured with all the 
-     * attributes set with SetAttribute.
-     *
-     * \param node The node on which an CcnxInterestSender will be installed.
-     * \returns Ptr to the application installed.
-    */
-    Ptr<Application> InstallPriv (Ptr<Node> node);
-    ObjectFactory m_factory;
-};    
-}
-
-#endif
-
diff --git a/helper/ccnx-producer-helper.cc b/helper/ccnx-producer-helper.cc
index 71a7c32..433a15a 100644
--- a/helper/ccnx-producer-helper.cc
+++ b/helper/ccnx-producer-helper.cc
@@ -72,11 +72,9 @@
 Ptr<Application>
 CcnxProducerHelper::InstallPriv (Ptr<Node> node)
 {
-    Ptr<CcnxLocalFace> localFace = CreateObject<CcnxLocalFace> ();
+    Ptr<CcnxLocalFace> localFace = Create<CcnxLocalFace> ();
     localFace->SetNode(node);
-    
-    
-    
+        
     //CreateAndAggregateObjectFromTypeId (node, "ns3::CcnxL3Protocol");
     ObjectFactory factory;
     factory.SetTypeId("ns3::CcnxL3Protocol");
@@ -92,7 +90,7 @@
         return 0;
     }
 
-    m_factory.Set ("Face", PointerValue (localFace));
+    // m_factory.Set ("Face", PointerValue (localFace));
     m_factory.Set ("Ccnx", PointerValue (ccnx));
     Ptr<CcnxProducer> app = m_factory.Create<CcnxProducer> ();
 
@@ -104,4 +102,4 @@
         
     return app;
 }
-}
\ No newline at end of file
+}
diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index d59827e..428ddef 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -69,6 +69,7 @@
 #include "ns3/ccnx-forwarding-strategy.h"
 #include "ns3/ccnx-net-device-face.h"
 #include "ns3/ccnx-l3-protocol.h"
+#include "ns3/ccnx-fib.h"
 
 #include "ccnx-face-container.h"
 #include "ccnx-stack-helper.h"
@@ -112,37 +113,15 @@
 static FaceStreamMapCcnx g_faceStreamMapCcnx; /**< A mapping of Ccnx/face pairs to ascii streams */
 
 CcnxStackHelper::CcnxStackHelper ()
-  : m_forwarding (0)
-  , m_ccnxEnabled (true)
 {
-  Initialize ();
-}
-
-// private method called by both constructor and Reset ()
-void
-CcnxStackHelper::Initialize ()
-{
-  // CcnxStaticForwardingHelper staticForwarding;
-  // CcnxGlobalForwardingHelper globalForwarding;
-  // CcnxListForwardingHelper listForwarding;
-  // listForwarding.Add (staticForwarding, 0);
-  // listForwarding.Add (globalForwarding, -10);
-  // SetForwardingHelper (listForwarding);
 }
 
 CcnxStackHelper::~CcnxStackHelper ()
 {
-  if (m_forwarding)
-    {
-      delete m_forwarding;
-      m_forwarding = 0;
-    }
 }
 
 CcnxStackHelper::CcnxStackHelper (const CcnxStackHelper &o)
 {
-  m_forwarding = o.m_forwarding->Copy ();
-  m_ccnxEnabled = o.m_ccnxEnabled;
 }
 
 CcnxStackHelper &
@@ -152,30 +131,14 @@
     {
       return *this;
     }
-  m_forwarding = o.m_forwarding->Copy ();
   return *this;
 }
 
-void
-CcnxStackHelper::Reset (void)
-{
-  delete m_forwarding;
-  m_forwarding = 0;
-  m_ccnxEnabled = true;
-  Initialize ();
-}
-
 void 
 CcnxStackHelper::SetForwardingHelper (const CcnxForwardingHelper &forwarding)
 {
-  delete m_forwarding;
-  m_forwarding = forwarding.Copy ();
-}
-
-void
-CcnxStackHelper::SetCcnxStackInstall (bool enable)
-{
-  m_ccnxEnabled = enable;
+  // delete m_forwarding;
+  // m_forwarding = forwarding.Copy ();
 }
 
 Ptr<CcnxFaceContainer>
@@ -195,14 +158,14 @@
   return Install (NodeContainer::GetGlobal ());
 }
 
-void
-CcnxStackHelper::CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId)
-{
-  ObjectFactory factory;
-  factory.SetTypeId (typeId);
-  Ptr<Object> protocol = factory.Create <Object> ();
-  node->AggregateObject (protocol);
-}
+// void
+// CcnxStackHelper::CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId)
+// {
+//   ObjectFactory factory;
+//   factory.SetTypeId (typeId);
+//   Ptr<Object> protocol = factory.Create <Object> ();
+//   node->AggregateObject (protocol);
+// }
 
 Ptr<CcnxFaceContainer>
 CcnxStackHelper::Install (Ptr<Node> node) const
@@ -210,30 +173,31 @@
   // NS_ASSERT_MSG (m_forwarding, "SetForwardingHelper() should be set prior calling Install() method");
   Ptr<CcnxFaceContainer> faces = Create<CcnxFaceContainer> ();
   
-  if (m_ccnxEnabled)
+  if (node->GetObject<Ccnx> () != 0)
     {
-      if (node->GetObject<Ccnx> () != 0)
-        {
-          NS_FATAL_ERROR ("CcnxStackHelper::Install (): Installing " 
-                          "a CcnxStack to a node with an existing Ccnx object");
-          return 0;
-        }
-
-      CreateAndAggregateObjectFromTypeId (node, "ns3::CcnxL3Protocol");
-      // Set forwarding
-      Ptr<Ccnx> ccnx = node->GetObject<Ccnx> ();
-      for (uint32_t index=0; index < node->GetNDevices (); index++)
-        {
-          Ptr<CcnxNetDeviceFace> face = Create<CcnxNetDeviceFace> (node->GetDevice (index));
-          uint32_t __attribute__ ((unused)) face_id = ccnx->AddFace (face);
-          NS_LOG_LOGIC ("Node " << node->GetId () << ": added CcxnNetDeviceFace as face #" << face_id);
-
-          faces->Add (face);
-        }
-      // Ptr<CcnxForwardingStrategy> ccnxForwarding = m_forwarding->Create (node);
-      // ccnx->SetForwardingStrategy (ccnxForwarding);
+      NS_FATAL_ERROR ("CcnxStackHelper::Install (): Installing " 
+                      "a CcnxStack to a node with an existing Ccnx object");
+      return 0;
     }
 
+  Ptr<CcnxFib> fib = CreateObject<CcnxFib> ();
+  node->AggregateObject (fib);
+
+  Ptr<Ccnx> ccnx = CreateObject<CcnxL3Protocol> ();
+  node->AggregateObject (ccnx);
+
+  for (uint32_t index=0; index < node->GetNDevices (); index++)
+    {
+      Ptr<CcnxNetDeviceFace> face = Create<CcnxNetDeviceFace> (node->GetDevice (index));
+      face->SetNode (node);
+      uint32_t __attribute__ ((unused)) face_id = ccnx->AddFace (face);
+      NS_LOG_LOGIC ("Node " << node->GetId () << ": added CcxnNetDeviceFace as face #" << face_id);
+
+      faces->Add (face);
+    }
+  // Ptr<CcnxForwardingStrategy> ccnxForwarding = m_forwarding->Create (node);
+  // ccnx->SetForwardingStrategy (ccnxForwarding);
+
   return faces;
 }
 
@@ -244,6 +208,26 @@
   return Install (node);
 }
 
+
+void
+CcnxStackHelper::AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric)
+{
+  NS_LOG_LOGIC ("[" << nodeName << "]$ route add " << prefix << " via " << faceId << " metric " << metric);
+  
+  Ptr<Node> node = Names::Find<Node> (nodeName);
+  NS_ASSERT_MSG (node != 0, "Node [" << nodeName << "] does not exist");
+  
+  Ptr<Ccnx>     ccnx = node->GetObject<Ccnx> ();
+  Ptr<CcnxFib>  fib  = node->GetObject<CcnxFib> ();
+  Ptr<CcnxFace> face = ccnx->GetFace (faceId);
+  NS_ASSERT_MSG (node != 0, "Face with ID [" << faceId << "] does not exist on node [" << nodeName << "]");
+
+  CcnxNameComponentsValue prefixValue;
+  prefixValue.DeserializeFromString (prefix, MakeCcnxNameComponentsChecker ());
+  fib->Add (prefixValue.Get (), face, metric);
+}
+
+
 static void
 CcnxL3ProtocolRxTxSink (Ptr<const Packet> p, Ptr<Ccnx> ccnx, uint32_t face)
 {
@@ -286,12 +270,6 @@
 {
   NS_LOG_FUNCTION (prefix << ccnx << face);
 
-  if (!m_ccnxEnabled)
-    {
-      NS_LOG_INFO ("Call to enable Ccnx pcap tracing but Ccnx not enabled");
-      return;
-    }
-
   //
   // We have to create a file and a mapping from protocol/face to file 
   // irrespective of how many times we want to trace a particular protocol.
@@ -412,12 +390,6 @@
   uint32_t face,
   bool explicitFilename)
 {
-  if (!m_ccnxEnabled)
-    {
-      NS_LOG_INFO ("Call to enable Ccnx ascii tracing but Ccnx not enabled");
-      return;
-    }
-
   //
   // Our trace sinks are going to use packet printing, so we have to 
   // make sure that is turned on.
diff --git a/helper/ccnx-stack-helper.h b/helper/ccnx-stack-helper.h
index 060b0a7..1e587e3 100644
--- a/helper/ccnx-stack-helper.h
+++ b/helper/ccnx-stack-helper.h
@@ -72,11 +72,6 @@
   CcnxStackHelper &operator = (const CcnxStackHelper &o);
 
   /**
-   * \brief Return helper internal state to that of a newly constructed one
-   */
-  void Reset ();
-
-  /**
    * Set forwarding strategy helper
    *
    * \param forwarding a new forwarding helper
@@ -142,12 +137,15 @@
   InstallAll () const;
 
   /**
-   * \brief Enable/disable ccnx stack install.
+   * \brief Add forwarding entry in FIB
    *
-   * \param enable enable state
+   * \param nodeName Node name
+   * \param prefix Routing prefix
+   * \param faceId Face index
+   * \param metric Routing metric
    */
   void
-  SetCcnxStackInstall (bool enable);
+  AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric);
 
 private:
   /**
@@ -179,14 +177,10 @@
                                         uint32_t interface,
                                         bool explicitFilename);
 
-  void Initialize (void);
-  ObjectFactory m_tcpFactory;
-  const CcnxForwardingHelper *m_forwarding;
-
-  /**
-   * \internal
-   */
-  static void CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId);
+  // /**
+  //  * \internal
+  //  */
+  // static void CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId);
 
   /**
    * \internal
@@ -202,11 +196,6 @@
    * \internal
    */
   bool AsciiHooked (Ptr<Ccnx> ccnx);
-
-  /**
-   * \brief Ccnx install state (enabled/disabled) ?
-   */
-  bool m_ccnxEnabled;
 };
 
 } // namespace ns3