diff --git a/model/ccnx-content-store.cc b/model/ccnx-content-store.cc
index b526308..c47159e 100644
--- a/model/ccnx-content-store.cc
+++ b/model/ccnx-content-store.cc
@@ -33,7 +33,7 @@
 
 NS_OBJECT_ENSURE_REGISTERED (CcnxContentStore);
 
-using namespace __ccnx_private;
+using namespace __ccnx_private_content_store;
 
 TypeId 
 CcnxContentStore::GetTypeId (void)
@@ -55,6 +55,51 @@
 
 CcnxContentObjectTail CcnxContentStoreEntry::m_tail;
 
+//////////////////////////////////////////////////////////////////////
+// Helper classes
+//////////////////////////////////////////////////////////////////////
+/**
+ * \ingroup ccnx
+ * \brief Typedef for hash index of content store container
+ */
+struct CcnxContentStoreByPrefix
+{
+  typedef
+  CcnxContentStoreContainer::type::index<hash>::type
+  type;
+};
+
+/**
+ * \ingroup ccnx
+ * \brief Typedef for MRU index of content store container
+ */
+struct CcnxContentStoreByMru
+{
+  typedef
+  CcnxContentStoreContainer::type::index<mru>::type
+  type;
+};
+
+#ifdef _DEBUG
+#define DUMP_INDEX_TAG ordered
+#define DUMP_INDEX     CcnxContentStoreOrderedPrefix
+/**
+ * \ingroup ccnx
+ * \brief Typedef for ordered index of content store container
+ */
+struct CcnxContentStoreOrderedPrefix
+{
+  typedef
+  CcnxContentStoreContainer::type::index<ordered>::type
+  type;
+};
+#else
+#define DUMP_INDEX_TAG mru
+#define DUMP_INDEX     CcnxContentStoreByMru
+#endif
+
+//////////////////////////////////////////////////////////////////////
+
 CcnxContentStoreEntry::CcnxContentStoreEntry (Ptr<CcnxContentObjectHeader> header, Ptr<const Packet> packet)
   : m_header (header)
 {
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index 29b838a..fb68981 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -110,8 +110,11 @@
   static CcnxContentObjectTail m_tail; ///< \internal for optimization purposes
 };
 
-/// \brief Private namespace for CCNx implementation
-namespace __ccnx_private
+/**
+ * \ingroup ccnx
+ * \brief Private namespace for CCNx content store implementation
+ */
+namespace __ccnx_private_content_store
 {
 class hash {}; ///< tag for Boost.Multiindex container (hashed prefix)
 class mru {}; ///< tag for Boost.Multiindex container (most recent used index)
@@ -137,16 +140,16 @@
     CcnxContentStoreEntry,
     boost::multi_index::indexed_by<
       boost::multi_index::hashed_unique<
-        boost::multi_index::tag<__ccnx_private::hash>,
+        boost::multi_index::tag<__ccnx_private_content_store::hash>,
         boost::multi_index::const_mem_fun<CcnxContentStoreEntry,
                                           const Name::Components&,
                                           &CcnxContentStoreEntry::GetName>,
         CcnxPrefixHash>,
-      boost::multi_index::sequenced<boost::multi_index::tag<__ccnx_private::mru> >
+      boost::multi_index::sequenced<boost::multi_index::tag<__ccnx_private_content_store::mru> >
 #ifdef _DEBUG
       ,
       boost::multi_index::ordered_unique<
-        boost::multi_index::tag<__ccnx_private::ordered>,
+        boost::multi_index::tag<__ccnx_private_content_store::ordered>,
         boost::multi_index::const_mem_fun<CcnxContentStoreEntry,
                                           const Name::Components&,
                                           &CcnxContentStoreEntry::GetName>
@@ -158,46 +161,6 @@
 
 /**
  * \ingroup ccnx
- * \brief Typedef for hash index of content store container
- */
-struct CcnxContentStoreByPrefix
-{
-  typedef
-  CcnxContentStoreContainer::type::index<__ccnx_private::hash>::type
-  type;
-};
-
-/**
- * \ingroup ccnx
- * \brief Typedef for MRU index of content store container
- */
-struct CcnxContentStoreByMru
-{
-  typedef
-  CcnxContentStoreContainer::type::index<__ccnx_private::mru>::type
-  type;
-};
-
-#ifdef _DEBUG
-#define DUMP_INDEX_TAG ordered
-#define DUMP_INDEX     CcnxContentStoreOrderedPrefix
-/**
- * \ingroup ccnx
- * \brief Typedef for ordered index of content store container
- */
-struct CcnxContentStoreOrderedPrefix
-{
-  typedef
-  CcnxContentStoreContainer::type::index<__ccnx_private::ordered>::type
-  type;
-};
-#else
-#define DUMP_INDEX_TAG mru
-#define DUMP_INDEX     CcnxContentStoreByMru
-#endif
-  
-/**
- * \ingroup ccnx
  * \brief NDN content store entry
  */
 class CcnxContentStore : public Object
diff --git a/model/ccnx-interest-header.h b/model/ccnx-interest-header.h
index 44ffa6b..0e13bb8 100644
--- a/model/ccnx-interest-header.h
+++ b/model/ccnx-interest-header.h
@@ -125,7 +125,7 @@
    - InterestLifetime: ?
    - Nonce: 32 bit random integer.  If value is 0, will not be serialized
  */
-  class CcnxInterestHeader : public Header
+class CcnxInterestHeader : public Header
 {
 public:
   /**
diff --git a/model/ccnx-rit.cc b/model/ccnx-rit.cc
new file mode 100644
index 0000000..3fac6fe
--- /dev/null
+++ b/model/ccnx-rit.cc
@@ -0,0 +1,187 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ccnx-rit.h"
+
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/ccnx-interest-header.h"
+#include "ns3/assert.h"
+
+#include <utility>
+
+NS_LOG_COMPONENT_DEFINE ("CcnxRit");
+
+namespace ns3 {
+
+using namespace __ccnx_private_rit;
+
+NS_OBJECT_ENSURE_REGISTERED (CcnxRit);
+
+TypeId 
+CcnxRit::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CcnxRit")
+    .SetGroupName ("Ccnx")
+    .SetParent<Object> ()
+    .AddConstructor<CcnxRit> ()
+    .AddAttribute ("RitTimeout",
+                   "Timeout defining how long records should be kept in RIT",
+                   TimeValue (Seconds (1)),
+                   MakeTimeAccessor (&CcnxRit::GetRitTimeout, &CcnxRit::SetRitTimeout),
+                   MakeTimeChecker ())
+    .AddAttribute ("CleanupTimeout",
+                   "Timeout defining how frequent RIT should be cleaned up",
+                   TimeValue (Seconds (1)),
+                   MakeTimeAccessor (&CcnxRit::GetCleanupTimeout, &CcnxRit::SetCleanupTimeout),
+                   MakeTimeChecker ())
+    ;
+
+  return tid;
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// Helper classes
+//////////////////////////////////////////////////////////////////////
+/**
+ * \ingroup ccnx
+ * \brief Typedef for nonce hash index of RIT container
+ */
+struct CcnxRitByNonce
+{
+  typedef
+  CcnxRitContainer::type::index<nonce>::type
+  type;
+};
+
+// /**
+//  * \ingroup ccnx
+//  * \brief Typedef for prefix hash index of RIT container
+//  */
+// struct CcnxRitByTimestamp
+// {
+//   typedef
+//   CcnxRitContainer::type::index<timestamp>::type
+//   type;
+// };
+
+//////////////////////////////////////////////////////////////////////
+
+
+CcnxRit::CcnxRit( )
+{
+}
+
+CcnxRit::~CcnxRit( ) { }
+
+void
+CcnxRit::SetRitTimeout (const Time &timeout)
+{
+  m_ritTimeout = timeout;
+}
+
+Time
+CcnxRit::GetRitTimeout () const
+{
+  return m_ritTimeout;
+}
+
+void
+CcnxRit::SetCleanupTimeout (const Time &timeout)
+{
+  m_cleanupTimeout = timeout;
+  if (m_cleanupEvent.IsRunning ())
+    m_cleanupEvent.Cancel (); // cancel any scheduled cleanup events
+
+  // schedule even with new timeout
+  m_cleanupEvent = Simulator::Schedule (Simulator::Now () + m_cleanupTimeout,
+                                        &CcnxRit::CleanExpired, this); 
+}
+
+Time
+CcnxRit::GetCleanupTimeout () const
+{
+  return m_cleanupTimeout;
+}
+
+bool
+CcnxRit::WasRecentlySatisfied (const CcnxInterestHeader &header)
+{
+  std::pair<CcnxRitByNonce::type::iterator,CcnxRitByNonce::type::iterator>
+    entries = m_rit.get<nonce> ().equal_range (header.GetNonce ());
+  
+  if (entries.first == m_rit.end ())
+    return false;
+
+  // check all entries if the name of RIT entry matches the name of interest
+  for (CcnxRitByNonce::type::iterator it = entries.first; it != entries.second; it++)
+    {
+      // NS_LOG_DEBUG (it->m_prefix << " vs " << header.GetName () << " = " << (it->m_prefix == header.GetName ()));
+      if (it->m_prefix == header.GetName ())
+        return true;
+    }
+
+  return false;
+}
+
+void
+CcnxRit::SetRecentlySatisfied (const CcnxInterestHeader &header)
+{
+  NS_ASSERT_MSG (!WasRecentlySatisfied (header), "Duplicate recent interest should not be added to RIT");
+  
+  m_rit.get<timestamp> ().push_back (
+                                     CcnxRitEntry(header.GetName (),
+                                                  header.GetNonce (),
+                                                  Simulator::Now ()+m_ritTimeout)
+                                     );
+}
+
+
+void CcnxRit::CleanExpired ()
+{
+  NS_LOG_LOGIC ("Cleaning RIT");
+  Time now = Simulator::Now ();
+#ifdef _DEBUG
+  uint32_t count = 0;
+#endif
+  
+  while( !m_rit.empty() )
+    {
+      if( m_rit.get<timestamp> ().front ().m_expireTime <= now ) // is the record stale?
+        {
+         m_rit.get<timestamp> ().pop_front( );
+#ifdef _DEBUG
+         count++;
+#endif
+        }
+      else
+        break; // nothing else to do. All later records will not be stale
+    }
+#ifdef _DEBUG
+  NS_LOG_DEBUG (count << " records cleaned");
+#endif
+  
+  // schedule next even
+  m_cleanupEvent = Simulator::Schedule (Simulator::Now () + m_cleanupTimeout,
+                                        &CcnxRit::CleanExpired, this); 
+}
+
+} //namespace ns3
diff --git a/model/ccnx-rit.h b/model/ccnx-rit.h
new file mode 100644
index 0000000..8220759
--- /dev/null
+++ b/model/ccnx-rit.h
@@ -0,0 +1,207 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef _CCNX_RIT_H_
+#define	_CCNX_RIT_H_
+
+#include <list>
+#include "ns3/nstime.h"
+#include "ns3/name-components.h"
+#include "ns3/object.h"
+#include "ns3/nstime.h"
+#include "ns3/event-id.h"
+
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/tag.hpp>
+#include <boost/multi_index/ordered_index.hpp>
+#include <boost/multi_index/sequenced_index.hpp>
+#include <boost/multi_index/hashed_index.hpp>
+#include <boost/multi_index/member.hpp>
+
+namespace ns3 {
+
+class CcnxInterestHeader;
+
+/**
+ * \ingroup ccnx
+ * \brief Recently satisfied interest 
+ *
+ * This entry holds information about recently satisfied interest
+ *
+ * RIT entries will stay in the table for a while before being cleaned out
+ */
+struct CcnxRitEntry
+{
+  Name::Components m_prefix; ///< \brief Prefix of the recently satisfied interest
+  uint32_t m_nonce; ///< \brief Nonce of the recently satisfied interest
+  Time m_expireTime;  ///< \brief Time when the record should be removed
+
+  CcnxRitEntry (const Name::Components &prefix, uint32_t nonce, const Time &timeout)
+    : m_prefix (prefix)
+    , m_nonce (nonce)
+    , m_expireTime (timeout)
+  { }
+};
+
+/**
+ * \ingroup ccnx
+ * \brief Private namespace for CCNx RIT implementation
+ */
+namespace __ccnx_private_rit
+{
+class nonce {}; ///< tag for nonce hash
+class timestamp {}; ///< tag for timestamp-ordered records (for cleanup optimization)  
+};
+
+/**
+ * \ingroup ccnx
+ * \brief Typedef for RIT container implemented as a Boost.MultiIndex container
+ *
+ * - First index (tag<nonce>) is a non-unique hash index based on
+ *   nonce (there could be several records with the same nonce,
+ *   provided that the prefixes are different
+ * - Second index (tag<timestamp>) is a sequenced index based on
+ *   arrival order (for clean-up optimizations)
+ *
+ * Container allows having non-unique nonce values.  In the
+ * implementation it is allowed only if prefixes are different. During
+ * the lookup process, the nonce field is checked first and, if a
+ * match found, the prefix field will be checked to match prefix of
+ * the interest.
+ *
+ * \see http://www.boost.org/doc/libs/1_46_1/libs/multi_index/doc/ for more information on Boost.MultiIndex library
+ */
+struct CcnxRitContainer
+{
+  typedef
+  boost::multi_index::multi_index_container<
+    CcnxRitEntry,
+    boost::multi_index::indexed_by<
+      boost::multi_index::hashed_non_unique<
+        boost::multi_index::tag<__ccnx_private_rit::nonce>,
+        boost::multi_index::member<CcnxRitEntry, uint32_t, &CcnxRitEntry::m_nonce>
+        >,
+      boost::multi_index::sequenced<
+        boost::multi_index::tag<__ccnx_private_rit::timestamp> >
+      >
+    > type;
+};
+
+
+/**
+ * \ingroup ccnx
+ * \brief Recently satisfied interest storage
+ *
+ * This storage holds information about all recently satisfied
+ * interests (prefix and nonce).
+ *
+ * There is no hard limit on number of entries (limited by the amount
+ * of the available memory).  Entries are removed after preconfigured
+ * amount of time (RitTimeout, default is 1 second).
+ */
+class CcnxRit : public Object
+{
+public:
+  /**
+   * \brief Interface ID
+   *
+   * \return interface ID
+   */
+  static TypeId GetTypeId ();
+
+  /**
+   * \brief Default constructor
+   */
+  CcnxRit ();
+  virtual ~CcnxRit( );
+
+  /**
+   * \brief Find corresponding RIT entry for the given content name
+   *
+   * This check consists of two steps.  First, we find records with
+   * the same nonce.  Then check prefixes of all found records and if
+   * prefix of any of them matched prefix of the interest, this
+   * function returns true.  In all other cases, it will return false.
+   *
+   * \param header header of the interest packet in question
+   *
+   * \returns true if the same interest was recently satisfied
+   */
+  bool WasRecentlySatisfied (const CcnxInterestHeader &header);
+
+  /**
+   * \brief Add a new RIT entry
+   *
+   * This function asserts (only in debug) if the same interest is
+   * already present in RIT.  The caller is responsible of calling
+   * WasRecentlySatisfied before calling SetRecentlySatisfied.
+   * 
+   * \param header header of the interest packet in question
+   */
+  void SetRecentlySatisfied (const CcnxInterestHeader &header);
+
+  /**
+   * \brief Set RIT entries lifetime
+   *
+   * \param lifetime of RIT entries timeout
+   */
+  void SetRitTimeout (const Time &timeout);
+
+  /**
+   * \brief Get RIT entries lifetime
+   *
+   * \returns lifetime of RIT entries timeout
+   */
+  Time GetRitTimeout () const;
+  
+  /**
+   * \brief Set cleanup timeout
+   *
+   * Side effect: current clean up even (if any) will be cancelled and a new event started
+   *
+   * \param timeout cleanup timeout
+   */
+  void SetCleanupTimeout (const Time &timeout);
+
+  /**
+   * \brief Get cleanup timeout
+   *
+   * \returns cleanup timeout
+   */
+  Time GetCleanupTimeout () const;
+
+private:
+  /**
+   * \brief Periodic even to clean up stalled entries
+   */
+  void CleanExpired ();
+	
+private:
+  Time    m_ritTimeout; ///< \brief Configurable timeout of RIT entries
+  Time    m_cleanupTimeout; ///< \brief Configurable timeout of how often cleanup events are working
+  EventId m_cleanupEvent; ///< \brief Cleanup event
+  
+  CcnxRitContainer::type m_rit; ///< \brief Actual RIT container
+};
+
+} // namespace ns3
+
+#endif // _CCNX_RIT_H_
+
diff --git a/model/name-components.h b/model/name-components.h
index 097152e..5749fcc 100644
--- a/model/name-components.h
+++ b/model/name-components.h
@@ -94,6 +94,9 @@
 bool
 Components::operator== (const Components &prefix) const
 {
+  if (m_prefix.size () != prefix.m_prefix.size ())
+    return false;
+  
   return std::equal (m_prefix.begin (), m_prefix.end (), prefix.m_prefix.begin ());
 }
 
