ContentObject and Interest serialization and deserialization seem to
work normal now.  Debug examples added to examples/ folder (they
probably should become a part of test suite).
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;
 }