diff --git a/examples/custom-apps/custom-app.cc b/examples/custom-apps/custom-app.cc
index 86108ac..9abd7bb 100644
--- a/examples/custom-apps/custom-app.cc
+++ b/examples/custom-apps/custom-app.cc
@@ -93,14 +93,14 @@
   
   Ptr<ndn::Name> prefix = Create<ndn::Name> ("/prefix/sub"); // another way to create name
 
-  // Create and configure ndn::InterestHeader
-  ndn::InterestHeader interestHeader;
+  // Create and configure ndn::Interest
+  ndn::Interest interestHeader;
   UniformVariable rand (0,std::numeric_limits<uint32_t>::max ());
   interestHeader.SetNonce            (rand.GetValue ());
   interestHeader.SetName             (prefix);
   interestHeader.SetInterestLifetime (Seconds (1.0));
 
-  // Create packet and add ndn::InterestHeader
+  // Create packet and add ndn::Interest
   Ptr<Packet> packet = Create<Packet> ();
   packet->AddHeader (interestHeader);
 
@@ -115,16 +115,16 @@
 
 // Callback that will be called when Interest arrives
 void
-CustomApp::OnInterest (const Ptr<const ndn::InterestHeader> &interest, Ptr<Packet> origPacket)
+CustomApp::OnInterest (const Ptr<const ndn::Interest> &interest, Ptr<Packet> origPacket)
 {
   NS_LOG_DEBUG ("Received Interest packet for " << interest->GetName ());
 
-  // Create and configure ndn::ContentObjectHeader and ndn::ContentObjectTail
+  // Create and configure ndn::ContentObject and ndn::ContentObjectTail
   // (header is added in front of the packet, tail is added at the end of the packet)
 
   // Note that Interests send out by the app will not be sent back to the app !
   
-  ndn::ContentObjectHeader data;
+  ndn::ContentObject data;
   data.SetName (Create<ndn::Name> (interest->GetName ())); // data will have the same name as Interests
 
   ndn::ContentObjectTail trailer; // doesn't require any configuration
@@ -145,7 +145,7 @@
 
 // Callback that will be called when Data arrives
 void
-CustomApp::OnContentObject (const Ptr<const ndn::ContentObjectHeader> &contentObject,
+CustomApp::OnContentObject (const Ptr<const ndn::ContentObject> &contentObject,
                             Ptr<Packet> payload)
 {
   NS_LOG_DEBUG ("Receiving ContentObject packet for " << contentObject->GetName ());
diff --git a/examples/custom-apps/custom-app.h b/examples/custom-apps/custom-app.h
index 1ae1f4f..0d33bd8 100644
--- a/examples/custom-apps/custom-app.h
+++ b/examples/custom-apps/custom-app.h
@@ -54,11 +54,11 @@
 
   // (overridden from ndn::App) Callback that will be called when Interest arrives
   virtual void
-  OnInterest (const Ptr<const ndn::InterestHeader> &interest, Ptr<Packet> origPacket);
+  OnInterest (const Ptr<const ndn::Interest> &interest, Ptr<Packet> origPacket);
 
   // (overridden from ndn::App) Callback that will be called when Data arrives
   virtual void
-  OnContentObject (const Ptr<const ndn::ContentObjectHeader> &contentObject,
+  OnContentObject (const Ptr<const ndn::ContentObject> &contentObject,
                    Ptr<Packet> payload);
 
 private:
diff --git a/examples/custom-apps/dumb-requester.cc b/examples/custom-apps/dumb-requester.cc
index 3dbcadf..643e24c 100644
--- a/examples/custom-apps/dumb-requester.cc
+++ b/examples/custom-apps/dumb-requester.cc
@@ -90,14 +90,14 @@
   
   Ptr<ndn::Name> prefix = Create<ndn::Name> (m_name); // another way to create name
 
-  // Create and configure ndn::InterestHeader
-  ndn::InterestHeader interestHeader;
+  // Create and configure ndn::Interest
+  ndn::Interest interestHeader;
   UniformVariable rand (0,std::numeric_limits<uint32_t>::max ());
   interestHeader.SetNonce            (rand.GetValue ());
   interestHeader.SetName             (prefix);
   interestHeader.SetInterestLifetime (Seconds (1.0));
 
-  // Create packet and add ndn::InterestHeader
+  // Create packet and add ndn::Interest
   Ptr<Packet> packet = Create<Packet> ();
   packet->AddHeader (interestHeader);
 
@@ -112,7 +112,7 @@
 }
 
 void
-DumbRequester::OnContentObject (const Ptr<const ndn::ContentObjectHeader> &contentObject,
+DumbRequester::OnContentObject (const Ptr<const ndn::ContentObject> &contentObject,
                                 Ptr<Packet> payload)
 {
   NS_LOG_DEBUG ("Receiving ContentObject packet for " << contentObject->GetName ());
diff --git a/examples/custom-apps/dumb-requester.h b/examples/custom-apps/dumb-requester.h
index 2b28c77..06ed812 100644
--- a/examples/custom-apps/dumb-requester.h
+++ b/examples/custom-apps/dumb-requester.h
@@ -52,7 +52,7 @@
 
   // (overridden from ndn::App) Callback that will be called when Data arrives
   virtual void
-  OnContentObject (const Ptr<const ndn::ContentObjectHeader> &contentObject,
+  OnContentObject (const Ptr<const ndn::ContentObject> &contentObject,
                    Ptr<Packet> payload);
   
 private:
diff --git a/examples/custom-apps/hijacker.cc b/examples/custom-apps/hijacker.cc
index 252cf92..4213f97 100644
--- a/examples/custom-apps/hijacker.cc
+++ b/examples/custom-apps/hijacker.cc
@@ -45,7 +45,7 @@
 }
 
 void
-Hijacker::OnInterest (const Ptr<const ndn::InterestHeader> &interest, Ptr<Packet> packet)
+Hijacker::OnInterest (const Ptr<const ndn::Interest> &interest, Ptr<Packet> packet)
 {
   ndn::App::OnInterest (interest, packet); // forward call to perform app-level tracing
   // do nothing else (hijack interest)
diff --git a/examples/custom-apps/hijacker.h b/examples/custom-apps/hijacker.h
index 84d9070..07185de 100644
--- a/examples/custom-apps/hijacker.h
+++ b/examples/custom-apps/hijacker.h
@@ -39,7 +39,7 @@
 
   // Receive all Interests but do nothing in response
   void
-  OnInterest (const Ptr<const ndn::InterestHeader> &interest, Ptr<Packet> packet);
+  OnInterest (const Ptr<const ndn::Interest> &interest, Ptr<Packet> packet);
 
 protected:
   // inherited from Application base class.
diff --git a/examples/custom-strategies/custom-strategy.cc b/examples/custom-strategies/custom-strategy.cc
index 5812ca3..05e7e83 100644
--- a/examples/custom-strategies/custom-strategy.cc
+++ b/examples/custom-strategies/custom-strategy.cc
@@ -44,7 +44,7 @@
 
 bool
 CustomStrategy::DoPropagateInterest (Ptr<Face> inFace,
-                                     Ptr<const InterestHeader> header,
+                                     Ptr<const Interest> header,
                                      Ptr<const Packet> origPacket,
                                      Ptr<pit::Entry> pitEntry)
 {
@@ -76,7 +76,7 @@
 
 void
 CustomStrategy::DidSendOutInterest (Ptr<Face> inFace, Ptr<Face> outFace,
-                                    Ptr<const InterestHeader> header,
+                                    Ptr<const Interest> header,
                                     Ptr<const Packet> origPacket,
                                     Ptr<pit::Entry> pitEntry)
 {
diff --git a/examples/custom-strategies/custom-strategy.h b/examples/custom-strategies/custom-strategy.h
index 0c1fbf2..057669a 100644
--- a/examples/custom-strategies/custom-strategy.h
+++ b/examples/custom-strategies/custom-strategy.h
@@ -30,14 +30,14 @@
 protected:
   virtual bool
   DoPropagateInterest (Ptr<Face> incomingFace,
-                       Ptr<const InterestHeader> header,
+                       Ptr<const Interest> header,
                        Ptr<const Packet> origPacket,
                        Ptr<pit::Entry> pitEntry);
 
 public:
   virtual void
   DidSendOutInterest (Ptr<Face> inFace, Ptr<Face> outFace,
-                      Ptr<const InterestHeader> header,
+                      Ptr<const Interest> header,
                       Ptr<const Packet> origPacket,
                       Ptr<pit::Entry> pitEntry);
 
