diff --git a/examples/content-object-example.cc b/examples/content-object-example.cc
new file mode 100644
index 0000000..fa9700e
--- /dev/null
+++ b/examples/content-object-example.cc
@@ -0,0 +1,56 @@
+#include "ns3/test.h"
+#include "ns3/annotated-topology-reader.h"
+#include "ns3/ccnx-content-object-header.h"
+#include "ns3/uinteger.h"
+#include "ns3/random-variable.h"
+#include <limits> 
+#include "ns3/ccnx-header-helper.h"
+#include "ns3/header.h"
+#include "ns3/ccnx-name-components.h"
+#include "ns3/nstime.h"
+#include "ns3/buffer.h"
+#include "ns3/log.h"
+
+using namespace ns3;
+#include <fstream>
+
+NS_LOG_COMPONENT_DEFINE ("ContentObjectHeaderExample");
+
+int
+main (int argc, char *argv[])
+{
+	LogComponentEnable ("ContentObjectHeaderExample", LOG_ALL);
+	LogComponentEnable ("Packet", LOG_ALL);
+	
+    NS_LOG_INFO ("Test started");
+
+	Packet::EnablePrinting ();
+	Packet::EnableChecking (); 
+	Packet packet (10);
+	
+    CcnxContentObjectHeader header;
+	CcnxContentObjectTail   trailer;
+	
+    Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
+    (*testname) ("1");
+    header.SetName(testname);
+
+	NS_LOG_INFO ("Source: \n" << header << trailer);
+
+	packet.AddHeader (header);
+	packet.AddTrailer (trailer);
+
+	// NS_LOG_INFO ("Deserialized packet: \n" << packet);
+
+	NS_LOG_INFO ("Removing and deserializing individual headers");
+	
+    CcnxContentObjectHeader dst_header;
+	CcnxContentObjectTail   dst_trailer;
+
+	packet.RemoveHeader (dst_header);
+	packet.RemoveTrailer (dst_trailer);
+	
+	NS_LOG_INFO ("Target: \n" << dst_header << dst_trailer);
+
+	return 0;
+}
diff --git a/examples/interest-header-example.cc b/examples/interest-header-example.cc
index 83895ad..2b595b1 100644
--- a/examples/interest-header-example.cc
+++ b/examples/interest-header-example.cc
@@ -20,9 +20,14 @@
 main (int argc, char *argv[])
 {
 	LogComponentEnable ("InterestHeaderExample", LOG_ALL);
+	LogComponentEnable ("Packet", LOG_ALL);
 	
     NS_LOG_INFO ("Test started");
 
+	Packet::EnablePrinting ();
+	Packet::EnableChecking (); 
+	Packet packet (0);
+
     CcnxInterestHeader interestHeader;
 	
     Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
@@ -48,32 +53,17 @@
 	UniformVariable random(1, std::numeric_limits<uint32_t>::max ());
     uint32_t randomNonce = static_cast<uint32_t> (random.GetValue());
     interestHeader.SetNonce(randomNonce);
-	NS_LOG_INFO ("Source: \n" <<interestHeader);
+	NS_LOG_INFO ("Source: \n" << interestHeader);
     
-    uint32_t size = interestHeader.GetSerializedSize();
-    NS_LOG_INFO ("GetSerializedSize = " << size);
-    //uint32_t size = 5;
-    //NS_TEST_ASSERT_MSG_EQ (false, true, "GetSize = " << size);
-    
-    Buffer buf;
-	buf.AddAtStart (size);
-    Buffer::Iterator iter = buf.Begin ();
-    //interestHeader.
-    interestHeader.Serialize(iter);
+	packet.AddHeader (interestHeader);
+	NS_LOG_INFO ("Deserialized packet: " << packet);
 
-	std::ofstream of( "/tmp/file" );
-	of.write (reinterpret_cast<const char*> (buf.PeekData ()), size);
-	of.close ();
-
-	NS_LOG_INFO ("start = " << buf.GetCurrentStartOffset () << " " <<
-				 "end = " << buf.GetCurrentEndOffset ());	
+	NS_LOG_INFO ("Removing and deserializing individual headers");
 	
-    iter = buf.Begin ();
     CcnxInterestHeader target;
-	NS_LOG_INFO ("Trying to deserialize");
-	std::cout << "\n";
-	size = target.Deserialize (iter);
-	buf.RemoveAtEnd (size);
-	NS_LOG_INFO ("Deserialized size = " << size);
+	packet.RemoveHeader (target);
+
 	NS_LOG_INFO ("Target: \n" << target);
+
+	return 0;
 }
