diff --git a/model/sync-interest-table.cc b/model/sync-interest-table.cc
index 5b1c3e0..0ec430c 100644
--- a/model/sync-interest-table.cc
+++ b/model/sync-interest-table.cc
@@ -28,16 +28,17 @@
 namespace Sync
 {
 
-unordered_set<string> SyncInterestTable::fetchAll()
+vector<string> SyncInterestTable::fetchAll()
 {
 	expireInterests();
 
 	recursive_mutex::scoped_lock lock(m_mutex);
-	unordered_set<string> entries;
+	vector<string> entries;
 	for (unordered_map<string, time_t>::iterator it = m_table.begin(); it !=
 		m_table.end(); ++it) {
-		entries.insert(it->first);
+		entries.push_back(it->first);
 	}
+	m_table.clear();
 
 	return entries;
 }
diff --git a/model/sync-interest-table.h b/model/sync-interest-table.h
index 0b5ead5..6fc258e 100644
--- a/model/sync-interest-table.h
+++ b/model/sync-interest-table.h
@@ -56,7 +56,7 @@
 	/**
 	 * @brief fetch all Interests and clear the table
 	 */
-	boost::unordered_set<std::string> fetchAll();
+	std::vector<std::string> fetchAll();
 
 private:
 	/**
diff --git a/model/sync-logic.cc b/model/sync-logic.cc
index 8a64e60..ecd1d5a 100644
--- a/model/sync-logic.cc
+++ b/model/sync-logic.cc
@@ -26,6 +26,7 @@
 #include <boost/make_shared.hpp>
 #include <boost/foreach.hpp>
 #include <sys/socket.h>
+#include <vector>
 
 using namespace std;
 using namespace boost;
@@ -166,10 +167,10 @@
   m_state.update(info, seqN);
   diff->setDigest(m_state.getDigest());
 
-  unordered_set<string> pis = m_syncInterestTable.fetchAll();
+  vector<string> pis = m_syncInterestTable.fetchAll();
   stringstream ss;
   ss << *diff;
-  for (unordered_set<string>::iterator ii = pis.begin(); ii != pis.end(); ++ii)
+  for (vector<string>::iterator ii = pis.begin(); ii != pis.end(); ++ii)
   {
     m_ccnxHandle->publishData(*ii, ss.str(), m_syncResponseFreshness);
   }
