Initial redesign of internal data structures
diff --git a/model/ccnx-pit.h b/model/ccnx-pit.h
index 826f49f..be9c80f 100644
--- a/model/ccnx-pit.h
+++ b/model/ccnx-pit.h
@@ -124,32 +124,50 @@
   /**
    * \brief Find corresponding PIT entry for the given content name
    * \param prefix Prefix for which to lookup the entry
-   * \returns const reference to Pit entry. If record not found,
-   *          CcnxPitEntryNotFound exception will be thrown
+   * \returns iterator to Pit entry. If record not found,
+   *          return end() iterator
    */
-  CcnxPitEntryContainer::type::iterator
+  iterator
   Lookup (const CcnxContentObjectHeader &header) const;
 
   /**
-   * \brief Find corresponding PIT entry for the given content name
-   * \param prefix Prefix for which to lookup the entry
-   * \returns a tuple:
-   * get<0>: `const CcnxPitEntry&`: a valid PIT entry (if record does not exist, it will be created)
-   * get<1>: `bool`: true if a new entry was created
-   * get<2>: `bool`: true if a PIT entry exists and Nonce that present in header has been already seen
-   * 
+   * \brief Find a PIT entry for the given content interest
+   * \param header parsed interest header
+   * \returns iterator to Pit entry. If record not found,
+   *          return end() iterator
    */
-  boost::tuple<const CcnxPitEntry&, bool, bool>
+  iterator
   Lookup (const CcnxInterestHeader &header);
 
   /**
-   * @brief Get pruning timeout for PIT entries (configuration parameter)
+   * @brief Check if the Interest carries an existent nonce.
+   * If not, nonce will be added to the list of known nonces
+   * @returns true if interest is duplicate (carries an existent nonce), false otherwise
    */
-  Time GetPitEntryPruningTimeout () const
-  {
-    return m_PitEntryPruningTimout;
-  }
+  bool
+  CheckIfDuplicate (iterator entry, const CcnxInterestHeader &header);
   
+  /**
+   * @brief Creates a PIT entry for the given interest
+   * @param header parsed interest header
+   * @returns iterator to Pit entry. If record could not be created (e.g., limit reached),
+   *          return end() iterator
+   *
+   * Note. This call assumes that the entry does not exist (i.e., there was a Lookup call before)
+   */
+  iterator
+  Create (const CcnxInterestHeader &header);
+  
+  /**
+   * @brief Mark PIT entry deleted
+   * @param entry PIT entry
+   *
+   * Effectively, this method removes all incoming/outgoing faces and set
+   * lifetime +m_PitEntryDefaultLifetime from Now ()
+   */
+  void
+  MarkErased (iterator entry);
+    
 protected:
   // inherited from Object class                                                                                                                                                        
   virtual void NotifyNewAggregate (); ///< @brief Even when object is aggregated to another Object
@@ -195,11 +213,6 @@
 
 std::ostream& operator<< (std::ostream& os, const CcnxPit &pit);
 
-/**
- * @brief Class for exception when PIT entry is not found
- */
-class CcnxPitEntryNotFound {};
-
 } // namespace ns3
 
 #endif	/* CCNX_PIT_H */