diff --git a/core/leaf.cpp b/core/leaf.cpp
index a35d489..36dd275 100644
--- a/core/leaf.cpp
+++ b/core/leaf.cpp
@@ -166,9 +166,9 @@
 {
   size_t totalLength = 0;
 
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::SignerSeqNo, m_signerSeqNo);
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::DataSeqNo, m_dataSeqNo);
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::Timestamp, m_timestamp);
+  totalLength += prependNonNegativeIntegerBlock(block, tlv::SignerSeqNo, m_signerSeqNo);
+  totalLength += prependNonNegativeIntegerBlock(block, tlv::DataSeqNo, m_dataSeqNo);
+  totalLength += prependNonNegativeIntegerBlock(block, tlv::Timestamp, m_timestamp);
   totalLength += m_dataName.wireEncode(block);
 
   totalLength += block.prependVarNumber(totalLength);
diff --git a/core/logger-response.cpp b/core/logger-response.cpp
index bb796ad..c36f932 100644
--- a/core/logger-response.cpp
+++ b/core/logger-response.cpp
@@ -54,9 +54,9 @@
                                                m_msg.size());
   }
   else {
-    totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::DataSeqNo, m_dataSeqNo);
+    totalLength += prependNonNegativeIntegerBlock(block, tlv::DataSeqNo, m_dataSeqNo);
   }
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::ResultCode, m_code);
+  totalLength += prependNonNegativeIntegerBlock(block, tlv::ResultCode, m_code);
 
   totalLength += block.prependVarNumber(totalLength);
   totalLength += block.prependVarNumber(tlv::LogResponse);
diff --git a/core/logger.cpp b/core/logger.cpp
index 2089e2a..983a44d 100644
--- a/core/logger.cpp
+++ b/core/logger.cpp
@@ -87,8 +87,7 @@
   Leaf leaf(cert.getFullName(), timestamp, dataSeqNo, dataSeqNo, m_leafPrefix);
 
   if (m_merkleTree.addLeaf(dataSeqNo, leaf.getHash())) {
-    bool result = m_db.insertLeafData(leaf, cert);
-    BOOST_ASSERT(result);
+    m_db.insertLeafData(leaf, cert);
     m_db.getLeaf(dataSeqNo);
   }
   else
@@ -102,7 +101,7 @@
 {
   Name certName = m_keyChain.createIdentity(m_loggerName);
 
-  Name dskKeyName = m_keyChain.generateEcdsaKeyPair(m_loggerName);
+  Name dskKeyName = m_keyChain.generateEcKeyPair(m_loggerName);
   std::vector<ndn::CertificateSubjectDescription> subjectDescription;
   auto dskCert =
     m_keyChain.prepareUnsignedIdentityCertificate(dskKeyName, m_loggerName,
diff --git a/core/merkle-tree.cpp b/core/merkle-tree.cpp
index fa9dd2c..2219d2f 100644
--- a/core/merkle-tree.cpp
+++ b/core/merkle-tree.cpp
@@ -178,8 +178,7 @@
   m_pendingTrees[newRoot->getPeakIndex().level] = newRoot;
   m_rootSubTree = newRoot;
 
-  bool result = newRoot->updateLeaf(idx.seqNo + idx.range, oldRoot->getRoot()->getHash());
-  BOOST_ASSERT(result);
+  newRoot->updateLeaf(idx.seqNo + idx.range, oldRoot->getRoot()->getHash());
 
   // create a sibling
   getNewSibling(idx);
@@ -210,8 +209,7 @@
       // std::cerr << "seqNo: " << seqNo << std::endl;
       // std::cerr << "parent: " << parent->getRoot()->getIndex().level << ", " <<
       //                            parent->getRoot()->getIndex().seqNo << std::endl;
-      bool result = parent->updateLeaf(seqNo, hash);
-      BOOST_ASSERT(result);
+      parent->updateLeaf(seqNo, hash);
     });
 
   m_pendingTrees[newSibling->getPeakIndex().level] = newSibling;
