First step in reimplementing CcnxPit. Everything is broken as of right now
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 72273d5..d5f4438 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -176,22 +176,23 @@
 
   // just to be on a safe side. Do the process in two steps
   std::list<boost::reference_wrapper<const CcnxPitEntry> > entriesToRemoves;
-  BOOST_FOREACH (const CcnxPitEntry &pitEntry, *m_pit)
-    {
-      m_pit->modify (m_pit->iterator_to (pitEntry),
-                     ll::bind (&CcnxPitEntry::RemoveAllReferencesToFace, ll::_1, face));
+  NS_ASSERT_MSG (false, "Need to be repaired");
+  // BOOST_FOREACH (const CcnxPitEntry &pitEntry, *m_pit)
+  //   {
+  //     m_pit->modify (pitEntry,
+  //                    ll::bind (&CcnxPitEntry::RemoveAllReferencesToFace, ll::_1, face));
 
-      // If this face is the only for the associated FIB entry, then FIB entry will be removed soon.
-      // Thus, we have to remove the whole PIT entry
-      if (pitEntry.m_fibEntry->m_faces.size () == 1 &&
-          pitEntry.m_fibEntry->m_faces.begin ()->m_face == face)
-        {
-          entriesToRemoves.push_back (boost::cref (pitEntry));
-        }
-    }
+  //     // If this face is the only for the associated FIB entry, then FIB entry will be removed soon.
+  //     // Thus, we have to remove the whole PIT entry
+  //     if (pitEntry.m_fibEntry->m_faces.size () == 1 &&
+  //         pitEntry.m_fibEntry->m_faces.begin ()->m_face == face)
+  //       {
+  //         entriesToRemoves.push_back (boost::cref (pitEntry));
+  //       }
+  //   }
   BOOST_FOREACH (const CcnxPitEntry &removedEntry, entriesToRemoves)
     {
-      m_pit->erase (m_pit->iterator_to (removedEntry));
+      m_pit->erase (removedEntry);
     }
 
   CcnxFaceList::iterator face_it = find (m_faces.begin(), m_faces.end(), face);
@@ -294,8 +295,8 @@
   NS_LOG_FUNCTION (incomingFace << header << packet);
   m_inNacks (header, incomingFace);
 
-  CcnxPit::iterator pitEntry = m_pit->Lookup (*header);
-  if (pitEntry == m_pit->end ())
+  Ptr<CcnxPitEntry> pitEntry = m_pit->Lookup (*header);
+  if (pitEntry == 0)
     {
       // somebody is doing something bad
       m_dropNacks (header, NON_DUPLICATED, incomingFace);
@@ -381,13 +382,13 @@
 {
   m_inInterests (header, incomingFace);
 
-  CcnxPit::iterator pitEntry = m_pit->Lookup (*header);
-  if (pitEntry == m_pit->end ())
+  Ptr<CcnxPitEntry> pitEntry = m_pit->Lookup (*header);
+  if (pitEntry == 0)
     {
       pitEntry = m_pit->Create (*header);
     }
 
-  if (pitEntry == m_pit->end ())
+  if (pitEntry == 0)
     {
       // if it is still not created, then give up processing
       m_dropInterests (header, PIT_LIMIT, incomingFace);
@@ -533,8 +534,8 @@
                                const Ptr<const Packet> &packet)
 {
   // 1. Lookup PIT entry
-  CcnxPit::iterator pitEntry = m_pit->Lookup (*header);
-  if (pitEntry != m_pit->end ())
+  Ptr<CcnxPitEntry> pitEntry = m_pit->Lookup (*header);
+  if (pitEntry != 0)
     {
       //satisfy all pending incoming Interests
       BOOST_FOREACH (const CcnxPitEntryIncomingFace &incoming, pitEntry->m_incoming)
@@ -579,8 +580,8 @@
   m_inData (header, payload, incomingFace);
   
   // 1. Lookup PIT entry
-  CcnxPit::iterator pitEntry = m_pit->Lookup (*header);
-  if (pitEntry != m_pit->end ())
+  Ptr<CcnxPitEntry> pitEntry = m_pit->Lookup (*header);
+  if (pitEntry != 0)
     {
       // Note that with MultiIndex we need to modify entries indirectly
 
@@ -657,7 +658,7 @@
 }
 
 void
-CcnxL3Protocol::GiveUpInterest (CcnxPit::iterator pitEntry,
+CcnxL3Protocol::GiveUpInterest (Ptr<CcnxPitEntry> pitEntry,
                                 Ptr<CcnxInterestHeader> header)
 {
   NS_LOG_FUNCTION (this);