diff --git a/ChronoSync b/ChronoSync
index ea488fd..edaef7c 160000
--- a/ChronoSync
+++ b/ChronoSync
@@ -1 +1 @@
-Subproject commit ea488fdeea0458fa32e194ef23ff842d0f932d55
+Subproject commit edaef7c4123f6e250a741912b2747b0b7e233b8a
diff --git a/src/chat-message.cpp b/src/chat-message.cpp
index d971072..21707d2 100644
--- a/src/chat-message.cpp
+++ b/src/chat-message.cpp
@@ -25,7 +25,7 @@
 
 template<bool T>
 size_t
-ChatMessage::wireEncode(ndn::EncodingImpl<T>& block) const
+ChatMessage::wireEncode(ndn::EncodingImpl<T>& encoder) const
 {
   // ChatMessage := CHAT-MESSAGE-TYPE TLV-LENGTH
   //                  Nick
@@ -52,29 +52,29 @@
   size_t totalLength = 0;
 
   // Timestamp
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::Timestamp, m_timestamp);
+  totalLength += prependNonNegativeIntegerBlock(encoder, tlv::Timestamp, m_timestamp);
 
   // ChatData
   if (m_msgType == CHAT) {
     const uint8_t* dataWire = reinterpret_cast<const uint8_t*>(m_data.c_str());
-    totalLength += block.prependByteArrayBlock(tlv::ChatData, dataWire, m_data.length());
+    totalLength += encoder.prependByteArrayBlock(tlv::ChatData, dataWire, m_data.length());
   }
 
   // ChatMessageType
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::ChatMessageType, m_msgType);
+  totalLength += prependNonNegativeIntegerBlock(encoder, tlv::ChatMessageType, m_msgType);
 
   // ChatroomName
   const uint8_t* chatroomWire = reinterpret_cast<const uint8_t*>(m_chatroomName.c_str());
-  totalLength += block.prependByteArrayBlock(tlv::ChatroomName, chatroomWire,
-                                             m_chatroomName.length());
+  totalLength += encoder.prependByteArrayBlock(tlv::ChatroomName, chatroomWire,
+                                               m_chatroomName.length());
 
   // Nick
   const uint8_t* nickWire = reinterpret_cast<const uint8_t*>(m_nick.c_str());
-  totalLength += block.prependByteArrayBlock(tlv::Nick, nickWire, m_nick.length());
+  totalLength += encoder.prependByteArrayBlock(tlv::Nick, nickWire, m_nick.length());
 
   // Chat Message
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(tlv::ChatMessage);
+  totalLength += encoder.prependVarNumber(totalLength);
+  totalLength += encoder.prependVarNumber(tlv::ChatMessage);
 
   return totalLength;
 }
diff --git a/src/chat-message.hpp b/src/chat-message.hpp
index 432fac9..860ce9f 100644
--- a/src/chat-message.hpp
+++ b/src/chat-message.hpp
@@ -88,7 +88,7 @@
 private:
   template<bool T>
   size_t
-  wireEncode(ndn::EncodingImpl<T>& block) const;
+  wireEncode(ndn::EncodingImpl<T>& encoder) const;
 
 private:
   mutable Block m_wire;
diff --git a/src/chatroom-info.cpp b/src/chatroom-info.cpp
index c61babe..81302bb 100644
--- a/src/chatroom-info.cpp
+++ b/src/chatroom-info.cpp
@@ -27,7 +27,7 @@
 
 template<bool T>
 size_t
-ChatroomInfo::wireEncode(ndn::EncodingImpl<T>& block) const
+ChatroomInfo::wireEncode(ndn::EncodingImpl<T>& encoder) const
 {
   size_t totalLength = 0;
 
@@ -57,36 +57,36 @@
   size_t participantsLength = 0;
   for (std::list<Name>::const_reverse_iterator it = m_participants.rbegin();
        it != m_participants.rend(); ++it) {
-    participantsLength += it->wireEncode(block);
+    participantsLength += it->wireEncode(encoder);
   }
-  participantsLength += block.prependVarNumber(participantsLength);
-  participantsLength += block.prependVarNumber(tlv::Participants);
+  participantsLength += encoder.prependVarNumber(participantsLength);
+  participantsLength += encoder.prependVarNumber(tlv::Participants);
   totalLength += participantsLength;
 
   // Manager Prefix
-  size_t managerLength = m_manager.wireEncode(block);
+  size_t managerLength = m_manager.wireEncode(encoder);
   totalLength += managerLength;
-  totalLength += block.prependVarNumber(managerLength);
-  totalLength += block.prependVarNumber(tlv::ManagerPrefix);
+  totalLength += encoder.prependVarNumber(managerLength);
+  totalLength += encoder.prependVarNumber(tlv::ManagerPrefix);
 
   // Chatroom Sync Prefix
-  size_t chatroomSyncPrefixLength = m_syncPrefix.wireEncode(block);
+  size_t chatroomSyncPrefixLength = m_syncPrefix.wireEncode(encoder);
   totalLength += chatroomSyncPrefixLength;
-  totalLength += block.prependVarNumber(chatroomSyncPrefixLength);
-  totalLength += block.prependVarNumber(tlv::ChatroomPrefix);
+  totalLength += encoder.prependVarNumber(chatroomSyncPrefixLength);
+  totalLength += encoder.prependVarNumber(tlv::ChatroomPrefix);
 
   // Trust Model
-  totalLength += ndn::prependNonNegativeIntegerBlock(block, tlv::TrustModel, m_trustModel);
+  totalLength += prependNonNegativeIntegerBlock(encoder, tlv::TrustModel, m_trustModel);
 
   // Chatroom Name
-  size_t chatroomNameLength = m_chatroomName.wireEncode(block);
+  size_t chatroomNameLength = m_chatroomName.wireEncode(encoder);
   totalLength += chatroomNameLength;
-  totalLength += block.prependVarNumber(chatroomNameLength);
-  totalLength += block.prependVarNumber(tlv::ChatroomName);
+  totalLength += encoder.prependVarNumber(chatroomNameLength);
+  totalLength += encoder.prependVarNumber(tlv::ChatroomName);
 
   // Chatroom Info
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(tlv::ChatroomInfo);
+  totalLength += encoder.prependVarNumber(totalLength);
+  totalLength += encoder.prependVarNumber(tlv::ChatroomInfo);
 
   return totalLength;
 }
diff --git a/src/chatroom-info.hpp b/src/chatroom-info.hpp
index ac0d602..dca4090 100644
--- a/src/chatroom-info.hpp
+++ b/src/chatroom-info.hpp
@@ -97,7 +97,7 @@
 private:
   template<bool T>
   size_t
-  wireEncode(ndn::EncodingImpl<T>& block) const;
+  wireEncode(ndn::EncodingImpl<T>& encoder) const;
 
 private:
   mutable Block m_wire;
