diff --git a/helper/ndn-header-helper.h b/helper/ndn-header-helper.h
index 1e3e086..376cdb7 100644
--- a/helper/ndn-header-helper.h
+++ b/helper/ndn-header-helper.h
@@ -41,7 +41,7 @@
  *
  * Ndn doesn't really have a header, so we need this class to
  * determine type of Ndn packet and return corresponent header class,
- * Interest or ContentObject
+ * Interest or Data
  *
  * Throws UnknownHeaderException if header type couldn't be determined
  */
@@ -57,7 +57,7 @@
   /**
    *	Packet ::= Version
    *		   PacketType
-   *		   (Interest | ContentObject)
+   *		   (Interest | Data)
    *
    *        0                   1
    *        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
@@ -68,7 +68,7 @@
    * For ccnb-encoding compatibility, ``Version`` / ``PacketType`` has two reserved values to denote ccnb-encoded packet:
    *
    * Version 0x01, PacketType 0xD2 --- ccnb-encoded ``Interest`` packet
-   * Version 0x04, PacketType 0x82 --- ccnb-encoded ``ContentObject`` packet
+   * Version 0x04, PacketType 0x82 --- ccnb-encoded ``Data`` packet
    *
    *
    * It peeks first 2 bytes of a packet.
diff --git a/helper/ndn-stack-helper.cc b/helper/ndn-stack-helper.cc
index e0bf401..085078b 100644
--- a/helper/ndn-stack-helper.cc
+++ b/helper/ndn-stack-helper.cc
@@ -179,13 +179,13 @@
 void
 StackHelper::EnableLimits (bool enable/* = true*/,
                            Time avgRtt/*=Seconds(0.1)*/,
-                           uint32_t avgContentObject/*=1100*/,
+                           uint32_t avgData/*=1100*/,
                            uint32_t avgInterest/*=40*/)
 {
   NS_LOG_INFO ("EnableLimits: " << enable);
   m_limitsEnabled = enable;
   m_avgRtt = avgRtt;
-  m_avgContentObjectSize = avgContentObject;
+  m_avgDataSize = avgData;
   m_avgInterestSize = avgInterest;
 }
 
@@ -355,7 +355,7 @@
 
           NS_LOG_INFO("DataRate for this link is " << dataRate.Get());
 
-          double maxInterestPackets = 1.0  * dataRate.Get ().GetBitRate () / 8.0 / (m_avgContentObjectSize + m_avgInterestSize);
+          double maxInterestPackets = 1.0  * dataRate.Get ().GetBitRate () / 8.0 / (m_avgDataSize + m_avgInterestSize);
           // NS_LOG_INFO ("Max packets per second: " << maxInterestPackets);
           // NS_LOG_INFO ("Max burst: " << m_avgRtt.ToDouble (Time::S) * maxInterestPackets);
           NS_LOG_INFO ("MaxLimit: " << (int)(m_avgRtt.ToDouble (Time::S) * maxInterestPackets));
diff --git a/helper/ndn-stack-helper.h b/helper/ndn-stack-helper.h
index 8303440..dc11bcf 100644
--- a/helper/ndn-stack-helper.h
+++ b/helper/ndn-stack-helper.h
@@ -166,11 +166,11 @@
    *
    * @param enable           Enable or disable limits
    * @param avgRtt           Average RTT
-   * @param avgContentObject Average size of contentObject packets (including all headers)
+   * @param avgData Average size of contentObject packets (including all headers)
    * @param avgInterest      Average size of interest packets (including all headers)
    */
   void
-  EnableLimits (bool enable = true, Time avgRtt=Seconds(0.1), uint32_t avgContentObject=1100, uint32_t avgInterest=40);
+  EnableLimits (bool enable = true, Time avgRtt=Seconds(0.1), uint32_t avgData=1100, uint32_t avgInterest=40);
 
   /**
    * \brief Install Ndn stack on the node
@@ -305,7 +305,7 @@
 
   bool     m_limitsEnabled;
   Time     m_avgRtt;
-  uint32_t m_avgContentObjectSize;
+  uint32_t m_avgDataSize;
   uint32_t m_avgInterestSize;
   bool     m_needSetDefaultRoutes;
 
