diff --git a/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc b/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc
index 67882a9..ac0d285 100644
--- a/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc
+++ b/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc
@@ -46,7 +46,7 @@
 
 // int Block::counter = 0;
 
-Ptr<Block> Block::ParseBlock (Buffer::Iterator &start)
+Ptr<Block> Block::ParseBlock (Buffer::Iterator &start, bool dontParseBlock)
 {
   // std::cout << "<< pos: " << counter << "\n";
   uint32_t value = 0;
@@ -62,6 +62,11 @@
     }
   if (start.IsEnd())
     CcnbDecodingException ();
+
+  if (dontParseBlock)
+    {
+      return 0;
+    }
   
   value <<= 4;
   value += ( (byte&(~CCN_TT_HBIT)) >> 3);
diff --git a/model/wire/ccnb/ccnb-parser/syntax-tree/block.h b/model/wire/ccnb/ccnb-parser/syntax-tree/block.h
index caf227f..dcaadaf 100644
--- a/model/wire/ccnb/ccnb-parser/syntax-tree/block.h
+++ b/model/wire/ccnb/ccnb-parser/syntax-tree/block.h
@@ -53,11 +53,13 @@
    * \brief Parsing stream (recursively) and creating a parsed BLOCK
    * object
    *
-   * \param start buffer iterator pointing to the start position for parsing 
+   * \param start buffer iterator pointing to the start position for parsing
+   * \param dontParseBlock parameter to indicate whether the block should not be parsed, just length
+   *                       of the block should be consumed (e.g., in case of "cheating" with content of Data packets)
    * \returns parsed ccnb-encoded block, that could contain more block inside
    */
   static Ptr<Block>
-  ParseBlock (Buffer::Iterator &start);
+  ParseBlock (Buffer::Iterator &start, bool dontParseBlock = false);
 
   virtual ~Block ();
   
diff --git a/model/wire/ccnb/ccnb-parser/syntax-tree/dtag.cc b/model/wire/ccnb/ccnb-parser/syntax-tree/dtag.cc
index b7af79b..3095747 100644
--- a/model/wire/ccnb/ccnb-parser/syntax-tree/dtag.cc
+++ b/model/wire/ccnb/ccnb-parser/syntax-tree/dtag.cc
@@ -40,7 +40,10 @@
    * buffer
    */
   if (dtag == CCN_DTAG_Content)
-    return; // hack #1. Do not process nesting block for <Content>
+    {
+      Block::ParseBlock (start, true); // process length field and ignore it
+      return; // hack #1. Do not process nesting block for <Content>
+    }
   
   // parse attributes until first nested block reached
   while (!start.IsEnd () && BufferIteratorPeekU8 (start)!=CCN_CLOSE)
diff --git a/model/wire/ccnb/wire-ccnb-data.cc b/model/wire/ccnb/wire-ccnb-data.cc
index 0770c3d..e625e06 100644
--- a/model/wire/ccnb/wire-ccnb-data.cc
+++ b/model/wire/ccnb/wire-ccnb-data.cc
@@ -246,6 +246,10 @@
 
   Ccnb::AppendBlockHeader (start, CcnbParser::CCN_DTAG_Content, CcnbParser::CCN_DTAG); // <Content>
 
+  uint32_t payloadSize = m_data->GetPayload ()->GetSize ();
+  if (payloadSize > 0)
+    Ccnb::AppendBlockHeader (start, payloadSize, CcnbParser::CCN_BLOB);
+
   // there are no closing tags !!!
   // The closing tag is handled by ContentObjectTail
 }
@@ -319,6 +323,10 @@
 
   written += Ccnb::EstimateBlockHeader (CcnbParser::CCN_DTAG_Content); // <Content>
 
+  uint32_t payloadSize = m_data->GetPayload ()->GetSize ();
+  if (payloadSize > 0)
+    written += Ccnb::EstimateBlockHeader (payloadSize);
+
   // there are no closing tags !!!
   // The closing tag is handled by ContentObjectTail
   return written;
