diff --git a/daemon/face/datagram-face.hpp b/daemon/face/datagram-face.hpp
index 78a4a12..e7798b1 100644
--- a/daemon/face/datagram-face.hpp
+++ b/daemon/face/datagram-face.hpp
@@ -84,6 +84,7 @@
 inline void
 DatagramFace<T>::sendInterest(const Interest& interest)
 {
+  this->onSendInterest(interest);
   m_socket->async_send(boost::asio::buffer(interest.wireEncode().wire(),
                                            interest.wireEncode().size()),
                        bind(&DatagramFace<T>::handleSend, this, _1, interest.wireEncode()));
@@ -95,6 +96,7 @@
 inline void
 DatagramFace<T>::sendData(const Data& data)
 {
+  this->onSendData(data);
   m_socket->async_send(boost::asio::buffer(data.wireEncode().wire(),
                                            data.wireEncode().size()),
                        bind(&DatagramFace<T>::handleSend, this, _1, data.wireEncode()));
@@ -162,6 +164,7 @@
 DatagramFace<T>::handleReceive(const boost::system::error_code& error,
                                size_t nBytesReceived)
 {
+  NFD_LOG_DEBUG("handleReceive: " << nBytesReceived);
   receiveDatagram(m_inputBuffer, nBytesReceived, error);
   m_socket->async_receive(boost::asio::buffer(m_inputBuffer, MAX_NDN_PACKET_SIZE), 0,
                           bind(&DatagramFace<T>::handleReceive, this, _1, _2));
diff --git a/daemon/face/ethernet-face.cpp b/daemon/face/ethernet-face.cpp
index f98a3da..f279a8f 100644
--- a/daemon/face/ethernet-face.cpp
+++ b/daemon/face/ethernet-face.cpp
@@ -79,12 +79,14 @@
 void
 EthernetFace::sendInterest(const Interest& interest)
 {
+  onSendInterest(interest);
   sendPacket(interest.wireEncode());
 }
 
 void
 EthernetFace::sendData(const Data& data)
 {
+  onSendData(data);
   sendPacket(data.wireEncode());
 }
 
diff --git a/daemon/face/face-counter.cpp b/daemon/face/face-counter.cpp
deleted file mode 100644
index 3597ff1..0000000
--- a/daemon/face/face-counter.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (C) 2014 Named Data Networking Project
- * See COPYING for copyright and distribution information.
- */
-
-#include "face-counter.hpp"
-
-namespace nfd {
-
-FaceCounters::FaceCounters()
-  : m_inInterest(0)
-  , m_inData(0)
-  , m_outInterest(0)
-  , m_outData(0)
-{
-}
-
-} //namespace nfd
diff --git a/daemon/face/face-counter.hpp b/daemon/face/face-counter.hpp
index e5809eb..ba3b98e 100644
--- a/daemon/face/face-counter.hpp
+++ b/daemon/face/face-counter.hpp
@@ -13,13 +13,15 @@
 
 /** \class FaceCounter
  *  \brief represents a counter on face
+ *
+ *  \todo This class should be noncopyable
  */
 typedef uint64_t FaceCounter;
 
 
 /** \brief contains counters on face
  */
-class FaceCounters
+class FaceCounters : noncopyable
 {
 public:
   FaceCounters();
@@ -59,6 +61,14 @@
   FaceCounter m_outData;
 };
 
+inline
+FaceCounters::FaceCounters()
+  : m_inInterest(0)
+  , m_inData(0)
+  , m_outInterest(0)
+  , m_outData(0)
+{
+}
 
 inline const FaceCounter&
 FaceCounters::getInInterest() const
diff --git a/daemon/face/face.cpp b/daemon/face/face.cpp
index 7268ee4..1fb1109 100644
--- a/daemon/face/face.cpp
+++ b/daemon/face/face.cpp
@@ -11,11 +11,22 @@
 
 NFD_LOG_INIT("Face")
 
+template<class Packet>
+static inline void
+increaseCounter(const Packet& packet, FaceCounter& counter)
+{
+  ++counter;
+}
+
 Face::Face(const FaceUri& uri, bool isLocal)
   : m_id(INVALID_FACEID)
   , m_isLocal(isLocal)
   , m_uri(uri)
 {
+  onReceiveInterest += bind(&increaseCounter<Interest>, _1, boost::ref(m_counters.getInInterest()));
+  onReceiveData     += bind(&increaseCounter<Data>,     _1, boost::ref(m_counters.getInData()));
+  onSendInterest    += bind(&increaseCounter<Interest>, _1, boost::ref(m_counters.getOutInterest()));
+  onSendData        += bind(&increaseCounter<Data>,     _1, boost::ref(m_counters.getOutData()));
 }
 
 Face::~Face()
diff --git a/daemon/face/face.hpp b/daemon/face/face.hpp
index 893a253..1efcb35 100644
--- a/daemon/face/face.hpp
+++ b/daemon/face/face.hpp
@@ -51,6 +51,12 @@
   /// fires when a Data is received
   EventEmitter<Data> onReceiveData;
 
+  /// fires when an Interest is sent out
+  EventEmitter<Interest> onSendInterest;
+
+  /// fires when a Data is sent out
+  EventEmitter<Data> onSendData;
+
   /// fires when face disconnects or fails to perform properly
   EventEmitter<std::string/*reason*/> onFail;
 
diff --git a/daemon/face/multicast-udp-face.cpp b/daemon/face/multicast-udp-face.cpp
index e56c147..49146ac 100644
--- a/daemon/face/multicast-udp-face.cpp
+++ b/daemon/face/multicast-udp-face.cpp
@@ -28,6 +28,8 @@
 void
 MulticastUdpFace::sendInterest(const Interest& interest)
 {
+  onSendInterest(interest);
+
   NFD_LOG_DEBUG("Sending interest");
   m_socket->async_send_to(boost::asio::buffer(interest.wireEncode().wire(),
                                               interest.wireEncode().size()),
@@ -40,6 +42,10 @@
 void
 MulticastUdpFace::sendData(const Data& data)
 {
+  /// \todo After this method implements duplicate suppression, onSendData event should
+  ///       be triggered only when data is actually sent out
+  onSendData(data);
+
   NFD_LOG_DEBUG("Sending data");
   m_socket->async_send_to(boost::asio::buffer(data.wireEncode().wire(),
                                            data.wireEncode().size()),
diff --git a/daemon/face/stream-face.hpp b/daemon/face/stream-face.hpp
index 8a0f960..a623665 100644
--- a/daemon/face/stream-face.hpp
+++ b/daemon/face/stream-face.hpp
@@ -166,6 +166,7 @@
 inline void
 StreamFace<T, U>::sendInterest(const Interest& interest)
 {
+  this->onSendInterest(interest);
   StreamFaceSenderImpl<T, U, Interest>::send(*this, interest);
 }
 
@@ -173,6 +174,7 @@
 inline void
 StreamFace<T, U>::sendData(const Data& data)
 {
+  this->onSendData(data);
   StreamFaceSenderImpl<T, U, Data>::send(*this, data);
 }
 
diff --git a/daemon/face/udp-face.cpp b/daemon/face/udp-face.cpp
index dc516a7..ac8e797 100644
--- a/daemon/face/udp-face.cpp
+++ b/daemon/face/udp-face.cpp
@@ -20,6 +20,7 @@
                             std::size_t nBytesReceived,
                             const boost::system::error_code& error)
 {
+  NFD_LOG_DEBUG("handleFirstReceive");
   //checking if the received message size is too big.
   //This check is redundant, since in the actual implementation a packet
   //cannot be bigger than MAX_NDN_PACKET_SIZE
diff --git a/daemon/fw/strategy.hpp b/daemon/fw/strategy.hpp
index 0844eb2..e4df864 100644
--- a/daemon/fw/strategy.hpp
+++ b/daemon/fw/strategy.hpp
@@ -95,7 +95,7 @@
   /// send Interest to outFace
   VIRTUAL_WITH_TESTS void
   sendInterest(shared_ptr<pit::Entry> pitEntry,
-                    shared_ptr<Face> outFace);
+               shared_ptr<Face> outFace);
 
   /** \brief decide that a pending Interest cannot be forwarded
    *
diff --git a/daemon/mgmt/internal-face.cpp b/daemon/mgmt/internal-face.cpp
index f7e5018..5552d02 100644
--- a/daemon/mgmt/internal-face.cpp
+++ b/daemon/mgmt/internal-face.cpp
@@ -18,6 +18,8 @@
 void
 InternalFace::sendInterest(const Interest& interest)
 {
+  onSendInterest(interest);
+
   if (m_interestFilters.size() == 0)
     {
       NFD_LOG_DEBUG("no Interest filters to match against");
@@ -90,6 +92,7 @@
 void
 InternalFace::sendData(const Data& data)
 {
+  onSendData(data);
 }
 
 void
diff --git a/tests/face/dummy-face.hpp b/tests/face/dummy-face.hpp
index e64a162..a28a1bb 100644
--- a/tests/face/dummy-face.hpp
+++ b/tests/face/dummy-face.hpp
@@ -28,6 +28,7 @@
   virtual void
   sendInterest(const Interest& interest)
   {
+    this->onSendInterest(interest);
     m_sentInterests.push_back(interest);
     this->afterSend();
   }
@@ -35,6 +36,7 @@
   virtual void
   sendData(const Data& data)
   {
+    this->onSendData(data);
     m_sentDatas.push_back(data);
     this->afterSend();
   }
diff --git a/tests/face/tcp.cpp b/tests/face/tcp.cpp
index 47c3b5b..332e28c 100644
--- a/tests/face/tcp.cpp
+++ b/tests/face/tcp.cpp
@@ -208,23 +208,39 @@
   data2.setSignature(fakeSignature);
 
   m_face1->sendInterest(interest1);
+  m_face1->sendInterest(interest1);
+  m_face1->sendInterest(interest1);
   m_face1->sendData    (data1    );
   m_face2->sendInterest(interest2);
   m_face2->sendData    (data2    );
+  m_face2->sendData    (data2    );
+  m_face2->sendData    (data2    );
 
-  BOOST_CHECK_MESSAGE(m_limitedIo.run(4, time::seconds(10)) == LimitedIo::EXCEED_OPS,
+  BOOST_CHECK_MESSAGE(m_limitedIo.run(8, time::seconds(10)) == LimitedIo::EXCEED_OPS,
                       "TcpChannel error: cannot send or receive Interest/Data packets");
 
 
   BOOST_REQUIRE_EQUAL(m_face1_receivedInterests.size(), 1);
-  BOOST_REQUIRE_EQUAL(m_face1_receivedDatas    .size(), 1);
-  BOOST_REQUIRE_EQUAL(m_face2_receivedInterests.size(), 1);
+  BOOST_REQUIRE_EQUAL(m_face1_receivedDatas    .size(), 3);
+  BOOST_REQUIRE_EQUAL(m_face2_receivedInterests.size(), 3);
   BOOST_REQUIRE_EQUAL(m_face2_receivedDatas    .size(), 1);
 
   BOOST_CHECK_EQUAL(m_face1_receivedInterests[0].getName(), interest2.getName());
   BOOST_CHECK_EQUAL(m_face1_receivedDatas    [0].getName(), data2.getName());
   BOOST_CHECK_EQUAL(m_face2_receivedInterests[0].getName(), interest1.getName());
   BOOST_CHECK_EQUAL(m_face2_receivedDatas    [0].getName(), data1.getName());
+
+  const FaceCounters& counters1 = m_face1->getCounters();
+  BOOST_CHECK_EQUAL(counters1.getInInterest() , 1);
+  BOOST_CHECK_EQUAL(counters1.getInData()     , 3);
+  BOOST_CHECK_EQUAL(counters1.getOutInterest(), 3);
+  BOOST_CHECK_EQUAL(counters1.getOutData()    , 1);
+
+  const FaceCounters& counters2 = m_face2->getCounters();
+  BOOST_CHECK_EQUAL(counters2.getInInterest() , 3);
+  BOOST_CHECK_EQUAL(counters2.getInData()     , 1);
+  BOOST_CHECK_EQUAL(counters2.getOutInterest(), 1);
+  BOOST_CHECK_EQUAL(counters2.getOutData()    , 3);
 }
 
 BOOST_FIXTURE_TEST_CASE(EndToEnd6, EndToEndFixture)
diff --git a/tests/face/udp.cpp b/tests/face/udp.cpp
index f6ed53b..bab2f2b 100644
--- a/tests/face/udp.cpp
+++ b/tests/face/udp.cpp
@@ -411,6 +411,18 @@
 
   BOOST_CHECK_EQUAL(m_face1_receivedInterests[1].getName(), interest3.getName());
   BOOST_CHECK_EQUAL(m_face1_receivedDatas    [3].getName(), data3.getName());
+
+  const FaceCounters& counters1 = m_face1->getCounters();
+  BOOST_CHECK_EQUAL(counters1.getInInterest() , 2);
+  BOOST_CHECK_EQUAL(counters1.getInData()     , 4);
+  BOOST_CHECK_EQUAL(counters1.getOutInterest(), 3);
+  BOOST_CHECK_EQUAL(counters1.getOutData()    , 1);
+
+  const FaceCounters& counters2 = m_face2->getCounters();
+  BOOST_CHECK_EQUAL(counters2.getInInterest() , 3);
+  BOOST_CHECK_EQUAL(counters2.getInData()     , 1);
+  BOOST_CHECK_EQUAL(counters2.getOutInterest(), 2);
+  BOOST_CHECK_EQUAL(counters2.getOutData()    , 4);
 }
 
 BOOST_FIXTURE_TEST_CASE(EndToEnd6, EndToEndFixture)
diff --git a/tests/face/unix-stream.cpp b/tests/face/unix-stream.cpp
index 09ee905..285b85f 100644
--- a/tests/face/unix-stream.cpp
+++ b/tests/face/unix-stream.cpp
@@ -174,22 +174,38 @@
   data2.setSignature(fakeSignature);
 
   m_face1->sendInterest(interest1);
+  m_face1->sendInterest(interest1);
+  m_face1->sendInterest(interest1);
   m_face1->sendData    (data1    );
   m_face2->sendInterest(interest2);
   m_face2->sendData    (data2    );
+  m_face2->sendData    (data2    );
+  m_face2->sendData    (data2    );
 
-  BOOST_CHECK_MESSAGE(m_limitedIo.run(4, time::seconds(1)) == LimitedIo::EXCEED_OPS,
+  BOOST_CHECK_MESSAGE(m_limitedIo.run(8, time::seconds(1)) == LimitedIo::EXCEED_OPS,
                       "UnixStreamChannel error: cannot send or receive Interest/Data packets");
 
   BOOST_REQUIRE_EQUAL(m_face1_receivedInterests.size(), 1);
-  BOOST_REQUIRE_EQUAL(m_face1_receivedDatas    .size(), 1);
-  BOOST_REQUIRE_EQUAL(m_face2_receivedInterests.size(), 1);
+  BOOST_REQUIRE_EQUAL(m_face1_receivedDatas    .size(), 3);
+  BOOST_REQUIRE_EQUAL(m_face2_receivedInterests.size(), 3);
   BOOST_REQUIRE_EQUAL(m_face2_receivedDatas    .size(), 1);
 
   BOOST_CHECK_EQUAL(m_face1_receivedInterests[0].getName(), interest2.getName());
   BOOST_CHECK_EQUAL(m_face1_receivedDatas    [0].getName(), data2.getName());
   BOOST_CHECK_EQUAL(m_face2_receivedInterests[0].getName(), interest1.getName());
   BOOST_CHECK_EQUAL(m_face2_receivedDatas    [0].getName(), data1.getName());
+
+  const FaceCounters& counters1 = m_face1->getCounters();
+  BOOST_CHECK_EQUAL(counters1.getInInterest() , 1);
+  BOOST_CHECK_EQUAL(counters1.getInData()     , 3);
+  BOOST_CHECK_EQUAL(counters1.getOutInterest(), 3);
+  BOOST_CHECK_EQUAL(counters1.getOutData()    , 1);
+
+  const FaceCounters& counters2 = m_face2->getCounters();
+  BOOST_CHECK_EQUAL(counters2.getInInterest() , 3);
+  BOOST_CHECK_EQUAL(counters2.getInData()     , 1);
+  BOOST_CHECK_EQUAL(counters2.getOutInterest(), 1);
+  BOOST_CHECK_EQUAL(counters2.getOutData()    , 3);
 }
 
 BOOST_FIXTURE_TEST_CASE(MultipleAccepts, EndToEndFixture)
