diff --git a/src/ccnx-pco.cpp b/src/ccnx-pco.cpp
index dce3bcb..1d83b26 100644
--- a/src/ccnx-pco.cpp
+++ b/src/ccnx-pco.cpp
@@ -3,15 +3,27 @@
 namespace Ccnx {
 
 ParsedContentObject::ParsedContentObject(const unsigned char *data, size_t len)
-            : m_comps(NULL)
 {
-  m_comps = ccn_indexbuf_create();
-  int res = ccn_parse_ContentObject(data, len, &m_pco, m_comps);
+  ccn_indexbuf *comps = ccn_indexbuf_create();
+  ccn_parsed_ContentObject pco;
+  int res = ccn_parse_ContentObject(data, len, &pco, comps);
   if (res < 0)
   {
     boost::throw_exception(MisformedContentObjectException());
   }
-  readRaw(m_bytes, data, len);
+
+  const unsigned char *content;
+  size_t length;
+  res = ccn_content_get_value(data, pco.offset[CCN_PCO_E], &pco, &content, &length);
+  if (res < 0)
+  {
+    boost::throw_exception(MisformedContentObjectException());
+  }
+  readRaw(m_content, content, length);
+
+  m_name = Name(data, comps);
+  cout << "in Constructor: name " << m_name << endl;
+  cout << "content : " << string((const char *)&m_content[0], m_content.size()) << endl;
 }
 
 ParsedContentObject::ParsedContentObject(const Bytes &bytes)
@@ -21,35 +33,26 @@
 
 ParsedContentObject::ParsedContentObject(const ParsedContentObject &other)
 {
-  ParsedContentObject(other.m_bytes);
+  m_content = other.m_content;
+  m_name = other.m_name;
 }
 
 ParsedContentObject::~ParsedContentObject()
 {
-  ccn_indexbuf_destroy(&m_comps);
-  m_comps = NULL;
 }
 
 Bytes
 ParsedContentObject::content() const
 {
-  const unsigned char *content;
-  size_t len;
-  Bytes bytes;
-  int res = ccn_content_get_value(head(m_bytes), m_pco.offset[CCN_PCO_E], &m_pco, &content, &len);
-  if (res < 0)
-  {
-    boost::throw_exception(MisformedContentObjectException());
-  }
-
-  readRaw(bytes, content, len);
-  return bytes;
+  cout << "content() : " << string((const char *)&m_content[0], m_content.size()) << endl;
+  return m_content;
 }
 
 Name
 ParsedContentObject::name() const
 {
-  return Name(head(m_bytes), m_comps);
+  cout <<"name() : " << m_name << endl;
+  return m_name;
 }
 
 }
