diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index 6553f86..15c0d6b 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -59,7 +59,7 @@
 {
   NS_LOG_FUNCTION (this);
 
-  // SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  SetMobilityModel ("ns3::ConstantPositionMobilityModel");
 }
     
 void
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index 40ac57b..ec35d8b 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -32,6 +32,16 @@
 
 namespace ns3 {
 
+TypeId
+CcnxFace::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::CcnxFace")
+    .SetParent<Object> ()
+    .SetGroupName ("Ccnx")
+    ;
+  return tid;
+}
+
 /** 
  * By default, Ccnx face are created in the "down" state
  *  with no IP addresses.  Before becoming useable, the user must 
@@ -79,6 +89,7 @@
   NS_LOG_FUNCTION_NOARGS ();
 
   /// \todo Implement tracing, if requested
+  
   if (!IsUp ())
     return false;
   
diff --git a/model/ccnx-face.h b/model/ccnx-face.h
index 0499abb..b63b1e7 100644
--- a/model/ccnx-face.h
+++ b/model/ccnx-face.h
@@ -47,11 +47,14 @@
  *
  * \see CcnxLocalFace, CcnxNetDeviceFace, CcnxIpv4Face, CcnxUdpFace
  */
-class CcnxFace  : public SimpleRefCount<CcnxFace>
+class CcnxFace  : public Object
 {
 public:
+  static TypeId
+  GetTypeId ();
+  
   /**
-   * \brief Ccnx protocol hanler
+   * \brief Ccnx protocol handler
    *
    * \param face Face from which packet has been received
    * \param packet Original packet
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 6b567c8..f05a80f 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -256,48 +256,6 @@
 void 
 CcnxL3Protocol::Receive (const Ptr<CcnxFace> &face, const Ptr<const Packet> &p)
 {
-  if (!face->IsUp ())
-    {
-      NS_LOG_LOGIC ("Dropping received packet -- interface is down");
-        
-      //m_droppedDTrace (p, INTERFACE_DOWN, m_node->GetObject<Ccnx> ()/*this*/, face);
-        
-        Ptr<Packet> packet = p->Copy (); // give upper layers a rw copy of the packet
-        try
-        {
-            CcnxHeaderHelper::Type type = CcnxHeaderHelper::GetCcnxHeaderType (p);
-            switch (type)
-            {
-                case CcnxHeaderHelper::INTEREST:
-                {
-                    Ptr<CcnxInterestHeader> header = Create<CcnxInterestHeader> ();
-                    m_droppedInterestsTrace (header, INTERFACE_DOWN, m_node->GetObject<Ccnx> (), face);
-                    break;
-                }
-                case CcnxHeaderHelper::CONTENT_OBJECT:
-                {
-                    Ptr<CcnxContentObjectHeader> header = Create<CcnxContentObjectHeader> ();
-                    
-                    static CcnxContentObjectTail contentObjectTrailer; //there is no data in this object
-                    
-                    // Deserialization. Exception may be thrown
-                    packet->RemoveHeader (*header);
-                    packet->RemoveTrailer (contentObjectTrailer);
-                    
-                    m_droppedDataTrace (header, packet, INTERFACE_DOWN, m_node->GetObject<Ccnx> (), face);
-                    break;
-                }
-            }
-            
-            // exception will be thrown if packet is not recognized
-        }
-        catch (CcnxUnknownHeaderException)
-        {
-            NS_ASSERT_MSG (false, "Unknown CCNx header. Should not happen");
-        }
-        
-      return;
-    }
   NS_LOG_LOGIC ("Packet from face " << *face << " received on node " <<  m_node->GetId ());
 
   Ptr<Packet> packet = p->Copy (); // give upper layers a rw copy of the packet
diff --git a/model/ccnx-l3-protocol.h b/model/ccnx-l3-protocol.h
index d55ccd4..29500fc 100644
--- a/model/ccnx-l3-protocol.h
+++ b/model/ccnx-l3-protocol.h
@@ -103,9 +103,7 @@
     NACK_NONDUPLICATE,
 
     DROP_NO_ROUTE,   /**< No route to host */
-  };
-    
-    
+  };    
 
   /**
    * \enum DropReason
@@ -247,16 +245,19 @@
   EventId m_bucketLeakEvent;
   
   TracedCallback<Ptr<const CcnxInterestHeader>,
-                  Ptr<Ccnx>, Ptr<const CcnxFace> > m_receivedInterestsTrace;
+                 Ptr<Ccnx>, Ptr<const CcnxFace> > m_receivedInterestsTrace;
+  
   TracedCallback<Ptr<const CcnxInterestHeader>,
-                  Ptr<Ccnx>, Ptr<const CcnxFace> > m_transmittedInterestsTrace;
+                 Ptr<Ccnx>, Ptr<const CcnxFace> > m_transmittedInterestsTrace;
+  
   TracedCallback<Ptr<const CcnxInterestHeader>,
-                  DropReason,
-                  Ptr<Ccnx>, Ptr<const CcnxFace> > m_droppedInterestsTrace;
+                 DropReason,
+                 Ptr<Ccnx>, Ptr<const CcnxFace> > m_droppedInterestsTrace;
 
   TracedCallback<Ptr<const CcnxContentObjectHeader>,
-                  Ptr<const Packet>,/*payload*/
-                  Ptr<Ccnx>, Ptr<const CcnxFace> > m_receivedDataTrace;
+                 Ptr<const Packet>,/*payload*/
+                 Ptr<Ccnx>, Ptr<const CcnxFace> > m_receivedDataTrace;
+
   TracedCallback<Ptr<const CcnxContentObjectHeader>,
                   Ptr<const Packet>,/*payload*/
                   ContentObjectSource,
