diff --git a/apps/ccnx-producer.cc b/apps/ccnx-producer.cc
index 6e413a0..69c5aea 100644
--- a/apps/ccnx-producer.cc
+++ b/apps/ccnx-producer.cc
@@ -26,6 +26,7 @@
 #include "ns3/string.h"
 #include "ns3/uinteger.h"
 #include "ns3/packet.h"
+#include "ns3/simulator.h"
 
 #include "../model/ccnx-local-face.h"
 #include "ns3/ccnx-fib.h"
@@ -57,6 +58,12 @@
                    UintegerValue (1024),
                    MakeUintegerAccessor(&CcnxProducer::m_virtualPayloadSize),
                    MakeUintegerChecker<uint32_t>())
+
+    // optional attributes
+    .AddAttribute ("SignatureBits", "SignatureBits field",
+                   UintegerValue (0),
+                   MakeUintegerAccessor(&CcnxProducer::m_signatureBits),
+                   MakeUintegerChecker<uint32_t> ())
     ;
         
   return tid;
@@ -107,6 +114,8 @@
   static CcnxContentObjectTail tail;
   Ptr<CcnxContentObjectHeader> header = Create<CcnxContentObjectHeader> ();
   header->SetName (Create<CcnxNameComponents> (interest->GetName ()));
+  header->GetSignedInfo ().SetTimestamp (Simulator::Now ());
+  header->GetSignature ().SetSignatureBits (m_signatureBits);
 
   NS_LOG_INFO ("node("<< GetNode()->GetId() <<") respodning with ContentObject:\n" << boost::cref(*header));
   
diff --git a/apps/ccnx-producer.h b/apps/ccnx-producer.h
index cf579ab..55e7162 100644
--- a/apps/ccnx-producer.h
+++ b/apps/ccnx-producer.h
@@ -26,6 +26,7 @@
 
 #include "ns3/ptr.h"
 #include "ns3/ccnx-name-components.h"
+#include "ns3/ccnx-content-object-header.h"
 
 namespace ns3 
 {
@@ -52,6 +53,9 @@
 private:
   CcnxNameComponents m_prefix;
   uint32_t m_virtualPayloadSize;
+  
+  uint32_t m_signatureBits;
+  // CcnxContentObjectHeader::SignedInfo m_signedInfo;
 };
 
 }
diff --git a/model/ccnx-content-object-header.cc b/model/ccnx-content-object-header.cc
index 05220f5..070c366 100644
--- a/model/ccnx-content-object-header.cc
+++ b/model/ccnx-content-object-header.cc
@@ -127,13 +127,13 @@
       
       written += CCNB::AppendTaggedBlob (start, CCN_DTAG_Type, type, 3);
     }
-  if (GetSignedInfo ().GetFreshness () >= Seconds(0))
+  if (GetSignedInfo ().GetFreshness () > Seconds(0))
     {
       written += CCNB::AppendBlockHeader (start, CCN_DTAG_FreshnessSeconds, CCN_DTAG);
       written += CCNB::AppendNumber (start, GetSignedInfo ().GetFreshness ().ToInteger (Time::S));
       written += CCNB::AppendCloser (start);
     }
-  if (GetSignedInfo ().GetKeyLocator ()->size () > 0)
+  if (GetSignedInfo ().GetKeyLocator () != 0)
     {
       written += CCNB::AppendBlockHeader (start, CCN_DTAG_KeyLocator, CCN_DTAG); // <KeyLocator>
       {
@@ -199,14 +199,14 @@
     {
       written += CCNB::EstimateTaggedBlob (CCN_DTAG_Type, 3);
     }
-  if (GetSignedInfo ().GetFreshness () >= Seconds(0))
+  if (GetSignedInfo ().GetFreshness () > Seconds(0))
     {
       written += CCNB::EstimateBlockHeader (CCN_DTAG_FreshnessSeconds);
       written += CCNB::EstimateNumber (GetSignedInfo ().GetFreshness ().ToInteger (Time::S));
       written += 1;
     }
 
-  if (GetSignedInfo ().GetKeyLocator ()->size () > 0)
+  if (GetSignedInfo ().GetKeyLocator () != 0)
     {
       written += CCNB::EstimateBlockHeader (CCN_DTAG_KeyLocator); // <KeyLocator>
       {
