diff --git a/examples/custom-apps/custom-app.cc b/examples/custom-apps/custom-app.cc
index 9abd7bb..7ab508c 100644
--- a/examples/custom-apps/custom-app.cc
+++ b/examples/custom-apps/custom-app.cc
@@ -94,23 +94,20 @@
   Ptr<ndn::Name> prefix = Create<ndn::Name> ("/prefix/sub"); // another way to create name
 
   // Create and configure ndn::Interest
-  ndn::Interest interestHeader;
+  Ptr<ndn::Interest> interestHeader = Create<ndn::Interest> ();
   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::Interest
-  Ptr<Packet> packet = Create<Packet> ();
-  packet->AddHeader (interestHeader);
+  interestHeader->SetNonce            (rand.GetValue ());
+  interestHeader->SetName             (prefix);
+  interestHeader->SetInterestLifetime (Seconds (1.0));
 
   NS_LOG_DEBUG ("Sending Interest packet for " << *prefix);
   
   // Forward packet to lower (network) layer
-  m_protocolHandler (packet);
+  Ptr<Packet> payload = Create<Packet> ();
+  m_face->ReceiveInterest (interestHeader, payload);
 
   // Call trace (for logging purposes)
-  m_transmittedInterests (&interestHeader, this, m_face);
+  m_transmittedInterests (interestHeader, this, m_face);
 }
 
 // Callback that will be called when Interest arrives
@@ -124,23 +121,18 @@
 
   // Note that Interests send out by the app will not be sent back to the app !
   
-  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
+  Ptr<ndn::ContentObject> data = Create<ndn::ContentObject> ();
+  data->SetName (Create<ndn::Name> (interest->GetName ())); // data will have the same name as Interests
 
   // Create packet and add header and trailer
-  Ptr<Packet> packet = Create<Packet> (1024);
-  packet->AddHeader (data);
-  packet->AddTrailer (trailer);
-
-  NS_LOG_DEBUG ("Sending ContentObject packet for " << data.GetName ());
+  NS_LOG_DEBUG ("Sending ContentObject packet for " << data->GetName ());
 
   // Forward packet to lower (network) layer
-  m_protocolHandler (packet);
+  Ptr<Packet> payload = Create<Packet> (1024);
+  m_face->ReceiveData (data, payload); 
 
   // Call trace (for logging purposes)
-  m_transmittedContentObjects (&data, packet, this, m_face);
+  m_transmittedContentObjects (data, payload, this, m_face);
 }
 
 // Callback that will be called when Data arrives
diff --git a/examples/custom-apps/ndn-api-app.cc b/examples/custom-apps/ndn-api-app.cc
index 3df6a27..90ebece 100644
--- a/examples/custom-apps/ndn-api-app.cc
+++ b/examples/custom-apps/ndn-api-app.cc
@@ -41,28 +41,28 @@
 
 ApiApp::ApiApp ()
 {
-  m_handler = CreateObject<Handler> ();
+  // m_handler = CreateObject<Handler> ();
 }
 
 void
 ApiApp::RequestData ()
 {
-  m_handler->sendInterest ("/test/prefix", boost::bind (&ApiApp::OnData
+  // m_handler->sendInterest ("/test/prefix", boost::bind (&ApiApp::OnData
 }
 
 void
 ApiApp::StartApplication ()
 {
-  m_handler->SetNode (GetNode ());
-  m_handler->StartApplication ();
+  // m_handler->SetNode (GetNode ());
+  // m_handler->StartApplication ();
   
-  Simulator::Schedule (Seconds (1), &::ns3::ndn::ApiApp::RequestData, this);
+  // Simulator::Schedule (Seconds (1), &::ns3::ndn::ApiApp::RequestData, this);
 }
 
 void
 ApiApp::StopApplication ()
 {
-  m_handler->StopApplication ();
+  // m_handler->StopApplication ();
 }
 
 } // namespace ndn
diff --git a/examples/ndn-simple-with-cs-lfu.cc b/examples/ndn-simple-with-cs-lfu.cc
index 59c9a46..c184863 100644
--- a/examples/ndn-simple-with-cs-lfu.cc
+++ b/examples/ndn-simple-with-cs-lfu.cc
@@ -47,8 +47,8 @@
 {
   os << "SimulationTime" << "\t"
      << "RealTime" << "\t"
-     << "NumberOfProcessedData" << "\t"
-     << "NumberOfProcessedInterests" << "\t"
+     // << "NumberOfProcessedData" << "\t"
+     // << "NumberOfProcessedInterests" << "\t"
      << "NumberPitEntries" << "\t"
      << "NumberCsEntries" << "\t"
      << "MemUsage" << "\n";
@@ -64,8 +64,8 @@
   os << Simulator::Now ().ToDouble (Time::S) << "\t";
   os << realTime << "\t";
 
-  os << ndn::L3Protocol::GetDataCounter () << "\t";
-  os << ndn::L3Protocol::GetInterestCounter () << "\t";
+  // os << ndn::L3Protocol::GetDataCounter () << "\t";
+  // os << ndn::L3Protocol::GetInterestCounter () << "\t";
 
   uint64_t pitCount = 0;
   uint64_t csCount = 0;
