diff --git a/apps/ccnx-app.cc b/apps/ccnx-app.cc
index 780eb9f..cc5e9b2 100644
--- a/apps/ccnx-app.cc
+++ b/apps/ccnx-app.cc
@@ -118,7 +118,7 @@
                  "Ccnx stack should be installed on the node " << GetNode ());
 
   // step 1. Create a face
-  m_face = Create<CcnxLocalFace> (/*Ptr<CcnxApp> (this)*/this);
+  m_face = CreateObject<CcnxLocalFace> (/*Ptr<CcnxApp> (this)*/this);
     
   // step 2. Add face to the CCNx stack
   GetNode ()->GetObject<Ccnx> ()->AddFace (m_face);
diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index 2631be2..9699c38 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -209,7 +209,7 @@
       if (DynamicCast<LoopbackNetDevice> (device) != 0)
         continue; // don't create face for a LoopbackNetDevice
 
-      Ptr<CcnxNetDeviceFace> face = Create<CcnxNetDeviceFace> (node, device);
+      Ptr<CcnxNetDeviceFace> face = CreateObject<CcnxNetDeviceFace> (node, device);
 
       ccnx->AddFace (face);
       NS_LOG_LOGIC ("Node " << node->GetId () << ": added CcnxNetDeviceFace as face #" << *face);
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index ec35d8b..3e39384 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -25,6 +25,8 @@
 #include "ns3/log.h"
 #include "ns3/node.h"
 #include "ns3/assert.h"
+#include "ns3/uinteger.h"
+#include "ns3/double.h"
 
 #include <boost/ref.hpp>
 
@@ -38,6 +40,21 @@
   static TypeId tid = TypeId ("ns3::CcnxFace")
     .SetParent<Object> ()
     .SetGroupName ("Ccnx")
+    .AddAttribute ("Id", "Face id (unique integer for the CCNx stack on this node)",
+                   TypeId::ATTR_GET, // allow only getting it.
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&CcnxFace::m_id),
+                   MakeUintegerChecker<uint32_t> ())
+
+    .AddAttribute ("BucketMax", "Maximum size of leaky bucket",
+                   DoubleValue (-1.0),
+                   MakeDoubleAccessor (&CcnxFace::m_bucketMax),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("BucketLeak", "Normalized bucket leak size",
+                   DoubleValue (0.0),
+                   MakeDoubleAccessor (&CcnxFace::m_bucketLeak),
+                   MakeDoubleChecker<double> ())
+                   
     ;
   return tid;
 }
@@ -108,35 +125,6 @@
   return true;
 }
 
-void
-CcnxFace::LeakBucket (const Time &interval)
-{
-  const double leak = m_bucketLeak * interval.ToDouble (Time::S);
-  m_bucket = std::max (0.0, m_bucket - leak);
-
-  // NS_LOG_DEBUG ("max: " << m_bucketMax << ", Current bucket: " << m_bucket << ", leak size: " << leak << ", interval: " << interval << ", " << m_bucketLeak);
-}
-
-void
-CcnxFace::SetBucketMax (double bucket)
-{
-  NS_LOG_FUNCTION (this << bucket);
-  m_bucketMax = bucket;
-}
-
-void
-CcnxFace::SetBucketLeak (double leak)
-{
-  NS_LOG_FUNCTION (this << leak);
-  m_bucketLeak = leak;
-}
-
-void
-CcnxFace::LeakBucketByOnePacket ()
-{
-  m_bucket = std::max (0.0, m_bucket-1.0); 
-}
-
 bool
 CcnxFace::Send (Ptr<Packet> packet)
 {
@@ -166,6 +154,35 @@
   return true;
 }
 
+void
+CcnxFace::LeakBucket (const Time &interval)
+{
+  const double leak = m_bucketLeak * interval.ToDouble (Time::S);
+  m_bucket = std::max (0.0, m_bucket - leak);
+
+  // NS_LOG_DEBUG ("max: " << m_bucketMax << ", Current bucket: " << m_bucket << ", leak size: " << leak << ", interval: " << interval << ", " << m_bucketLeak);
+}
+
+void
+CcnxFace::SetBucketMax (double bucket)
+{
+  NS_LOG_FUNCTION (this << bucket);
+  m_bucketMax = bucket;
+}
+
+void
+CcnxFace::SetBucketLeak (double leak)
+{
+  NS_LOG_FUNCTION (this << leak);
+  m_bucketLeak = leak;
+}
+
+void
+CcnxFace::LeakBucketByOnePacket ()
+{
+  m_bucket = std::max (0.0, m_bucket-1.0); 
+}
+
 // void
 // CcnxFace::SetMetric (uint16_t metric)
 // {
diff --git a/model/ccnx-forwarding-strategy.h b/model/ccnx-forwarding-strategy.h
index aff0909..bb11ec6 100644
--- a/model/ccnx-forwarding-strategy.h
+++ b/model/ccnx-forwarding-strategy.h
@@ -96,6 +96,7 @@
   
 protected:  
   Ptr<CcnxPit> m_pit;
+  Ptr<Ccnx> m_ccnx; // just for tracing purposes. Should not be used in any other way
 };
 
 } //namespace ns3
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index f05a80f..fb1e5e4 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -28,6 +28,7 @@
 #include "ns3/uinteger.h"
 #include "ns3/trace-source-accessor.h"
 #include "ns3/object-vector.h"
+#include "ns3/pointer.h"
 #include "ns3/boolean.h"
 #include "ns3/string.h"
 
@@ -63,13 +64,23 @@
     .SetParent<Ccnx> ()
     .SetGroupName ("Ccnx")
     .AddConstructor<CcnxL3Protocol> ()
+    .AddAttribute ("FaceList", "List of faces associated with CCNx stack",
+                   ObjectVectorValue (),
+                   MakeObjectVectorAccessor (&CcnxL3Protocol::m_faces),
+                   MakeObjectVectorChecker<CcnxFace> ())
+
+    .AddAttribute ("ForwardingStrategy", "Forwarding strategy used by CCNx stack",
+                   PointerValue (),
+                   MakePointerAccessor (&CcnxL3Protocol::SetForwardingStrategy, &CcnxL3Protocol::GetForwardingStrategy),
+                   MakePointerChecker<CcnxForwardingStrategy> ())
+    
     .AddAttribute ("BucketLeakInterval",
                    "Interval to leak buckets",
                    StringValue ("10ms"),
                    MakeTimeAccessor (&CcnxL3Protocol::GetBucketLeakInterval,
                                      &CcnxL3Protocol::SetBucketLeakInterval),
                    MakeTimeChecker ())
-    
+
     .AddTraceSource ("TransmittedInterestTrace", "Interests that were transmitted",
                     MakeTraceSourceAccessor (&CcnxL3Protocol::m_transmittedInterestsTrace))
     
diff --git a/model/ccnx-local-face.cc b/model/ccnx-local-face.cc
index 1571106..a3267bd 100644
--- a/model/ccnx-local-face.cc
+++ b/model/ccnx-local-face.cc
@@ -38,6 +38,16 @@
 namespace ns3 
 {
 
+TypeId
+CcnxLocalFace::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::CcnxLocalFace")
+    .SetParent<CcnxFace> ()
+    .SetGroupName ("Ccnx")
+    ;
+  return tid;
+}
+
 CcnxLocalFace::CcnxLocalFace (Ptr<CcnxApp> app)
   : CcnxFace (app->GetNode ())
   , m_app (app)
diff --git a/model/ccnx-local-face.h b/model/ccnx-local-face.h
index 996d969..8855b75 100644
--- a/model/ccnx-local-face.h
+++ b/model/ccnx-local-face.h
@@ -45,6 +45,9 @@
 class CcnxLocalFace  : public CcnxFace
 {
 public:
+  static TypeId
+  GetTypeId ();
+
   /**
    * \brief Default constructor
    */
diff --git a/model/ccnx-net-device-face.cc b/model/ccnx-net-device-face.cc
index d42515f..d4af70f 100644
--- a/model/ccnx-net-device-face.cc
+++ b/model/ccnx-net-device-face.cc
@@ -32,6 +32,16 @@
 
 namespace ns3 {
 
+TypeId
+CcnxNetDeviceFace::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::CcnxNetDeviceFace")
+    .SetParent<CcnxFace> ()
+    .SetGroupName ("Ccnx")
+    ;
+  return tid;
+}
+
 /** 
  * By default, Ccnx face are created in the "down" state.  Before
  * becoming useable, the user must invoke SetUp on the face
diff --git a/model/ccnx-net-device-face.h b/model/ccnx-net-device-face.h
index 482d5d3..148da39 100644
--- a/model/ccnx-net-device-face.h
+++ b/model/ccnx-net-device-face.h
@@ -45,6 +45,9 @@
 class CcnxNetDeviceFace  : public CcnxFace
 {
 public:
+  static TypeId
+  GetTypeId ();
+
   /**
    * \brief Constructor
    *
diff --git a/wscript b/wscript
index f6aeb90..ae2a7fa 100644
--- a/wscript
+++ b/wscript
@@ -59,8 +59,8 @@
         "helper/ccnx-header-helper.h",
 
         "apps/ccnx-app.h",
-        "apps/ccnx-consumer.h",
-        "apps/ccnx-producer.h",
+        # "apps/ccnx-consumer.h",
+        # "apps/ccnx-producer.h",
 
         "model/hash-helper.h",
         "model/ccnx.h",
