diff --git a/src/chat-dialog-backend.cpp b/src/chat-dialog-backend.cpp
index bedb45d..3e77b53 100644
--- a/src/chat-dialog-backend.cpp
+++ b/src/chat-dialog-backend.cpp
@@ -120,7 +120,7 @@
   std::vector<NodeInfo> nodeInfos;
 
 
-  for (int i = 0; i < updates.size(); i++) {
+  for (size_t i = 0; i < updates.size(); i++) {
     // update roster
     if (m_roster.find(updates[i].session) == m_roster.end()) {
       m_roster[updates[i].session].sessionPrefix = updates[i].session;
diff --git a/src/chatroom-info.cpp b/src/chatroom-info.cpp
index f6b81e3..9dc3439 100644
--- a/src/chatroom-info.cpp
+++ b/src/chatroom-info.cpp
@@ -72,7 +72,7 @@
   totalLength += block.prependVarNumber(tlv::ChatroomPrefix);
 
   // Trust Model
-  totalLength += prependNonNegativeIntegerBlock(block, tlv::TrustModel, m_trustModel);
+  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::TrustModel, m_trustModel);
 
   // Chatroom Name
   size_t chatroomNameLength = m_chatroomName.wireEncode(block);
diff --git a/src/contact-manager.cpp b/src/contact-manager.cpp
index 69c2d4b..89f4ea3 100644
--- a/src/contact-manager.cpp
+++ b/src/contact-manager.cpp
@@ -252,10 +252,10 @@
   catch(Block::Error& e) {
     emit contactInfoFetchFailed(QString::fromStdString(identity.toUri()));
   }
-  catch(Data::Error& e) {
+  catch(EndorseCertificate::Error& e) {
     emit contactInfoFetchFailed(QString::fromStdString(identity.toUri()));
   }
-  catch(EndorseCertificate::Error& e) {
+  catch(Data::Error& e) {
     emit contactInfoFetchFailed(QString::fromStdString(identity.toUri()));
   }
 }
diff --git a/src/contact-storage.cpp b/src/contact-storage.cpp
index c894849..20c6983 100644
--- a/src/contact-storage.cpp
+++ b/src/contact-storage.cpp
@@ -382,7 +382,7 @@
   sqlite3_bind_int64(stmt, 6, time::toUnixTimestamp(contact.getNotAfter()).count());
   sqlite3_bind_int(stmt, 7, (isIntroducer ? 1 : 0));
 
-  int res = sqlite3_step(stmt);
+  sqlite3_step(stmt);
 
   sqlite3_finalize(stmt);
 
@@ -396,7 +396,7 @@
     sqlite3_bind_string(stmt, 1, identity, SQLITE_TRANSIENT);
     sqlite3_bind_string(stmt, 2, it->first, SQLITE_TRANSIENT);
     sqlite3_bind_string(stmt, 3, it->second, SQLITE_TRANSIENT);
-    res = sqlite3_step(stmt);
+    sqlite3_step(stmt);
     sqlite3_finalize(stmt);
   }
 
@@ -410,7 +410,7 @@
                          -1, &stmt, 0);
       sqlite3_bind_string(stmt, 1, identity, SQLITE_TRANSIENT);
       sqlite3_bind_string(stmt, 2, it->first.toUri(), SQLITE_TRANSIENT);
-      res = sqlite3_step(stmt);
+      sqlite3_step(stmt);
       sqlite3_finalize(stmt);
       it++;
     }
diff --git a/src/digest-tree-scene.cpp b/src/digest-tree-scene.cpp
index e7adba9..b09d241 100644
--- a/src/digest-tree-scene.cpp
+++ b/src/digest-tree-scene.cpp
@@ -43,7 +43,7 @@
   bool rePlot = false;
 
   // Update roster info
-  for (int i = 0; i < nodeInfos.size(); i++) {
+  for (size_t i = 0; i < nodeInfos.size(); i++) {
     Roster_iterator it = m_roster.find(nodeInfos[i].sessionPrefix);
     if (it == m_roster.end()) {
       rePlot = true;
@@ -63,7 +63,7 @@
     plot(m_rootDigest);
   else {
     // No new node, update seqNo & digest
-    for (int i = 0; i < nodeInfos.size(); i++) {
+    for (size_t i = 0; i < nodeInfos.size(); i++) {
       Roster_iterator it = m_roster.find(nodeInfos[i].sessionPrefix);
       if (it != m_roster.end()) {
         DisplayUserPtr p = it.value();
diff --git a/src/digest-tree-scene.hpp b/src/digest-tree-scene.hpp
index 51847dc..4cf4d7f 100644
--- a/src/digest-tree-scene.hpp
+++ b/src/digest-tree-scene.hpp
@@ -19,10 +19,8 @@
 #ifndef Q_MOC_RUN
 #include "tree-layout.hpp"
 #include "chat-dialog-backend.hpp"
-#include <Leaf.hpp>
 #include <ctime>
 #include <vector>
-#include <boost/shared_ptr.hpp>
 #endif
 
 const int FRESHNESS = 60;
@@ -33,7 +31,7 @@
 
 class User;
 class DisplayUser;
-typedef boost::shared_ptr<DisplayUser> DisplayUserPtr;
+typedef std::shared_ptr<DisplayUser> DisplayUserPtr;
 typedef QMap<QString, DisplayUserPtr> Roster;
 typedef QMap<QString, DisplayUserPtr>::iterator Roster_iterator;
 typedef QMapIterator<QString, DisplayUserPtr> RosterIterator;
