diff --git a/model/sync-app.cc b/model/sync-app.cc
deleted file mode 100644
index 2680859..0000000
--- a/model/sync-app.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2012 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: Zhenkai Zhu <zhenkai@cs.ucla.edu>
- *         卞超轶 Chaoyi Bian <bcy@pku.edu.cn>
- *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
diff --git a/model/sync-app.h b/model/sync-app.h
deleted file mode 100644
index 9f130c3..0000000
--- a/model/sync-app.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2012 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: Zhenkai Zhu <zhenkai@cs.ucla.edu>
- *         卞超轶 Chaoyi Bian <bcy@pku.edu.cn>
- *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef SYNC_APP_H
-#define SYNC_APP_H
-
-namespace Sync
-{
-
-class App
-{
-public:
-private:
-};
-
-} // Sync
-
-#endif // SYNC_APP_H
diff --git a/model/sync-diff-state-container.h b/model/sync-diff-state-container.h
index 56cb95c..0f70437 100644
--- a/model/sync-diff-state-container.h
+++ b/model/sync-diff-state-container.h
@@ -24,9 +24,10 @@
 #define SYNC_DIFF_STATE_CONTAINER_H
 
 #include "sync-diff-state.h"
+#include "sync-digest.h"
 
 #include <boost/multi_index_container.hpp>
-// #include <boost/multi_index/tag.hpp>
+#include <boost/multi_index/tag.hpp>
 // #include <boost/multi_index/ordered_index.hpp>
 // #include <boost/multi_index/composite_key.hpp>
 #include <boost/multi_index/hashed_index.hpp>
@@ -39,14 +40,20 @@
 
 namespace Sync {
 
-// struct DigestHash : public std::unary_function<Digest, std::size_t>
-// {
-//   std::size_t
-//   operator() (const Digest &digest) const
-//   {
-//     return digest % std::limits<std::size_t>::max ();
-//   }
-// };
+struct DigestHash : public std::unary_function<Digest, std::size_t>
+{
+  // std::size_t
+  // operator() (const Digest &digest) const
+  // {
+  //   return digest.getHash ();
+  // }
+
+  std::size_t
+  operator() (DigestConstPtr digest) const
+  {
+    return digest->getHash ();
+  }
+};
 
 /// @cond include_hidden 
 struct sequenced { };
@@ -57,24 +64,22 @@
  * @brief Container for differential states
  */
 struct DiffStateContainer : public mi::multi_index_container<
-    DiffStatePtr,
-    // mi::indexed_by<
-    //   // For fast access to elements using DiffState hashes
-    //   mi::hashed_unique<
-    //     mi::tag<hashed>,
-    //     mi::const_mem_fun<Leaf, const Digest&, &DiffState::getDigest>,
-    //     DigestHash
-    //   >,
-
-  // sequenced index to access older/newer element (like in list)
-      mi::indexed_by<
-        mi::sequenced<mi::tag<sequenced> >
+  DiffStatePtr,
+  mi::indexed_by<
+    // For fast access to elements using DiffState hashes
+    mi::hashed_unique<
+      mi::tag<hashed>,
+      mi::const_mem_fun<DiffState, DigestConstPtr, &DiffState::getDigest>,
+      DigestHash
+      >
+    ,        
+    // sequenced index to access older/newer element (like in list)
+    mi::sequenced<mi::tag<sequenced> >
     >
-   >
+  >
 {
 };
 
-
 } // Sync
 
 #endif // SYNC_DIFF_STATE_CONTAINER_H
diff --git a/model/sync-diff-state.h b/model/sync-diff-state.h
index ac35625..7a889c4 100644
--- a/model/sync-diff-state.h
+++ b/model/sync-diff-state.h
@@ -67,7 +67,7 @@
    */
   DigestConstPtr
   getDigest () const { return m_digest; }
-
+  
   /**
    * @brief Accumulate differences from `this' state to the most current state
    * @returns Accumulated differences from `this' state to the most current state
diff --git a/model/sync-digest.cc b/model/sync-digest.cc
index 9b1c536..705a467 100644
--- a/model/sync-digest.cc
+++ b/model/sync-digest.cc
@@ -161,10 +161,12 @@
 }
   
 std::size_t
-Digest::getHash ()
+Digest::getHash () const
 {
   if (m_buffer == 0)
-    finalize ();
+    BOOST_THROW_EXCEPTION (Error::DigestCalculationError ()
+                           << errmsg_info_str ("Digest has not been yet finalized"));
+  // finalize ();
 
   if (sizeof (std::size_t) > m_hashLength)
     BOOST_THROW_EXCEPTION (Error::DigestCalculationError ()
diff --git a/model/sync-digest.h b/model/sync-digest.h
index 528180d..15c7278 100644
--- a/model/sync-digest.h
+++ b/model/sync-digest.h
@@ -64,7 +64,7 @@
    * Side effect: finalize() will be called on `this'
    */
   std::size_t
-  getHash ();
+  getHash () const;
 
   /**
    * @brief Finalize digest. All subsequent calls to "operator <<" will fire an exception
diff --git a/model/sync-interest-table.h b/model/sync-interest-table.h
index 6fc258e..f850708 100644
--- a/model/sync-interest-table.h
+++ b/model/sync-interest-table.h
@@ -23,6 +23,7 @@
 #ifndef SYNC_INTEREST_TABLE_H
 #define SYNC_INTEREST_TABLE_H
 #include <string>
+#include <vector>
 #include <boost/unordered_map.hpp>
 #include <boost/unordered_set.hpp>
 #include <boost/thread/recursive_mutex.hpp>
diff --git a/model/sync-logic.cc b/model/sync-logic.cc
index 6ba2c7a..754c995 100644
--- a/model/sync-logic.cc
+++ b/model/sync-logic.cc
@@ -179,19 +179,19 @@
 SyncLogic::respondSyncInterest (const string &interest)
 {
   string hash = interest.substr(interest.find_last_of("/") + 1);
-  Digest digest;
-  digest << hash;
+  DigestPtr digest = make_shared<Digest> ();
+  *digest << hash;
+  digest->finalize ();
 
-  if (*m_state.getDigest() == digest)
+  if (*m_state.getDigest() == *digest)
   {
-    m_syncInterestTable.insert(interest);
+    m_syncInterestTable.insert (interest);
     return;
   }
-/*
-  DiffStateContainer::index<hashed>::type& idx = m_log.get<hashed> ();
-  DiffStateContainer::iterator ii = idx.find(digest);
 
-  if (ii != idx.end())
+  DiffStateContainer::iterator ii = m_log.find (digest);
+  
+  if (ii != m_log.end())
   {
     stringstream ss;
     ss << *(*ii)->diff();
@@ -200,17 +200,17 @@
   else
   {
     int wait = rand() % 80 + 20;
-    sleep(wait/1000.0);
+    sleep(wait/1000.0); // ??? sleep in this thread???
   }
-
-  if (*m_state.getDigest() == digest)
+  
+  if (*m_state.getDigest() == *digest)
   {
     m_syncInterestTable.insert(interest);
     return;
   }
 
-  ii = idx.find(digest);
-  if (ii != idx.end())
+  ii = m_log.find (digest);
+  if (ii != m_log.end ())
   {
     stringstream ss;
     ss << *(*ii)->diff();
@@ -222,7 +222,6 @@
     ss << m_state;
     m_ccnxHandle->publishData(interest + "/state", ss.str(), m_syncResponseFreshness);
   }
-  */
 }
 
 void
diff --git a/model/sync-state-leaf-container.h b/model/sync-state-leaf-container.h
index 98adb1b..9ae98b0 100644
--- a/model/sync-state-leaf-container.h
+++ b/model/sync-state-leaf-container.h
@@ -58,20 +58,20 @@
  * @brief Container for SYNC leaves
  */
 struct LeafContainer : public mi::multi_index_container<
-    LeafPtr,
-    mi::indexed_by<
-      // For fast access to elements using NameInfo
-      mi::hashed_unique<
-        mi::tag<hashed>,
-        mi::const_mem_fun<Leaf, const NameInfo&, &Leaf::getInfo>,
-        NameInfoHash
-        >,
-      mi::ordered_unique<
-        mi::tag<ordered>,
-        mi::const_mem_fun<Leaf, const NameInfo&, &Leaf::getInfo>
-        >
+  LeafPtr,
+  mi::indexed_by<
+    // For fast access to elements using NameInfo
+    mi::hashed_unique<
+      mi::tag<hashed>,
+      mi::const_mem_fun<Leaf, const NameInfo&, &Leaf::getInfo>,
+      NameInfoHash
+      >,
+        mi::ordered_unique<
+          mi::tag<ordered>,
+          mi::const_mem_fun<Leaf, const NameInfo&, &Leaf::getInfo>
+          >
     >
-   >
+  >
 {
 };
 
diff --git a/model/sync-std-name-info.cc b/model/sync-std-name-info.cc
index 762ecfd..02e4336 100644
--- a/model/sync-std-name-info.cc
+++ b/model/sync-std-name-info.cc
@@ -63,7 +63,7 @@
 {
   m_id = m_ids ++; // set ID for a newly inserted element
   m_digest << name;
-  m_digest.getHash (); // finalize digest
+  m_digest.finalize ();
 
   // std::cout << "StdNameInfo: " << name << " = " << m_id << "\n";
 }
diff --git a/test/test_digest.cc b/test/test_digest.cc
index f942779..c4c7948 100644
--- a/test/test_digest.cc
+++ b/test/test_digest.cc
@@ -51,6 +51,8 @@
   BOOST_CHECK (d1.empty ());
 
   // fix hash
+  d1.finalize ();
+  
   BOOST_CHECK_NO_THROW (d1.getHash ());
   BOOST_CHECK (!d1.empty ());
   BOOST_CHECK (d1 == d1);
@@ -68,12 +70,12 @@
   Digest d1;
   BOOST_CHECK_NO_THROW (d1 << "1\n");
   BOOST_CHECK_THROW (d1 == d1, DigestCalculationError);
-  BOOST_CHECK_NO_THROW (d1.getHash ());
+  BOOST_CHECK_NO_THROW (d1.finalize ());
   BOOST_CHECK (d1 == d1);
   
   Digest d2;
   BOOST_CHECK_NO_THROW (d2 << "2\n");
-  BOOST_CHECK_NO_THROW (d2.getHash ());
+  BOOST_CHECK_NO_THROW (d2.finalize ());
   BOOST_CHECK (d1 != d2);
   
   Digest d3;
