diff --git a/ccnx/sync-scheduler.h b/ccnx/sync-scheduler.h
index c7ebe09..155c6ba 100644
--- a/ccnx/sync-scheduler.h
+++ b/ccnx/sync-scheduler.h
@@ -29,7 +29,10 @@
 #include "sync-logic-event-container.h"
 
 #define TIME_SECONDS(number) boost::posix_time::seconds (number)
+#define TIME_MILLISECONDS(number) boost::posix_time::milliseconds(number)
+#define TIME_NOW boost::get_system_time ()
 typedef boost::posix_time::time_duration TimeDuration;
+typedef boost::system_time TimeAbsolute;
 
 namespace Sync {
 
diff --git a/model/sync-diff-state-container.h b/model/sync-diff-state-container.h
index 6e98aa4..2aa6d2c 100644
--- a/model/sync-diff-state-container.h
+++ b/model/sync-diff-state-container.h
@@ -33,7 +33,7 @@
 #include <boost/multi_index/hashed_index.hpp>
 #include <boost/multi_index/sequenced_index.hpp>
 // #include <boost/multi_index/random_access_index.hpp>
-// #include <boost/multi_index/member.hpp>
+#include <boost/multi_index/member.hpp>
 #include <boost/multi_index/mem_fun.hpp>
 
 namespace mi = boost::multi_index;
@@ -63,6 +63,7 @@
 
 /// @cond include_hidden 
 struct sequenced { };
+struct timed { };
 /// @endcond
 
 /**
@@ -87,6 +88,37 @@
 {
 };
 
+struct DigestTime
+{
+  DigestTime (DigestConstPtr digest, const TimeAbsolute &time)
+    : m_digest (digest)
+    , m_time (time)
+  {
+  }
+  
+  DigestConstPtr m_digest;
+  TimeAbsolute m_time;
+};
+
+struct UnknownDigestContainer : public mi::multi_index_container<
+  DigestTime,
+  mi::indexed_by<
+    mi::hashed_unique<
+      mi::tag<hashed>,
+      mi::member<DigestTime, DigestConstPtr, &DigestTime::m_digest>,
+      DigestPtrHash,
+      DigestPtrEqual
+      >
+    ,
+    mi::ordered_non_unique<
+      mi::tag<timed>,
+      mi::member<DigestTime, TimeAbsolute, &DigestTime::m_time>
+      >
+    >
+  >
+{
+};
+
 } // Sync
 
 #endif // SYNC_DIFF_STATE_CONTAINER_H
diff --git a/model/sync-logic.cc b/model/sync-logic.cc
index 6e3a55c..5a0f443 100644
--- a/model/sync-logic.cc
+++ b/model/sync-logic.cc
@@ -209,19 +209,28 @@
 
   if (!timedProcessing)
     {
-      uint32_t waitDelay =
+      UnknownDigestContainer::index<hashed>::type::iterator previousUnknownDigest = m_recentUnknownDigests.get<hashed> ().find (digest);
+      if (previousUnknownDigest != m_recentUnknownDigests.get<hashed> ().end ())
+        {
+          _LOG_DEBUG ("Digest is not in the log, but we have already seen it.                      (Don't do anything)");
+        }
+      else
+        {
+          m_recentUnknownDigests.insert (DigestTime (digest, TIME_NOW + TIME_SECONDS (m_unknownDigestStoreTime)));
+          
+          uint32_t waitDelay =
 #ifndef NS3_MODULE
-        m_rangeUniformRandom ()
+            m_rangeUniformRandom ()
 #else
-        m_rangeUniformRandom.GetValue ()
+            m_rangeUniformRandom.GetValue ()
 #endif
-        ;
+            ;
       
-      _LOG_DEBUG ("Digest is not in the log. Schedule processing after small delay: " << waitDelay << "ms");
-      m_scheduler.schedule (TIME_MILLISECONDS (waitDelay) /*from 20 to 100ms*/,
-                            bind (&SyncLogic::processSyncInterest, this, digest, interestName, true),
-                            DELAYED_INTEREST_PROCESSING);
-      
+          _LOG_DEBUG ("Digest is not in the log. Schedule processing after small delay: " << waitDelay << "ms");
+          m_scheduler.schedule (TIME_MILLISECONDS (waitDelay) /*from 20 to 100ms*/,
+                                bind (&SyncLogic::processSyncInterest, this, digest, interestName, true),
+                                DELAYED_INTEREST_PROCESSING);
+        }
     }
   else
     {
diff --git a/model/sync-logic.h b/model/sync-logic.h
index 3ddf45f..12b9f54 100644
--- a/model/sync-logic.h
+++ b/model/sync-logic.h
@@ -132,6 +132,7 @@
 private:
   FullState m_state;
   DiffStateContainer m_log;
+  UnknownDigestContainer m_recentUnknownDigests;
   boost::recursive_mutex m_stateMutex;
 
   std::string m_outstandingInterest;
@@ -150,10 +151,12 @@
 #else
   ns3::UniformVariable m_rangeUniformRandom;
 #endif
-  
+
+  static const int m_unknownDigestStoreTime = 10; // seconds
 #ifdef NS3_MODULE
-  static const int m_syncResponseFreshness = 100; //
-  static const int m_syncInterestReexpress = 10000; // make sure it doesn't happen
+  static const int m_syncResponseFreshness = 100; // milliseconds
+  static const int m_syncInterestReexpress = 10; // seconds
+  // don't forget to adjust value in SyncCcnxWrapper
 #else
   static const int m_syncResponseFreshness = 2000;
   static const int m_syncInterestReexpress = 4;
diff --git a/ns3/sync-ccnx-wrapper.cc b/ns3/sync-ccnx-wrapper.cc
index b61f034..dc768f6 100644
--- a/ns3/sync-ccnx-wrapper.cc
+++ b/ns3/sync-ccnx-wrapper.cc
@@ -110,7 +110,7 @@
   CcnxInterestHeader interestHeader;
   interestHeader.SetNonce            (m_rand.GetValue ());
   interestHeader.SetName             (name);
-  interestHeader.SetInterestLifetime (Seconds (10000.0)); // really long-lived interests
+  interestHeader.SetInterestLifetime (Seconds (10.0)); // really long-lived interests
 
   Ptr<Packet> packet = Create<Packet> ();
   packet->AddPacketTag (CreateObject<TypeTag> (TypeTag::INTEREST));
diff --git a/ns3/sync-scheduler.h b/ns3/sync-scheduler.h
index f10dc70..a98f8c1 100644
--- a/ns3/sync-scheduler.h
+++ b/ns3/sync-scheduler.h
@@ -25,6 +25,7 @@
 
 #include <ns3/nstime.h>
 #include <ns3/event-id.h>
+#include <ns3/simulator.h>
 #include <list>
 #include <map>
 
@@ -32,7 +33,9 @@
 
 #define TIME_SECONDS(number) ns3::Seconds(number)
 #define TIME_MILLISECONDS(number) ns3::MilliSeconds(number)
+#define TIME_NOW ns3::Simulator::Now ()
 typedef ns3::Time TimeDuration;
+typedef ns3::Time TimeAbsolute;
 
 namespace Sync {
 
