diff --git a/apps/ndn-app.cpp b/apps/ndn-app.cpp
index 0472550..4121eef 100644
--- a/apps/ndn-app.cpp
+++ b/apps/ndn-app.cpp
@@ -49,13 +49,21 @@
                                         MakeTraceSourceAccessor(&App::m_receivedDatas),
                                         "ns3::ndn::App::DataTraceCallback")
 
+                        .AddTraceSource("ReceivedNacks", "ReceivedNacks",
+                                        MakeTraceSourceAccessor(&App::m_receivedNacks),
+                                        "ns3::ndn::App::NackTraceCallback")
+
                         .AddTraceSource("TransmittedInterests", "TransmittedInterests",
                                         MakeTraceSourceAccessor(&App::m_transmittedInterests),
                                         "ns3::ndn::App::InterestTraceCallback")
 
                         .AddTraceSource("TransmittedDatas", "TransmittedDatas",
                                         MakeTraceSourceAccessor(&App::m_transmittedDatas),
-                                        "ns3::ndn::App::DataTraceCallback");
+                                        "ns3::ndn::App::DataTraceCallback")
+
+                        .AddTraceSource("TransmittedNacks", "TransmittedNacks",
+                                        MakeTraceSourceAccessor(&App::m_transmittedNacks),
+                                        "ns3::ndn::App::NackTraceCallback");
   return tid;
 }
 
@@ -122,7 +130,7 @@
   NS_LOG_FUNCTION(this << nack);
 
   // @TODO Implement
-  // m_receivedDatas(data, this, m_face);
+  m_receivedNacks(nack, this, m_face);
 }
 
 // Application Methods
diff --git a/apps/ndn-app.hpp b/apps/ndn-app.hpp
index c5b3ae7..5af75b5 100644
--- a/apps/ndn-app.hpp
+++ b/apps/ndn-app.hpp
@@ -83,7 +83,7 @@
 public:
   typedef void (*InterestTraceCallback)(shared_ptr<const Interest>, Ptr<App>, shared_ptr<Face>);
   typedef void (*DataTraceCallback)(shared_ptr<const Data>, Ptr<App>, shared_ptr<Face>);
-  // @TODO add NACK
+  typedef void (*NackTraceCallback)(shared_ptr<const lp::Nack>, Ptr<App>, shared_ptr<Face>);
 
 protected:
   virtual void
@@ -112,7 +112,8 @@
   TracedCallback<shared_ptr<const Data>, Ptr<App>, shared_ptr<Face>>
     m_receivedDatas; ///< @brief App-level trace of received Data
 
-  // @TODO add NACK
+  TracedCallback<shared_ptr<const lp::Nack>, Ptr<App>, shared_ptr<Face>>
+    m_receivedNacks; ///< @brief App-level trace of received Nacks
 
   TracedCallback<shared_ptr<const Interest>, Ptr<App>, shared_ptr<Face>>
     m_transmittedInterests; ///< @brief App-level trace of transmitted Interests
@@ -120,7 +121,8 @@
   TracedCallback<shared_ptr<const Data>, Ptr<App>, shared_ptr<Face>>
     m_transmittedDatas; ///< @brief App-level trace of transmitted Data
 
-  // @TODO add NACK
+  TracedCallback<shared_ptr<const lp::Nack>, Ptr<App>, shared_ptr<Face>>
+    m_transmittedNacks; ///< @brief App-level trace of transmitted Nacks
 };
 
 } // namespace ndn
diff --git a/apps/ndn-consumer-zipf-mandelbrot.hpp b/apps/ndn-consumer-zipf-mandelbrot.hpp
index f973240..cdf58a2 100644
--- a/apps/ndn-consumer-zipf-mandelbrot.hpp
+++ b/apps/ndn-consumer-zipf-mandelbrot.hpp
@@ -63,6 +63,7 @@
 
   virtual void
   SendPacket();
+
   uint32_t
   GetNextSeq();
 
diff --git a/apps/ndn-consumer.cpp b/apps/ndn-consumer.cpp
index 3a1ec45..3ed9355 100644
--- a/apps/ndn-consumer.cpp
+++ b/apps/ndn-consumer.cpp
@@ -253,6 +253,16 @@
 }
 
 void
+Consumer::OnNack(shared_ptr<const lp::Nack> nack)
+{
+  /// tracing inside
+  App::OnNack(nack);
+
+  NS_LOG_INFO("NACK received for: " << nack->getInterest().getName()
+              << ", reason: " << nack->getReason());
+}
+
+void
 Consumer::OnTimeout(uint32_t sequenceNumber)
 {
   NS_LOG_FUNCTION(sequenceNumber);
diff --git a/apps/ndn-consumer.hpp b/apps/ndn-consumer.hpp
index 0906f07..872c46a 100644
--- a/apps/ndn-consumer.hpp
+++ b/apps/ndn-consumer.hpp
@@ -63,6 +63,10 @@
   virtual void
   OnData(shared_ptr<const Data> contentObject);
 
+  // From App
+  virtual void
+  OnNack(shared_ptr<const lp::Nack> nack);
+
   /**
    * @brief Timeout event
    * @param sequenceNumber time outed sequence number
