diff --git a/utils/tracers/ndn-cs-tracer.cc b/utils/tracers/ndn-cs-tracer.cc
index 10b7448..bf7df69 100644
--- a/utils/tracers/ndn-cs-tracer.cc
+++ b/utils/tracers/ndn-cs-tracer.cc
@@ -276,7 +276,7 @@
 }
 
 void 
-CsTracer::CacheHits (Ptr<const Interest>, Ptr<const ContentObject>)
+CsTracer::CacheHits (Ptr<const Interest>, Ptr<const Data>)
 {
   m_stats.m_cacheHits ++;
 }
diff --git a/utils/tracers/ndn-cs-tracer.h b/utils/tracers/ndn-cs-tracer.h
index 906e85a..fc8e0fc 100644
--- a/utils/tracers/ndn-cs-tracer.h
+++ b/utils/tracers/ndn-cs-tracer.h
@@ -41,10 +41,10 @@
 namespace ndn {
 
 class Interest;
-class ContentObject;
+class Data;
 
 typedef Interest InterestHeader;
-typedef ContentObject ContentObjectHeader;
+typedef Data DataHeader;
 
 namespace cs {
 
@@ -164,7 +164,7 @@
   Connect ();
 
   void 
-  CacheHits (Ptr<const Interest>, Ptr<const ContentObject>);
+  CacheHits (Ptr<const Interest>, Ptr<const Data>);
   
   void 
   CacheMisses (Ptr<const Interest>);
diff --git a/utils/tracers/ndn-l3-aggregate-tracer.cc b/utils/tracers/ndn-l3-aggregate-tracer.cc
index d1150ae..050e63b 100644
--- a/utils/tracers/ndn-l3-aggregate-tracer.cc
+++ b/utils/tracers/ndn-l3-aggregate-tracer.cc
@@ -358,7 +358,7 @@
 }
 
 void
-L3AggregateTracer::OutData  (Ptr<const ContentObject> data, 
+L3AggregateTracer::OutData  (Ptr<const Data> data, 
                              bool fromCache, Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_outData ++;
@@ -369,7 +369,7 @@
 }
 
 void
-L3AggregateTracer::InData   (Ptr<const ContentObject> data, 
+L3AggregateTracer::InData   (Ptr<const Data> data, 
                              Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_inData ++;
@@ -380,7 +380,7 @@
 }
 
 void
-L3AggregateTracer::DropData (Ptr<const ContentObject> data, 
+L3AggregateTracer::DropData (Ptr<const Data> data, 
                              Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_dropData ++;
diff --git a/utils/tracers/ndn-l3-aggregate-tracer.h b/utils/tracers/ndn-l3-aggregate-tracer.h
index fdbf23c..ca6b35a 100644
--- a/utils/tracers/ndn-l3-aggregate-tracer.h
+++ b/utils/tracers/ndn-l3-aggregate-tracer.h
@@ -142,13 +142,13 @@
   DropNacks (Ptr<const Interest>, Ptr<const Face>);
 
   virtual void
-  OutData  (Ptr<const ContentObject>, bool fromCache, Ptr<const Face>);
+  OutData  (Ptr<const Data>, bool fromCache, Ptr<const Face>);
 
   virtual void
-  InData   (Ptr<const ContentObject>, Ptr<const Face>);
+  InData   (Ptr<const Data>, Ptr<const Face>);
 
   virtual void
-  DropData (Ptr<const ContentObject>, Ptr<const Face>);
+  DropData (Ptr<const Data>, Ptr<const Face>);
 
 
   virtual void
diff --git a/utils/tracers/ndn-l3-rate-tracer.cc b/utils/tracers/ndn-l3-rate-tracer.cc
index 8f91f6f..3d9a1f4 100644
--- a/utils/tracers/ndn-l3-rate-tracer.cc
+++ b/utils/tracers/ndn-l3-rate-tracer.cc
@@ -375,7 +375,7 @@
 }
 
 void
-L3RateTracer::OutData  (Ptr<const ContentObject> data,
+L3RateTracer::OutData  (Ptr<const Data> data,
                         bool fromCache, Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_outData ++;
@@ -386,7 +386,7 @@
 }
 
 void
-L3RateTracer::InData   (Ptr<const ContentObject> data,
+L3RateTracer::InData   (Ptr<const Data> data,
                         Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_inData ++;
@@ -397,7 +397,7 @@
 }
 
 void
-L3RateTracer::DropData (Ptr<const ContentObject> data,
+L3RateTracer::DropData (Ptr<const Data> data,
                         Ptr<const Face> face)
 {
   m_stats[face].get<0> ().m_dropData ++;
diff --git a/utils/tracers/ndn-l3-rate-tracer.h b/utils/tracers/ndn-l3-rate-tracer.h
index 9df79b1..d2f965b 100644
--- a/utils/tracers/ndn-l3-rate-tracer.h
+++ b/utils/tracers/ndn-l3-rate-tracer.h
@@ -144,13 +144,13 @@
   DropNacks (Ptr<const Interest>, Ptr<const Face>);
 
   virtual void
-  OutData  (Ptr<const ContentObject>, bool fromCache, Ptr<const Face>);
+  OutData  (Ptr<const Data>, bool fromCache, Ptr<const Face>);
 
   virtual void
-  InData   (Ptr<const ContentObject>, Ptr<const Face>);
+  InData   (Ptr<const Data>, Ptr<const Face>);
 
   virtual void
-  DropData (Ptr<const ContentObject>, Ptr<const Face>);
+  DropData (Ptr<const Data>, Ptr<const Face>);
 
   virtual void
   SatisfiedInterests (Ptr<const pit::Entry>);
diff --git a/utils/tracers/ndn-l3-tracer.h b/utils/tracers/ndn-l3-tracer.h
index ee525ed..2f132bd 100644
--- a/utils/tracers/ndn-l3-tracer.h
+++ b/utils/tracers/ndn-l3-tracer.h
@@ -43,7 +43,7 @@
 class Face;
 
 class Interest;
-class ContentObject;
+class Data;
 
 /**
  * @ingroup ndn-tracers
@@ -109,13 +109,13 @@
 
 
   virtual void
-  OutData  (Ptr<const ContentObject>, bool fromCache, Ptr<const Face>) = 0;
+  OutData  (Ptr<const Data>, bool fromCache, Ptr<const Face>) = 0;
 
   virtual void
-  InData   (Ptr<const ContentObject>, Ptr<const Face>) = 0;
+  InData   (Ptr<const Data>, Ptr<const Face>) = 0;
 
   virtual void
-  DropData (Ptr<const ContentObject>, Ptr<const Face>) = 0;
+  DropData (Ptr<const Data>, Ptr<const Face>) = 0;
 
   virtual void
   SatisfiedInterests (Ptr<const pit::Entry>) = 0;
