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;
