diff --git a/README.md b/README.md
index 017af1a..2cb99c5 100644
--- a/README.md
+++ b/README.md
@@ -37,8 +37,6 @@
 
 * [ndn-cxx and its dependencies](http://named-data.net/doc/ndn-cxx/)
 * Boost libraries
-* `protobuf` library
-* log4cxx (optional, if enabled with `--with-log4cxx` configure option)
 
 ### Build
 
diff --git a/tests/unit-tests/test-socket.cpp b/tests/unit-tests/test-socket.cpp
index 5bfcecf..4e3f4da 100644
--- a/tests/unit-tests/test-socket.cpp
+++ b/tests/unit-tests/test-socket.cpp
@@ -98,7 +98,7 @@
   fetchAll(const vector<MissingDataInfo>& v)
   {
     // std::cerr << "fetchAll" << std::endl;
-    for (int i = 0; i < v.size(); i++) {
+    for (size_t i = 0; i < v.size(); i++) {
       for(SeqNo s = v[i].low; s <= v[i].high; ++s) {
         socket.fetchData(v[i].session, s, [this] (const shared_ptr<const Data>& dataPacket) {
             this->set(dataPacket);
@@ -111,7 +111,7 @@
   fetchNumbers(const vector<MissingDataInfo> &v)
   {
     // std::cerr << "fetchNumbers" << std::endl;
-    for (int i = 0; i < v.size(); i++) {
+    for (size_t i = 0; i < v.size(); i++) {
       for(SeqNo s = v[i].low; s <= v[i].high; ++s) {
         socket.fetchData(v[i].session, s, [this] (const shared_ptr<const Data>& dataPacket) {
             this->setNum(dataPacket);
diff --git a/wscript b/wscript
index a14b085..087173d 100644
--- a/wscript
+++ b/wscript
@@ -9,7 +9,7 @@
 def options(opt):
     opt.load(['compiler_c', 'compiler_cxx', 'gnu_dirs'])
     opt.load(['boost', 'doxygen', 'sphinx_build', 'default-compiler-flags',
-              'pch', 'protoc'],
+              'pch'],
              tooldir=['.waf-tools'])
 
     syncopt = opt.add_option_group ("ChronoSync Options")
@@ -23,7 +23,7 @@
 
 def configure(conf):
     conf.load(['compiler_c', 'compiler_cxx', 'gnu_dirs', 'boost', 'pch',
-               'doxygen', 'sphinx_build', 'default-compiler-flags', 'protoc'])
+               'doxygen', 'sphinx_build', 'default-compiler-flags'])
 
     conf.check_cfg(package='libndn-cxx', args=['--cflags', '--libs'],
                    uselib_store='NDN_CXX', mandatory=True)
