diff --git a/model/pit/ndn-pit-entry-impl.h b/model/pit/ndn-pit-entry-impl.h
index 025ef54..751402f 100644
--- a/model/pit/ndn-pit-entry-impl.h
+++ b/model/pit/ndn-pit-entry-impl.h
@@ -39,7 +39,7 @@
   
 public:
   EntryImpl (Pit &pit,
-                Ptr<const InterestHeader> header,
+                Ptr<const Interest> header,
                 Ptr<fib::Entry> fibEntry)
   : Entry (pit, header, fibEntry)
   , item_ (0)
diff --git a/model/pit/ndn-pit-entry.cc b/model/pit/ndn-pit-entry.cc
index 6d16048..49a180e 100644
--- a/model/pit/ndn-pit-entry.cc
+++ b/model/pit/ndn-pit-entry.cc
@@ -39,7 +39,7 @@
 namespace pit {
 
 Entry::Entry (Pit &container,
-              Ptr<const InterestHeader> header,
+              Ptr<const Interest> header,
               Ptr<fib::Entry> fibEntry)
   : m_container (container)
   , m_interest (header)
@@ -260,7 +260,7 @@
   return m_maxRetxCount;
 }
 
-Ptr<const InterestHeader>
+Ptr<const Interest>
 Entry::GetInterest () const
 {
   return m_interest;
diff --git a/model/pit/ndn-pit-entry.h b/model/pit/ndn-pit-entry.h
index 694fd9f..3cb5371 100644
--- a/model/pit/ndn-pit-entry.h
+++ b/model/pit/ndn-pit-entry.h
@@ -106,7 +106,7 @@
    * \param offsetTime Relative time to the current moment, representing PIT entry lifetime
    * \param fibEntry A FIB entry associated with the PIT entry
    */
-  Entry (Pit &container, Ptr<const InterestHeader> header, Ptr<fib::Entry> fibEntry);
+  Entry (Pit &container, Ptr<const Interest> header, Ptr<fib::Entry> fibEntry);
 
   /**
    * @brief Virtual destructor
@@ -289,9 +289,9 @@
   RemoveFwTag ();
 
   /**
-   * @brief Get InterestHeader (if several interests are received, then nonce is from the first Interest)
+   * @brief Get Interest (if several interests are received, then nonce is from the first Interest)
    */
-  Ptr<const InterestHeader>
+  Ptr<const Interest>
   GetInterest () const;
 
 private:
@@ -300,7 +300,7 @@
 protected:
   Pit &m_container; ///< @brief Reference to the container (to rearrange indexes, if necessary)
 
-  Ptr<const InterestHeader> m_interest; ///< \brief Interest of the PIT entry (if several interests are received, then nonce is from the first Interest)
+  Ptr<const Interest> m_interest; ///< \brief Interest of the PIT entry (if several interests are received, then nonce is from the first Interest)
   Ptr<fib::Entry> m_fibEntry;     ///< \brief FIB entry related to this prefix
 
   nonce_container m_seenNonces;  ///< \brief map of nonces that were seen for this prefix
diff --git a/model/pit/ndn-pit-impl.cc b/model/pit/ndn-pit-impl.cc
index 27fcab2..3a61c09 100644
--- a/model/pit/ndn-pit-impl.cc
+++ b/model/pit/ndn-pit-impl.cc
@@ -182,7 +182,7 @@
 
 template<class Policy>
 Ptr<Entry>
-PitImpl<Policy>::Lookup (const ContentObjectHeader &header)
+PitImpl<Policy>::Lookup (const ContentObject &header)
 {
   /// @todo use predicate to search with exclude filters
   typename super::iterator item = super::longest_prefix_match_if (header.GetName (), EntryIsNotEmpty ());
@@ -195,7 +195,7 @@
 
 template<class Policy>
 Ptr<Entry>
-PitImpl<Policy>::Lookup (const InterestHeader &header)
+PitImpl<Policy>::Lookup (const Interest &header)
 {
   // NS_LOG_FUNCTION (header.GetName ());
   NS_ASSERT_MSG (m_fib != 0, "FIB should be set");
@@ -213,7 +213,7 @@
 
 template<class Policy>
 Ptr<Entry>
-PitImpl<Policy>::Create (Ptr<const InterestHeader> header)
+PitImpl<Policy>::Create (Ptr<const Interest> header)
 {
   NS_LOG_DEBUG (header->GetName ());
   Ptr<fib::Entry> fibEntry = m_fib->LongestPrefixMatch (*header);
diff --git a/model/pit/ndn-pit-impl.h b/model/pit/ndn-pit-impl.h
index bd86838..f3e49f9 100644
--- a/model/pit/ndn-pit-impl.h
+++ b/model/pit/ndn-pit-impl.h
@@ -75,13 +75,13 @@
 
   // inherited from Pit
   virtual Ptr<Entry>
-  Lookup (const ContentObjectHeader &header);
+  Lookup (const ContentObject &header);
 
   virtual Ptr<Entry>
-  Lookup (const InterestHeader &header);
+  Lookup (const Interest &header);
 
   virtual Ptr<Entry>
-  Create (Ptr<const InterestHeader> header);
+  Create (Ptr<const Interest> header);
 
   virtual void
   MarkErased (Ptr<Entry> entry);
diff --git a/model/pit/ndn-pit.h b/model/pit/ndn-pit.h
index f8eeafb..1968bd4 100644
--- a/model/pit/ndn-pit.h
+++ b/model/pit/ndn-pit.h
@@ -32,8 +32,8 @@
 
 class L3Protocol;
 class Face;
-class ContentObjectHeader;
-class InterestHeader;
+class ContentObject;
+class Interest;
 
 ////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////
@@ -74,7 +74,7 @@
    *          returns 0
    */
   virtual Ptr<pit::Entry>
-  Lookup (const ContentObjectHeader &header) = 0;
+  Lookup (const ContentObject &header) = 0;
 
   /**
    * \brief Find a PIT entry for the given content interest
@@ -83,7 +83,7 @@
    *          return end() iterator
    */
   virtual Ptr<pit::Entry>
-  Lookup (const InterestHeader &header) = 0;
+  Lookup (const Interest &header) = 0;
 
   /**
    * @brief Creates a PIT entry for the given interest
@@ -94,7 +94,7 @@
    * Note. This call assumes that the entry does not exist (i.e., there was a Lookup call before)
    */
   virtual Ptr<pit::Entry>
-  Create (Ptr<const InterestHeader> header) = 0;
+  Create (Ptr<const Interest> header) = 0;
   
   /**
    * @brief Mark PIT entry deleted
