diff --git a/ndn-cpp/encoding/binary-xml-decoder.hpp b/ndn-cpp/encoding/binary-xml-decoder.hpp
index ae04831..b95082b 100644
--- a/ndn-cpp/encoding/binary-xml-decoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-decoder.hpp
@@ -23,7 +23,7 @@
    */
   BinaryXmlDecoder(const unsigned char *input, unsigned int inputLength) 
   {
-    ndn_BinaryXmlDecoder_init(this, (unsigned char *)input, inputLength);
+    ndn_BinaryXmlDecoder_initialize(this, (unsigned char *)input, inputLength);
   }
   
   /**
diff --git a/ndn-cpp/encoding/binary-xml-element-reader.hpp b/ndn-cpp/encoding/binary-xml-element-reader.hpp
index ef0f9a2..826eb50 100644
--- a/ndn-cpp/encoding/binary-xml-element-reader.hpp
+++ b/ndn-cpp/encoding/binary-xml-element-reader.hpp
@@ -18,7 +18,7 @@
 public:
   ElementListener() 
   {
-    ndn_ElementListener_init(this, staticOnReceivedElement);
+    ndn_ElementListener_initialize(this, staticOnReceivedElement);
   }
   
   /**
diff --git a/ndn-cpp/encoding/binary-xml-encoder.hpp b/ndn-cpp/encoding/binary-xml-encoder.hpp
index 26cd932..cee590c 100644
--- a/ndn-cpp/encoding/binary-xml-encoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-encoder.hpp
@@ -24,7 +24,7 @@
   BinaryXmlEncoder() 
   : output_(16)
   {
-    ndn_BinaryXmlEncoder_init(this, &output_);
+    ndn_BinaryXmlEncoder_initialize(this, &output_);
   }
   
   /**
diff --git a/ndn-cpp/encoding/binary-xml-structure-decoder.hpp b/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
index 10ab5b5..432953f 100644
--- a/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
@@ -18,7 +18,7 @@
 public:
   BinaryXmlStructureDecoder() 
   {
-    ndn_BinaryXmlStructureDecoder_init(this);
+    ndn_BinaryXmlStructureDecoder_initialize(this);
   }
   
   /**
diff --git a/ndn-cpp/encoding/binary-xml-wire-format.cpp b/ndn-cpp/encoding/binary-xml-wire-format.cpp
index 950d653..b331e08 100644
--- a/ndn-cpp/encoding/binary-xml-wire-format.cpp
+++ b/ndn-cpp/encoding/binary-xml-wire-format.cpp
@@ -29,7 +29,7 @@
   struct ndn_NameComponent nameComponents[100];
   struct ndn_ExcludeEntry excludeEntries[100];
   struct ndn_Interest interestStruct;
-  ndn_Interest_init
+  ndn_Interest_initialize
     (&interestStruct, nameComponents, sizeof(nameComponents) / sizeof(nameComponents[0]), 
      excludeEntries, sizeof(excludeEntries) / sizeof(excludeEntries[0]));
   interest.get(interestStruct);
@@ -47,7 +47,7 @@
   struct ndn_NameComponent nameComponents[100];
   struct ndn_ExcludeEntry excludeEntries[100];
   struct ndn_Interest interestStruct;
-  ndn_Interest_init
+  ndn_Interest_initialize
     (&interestStruct, nameComponents, sizeof(nameComponents) / sizeof(nameComponents[0]), 
      excludeEntries, sizeof(excludeEntries) / sizeof(excludeEntries[0]));
     
@@ -65,7 +65,7 @@
   struct ndn_NameComponent nameComponents[100];
   struct ndn_NameComponent keyNameComponents[100];
   struct ndn_Data dataStruct;
-  ndn_Data_init
+  ndn_Data_initialize
     (&dataStruct, nameComponents, sizeof(nameComponents) / sizeof(nameComponents[0]), 
      keyNameComponents, sizeof(keyNameComponents) / sizeof(keyNameComponents[0]));
   data.get(dataStruct);
@@ -84,7 +84,7 @@
   struct ndn_NameComponent nameComponents[100];
   struct ndn_NameComponent keyNameComponents[100];
   struct ndn_Data dataStruct;
-  ndn_Data_init
+  ndn_Data_initialize
     (&dataStruct, nameComponents, sizeof(nameComponents) / sizeof(nameComponents[0]), 
      keyNameComponents, sizeof(keyNameComponents) / sizeof(keyNameComponents[0]));
     
@@ -100,7 +100,7 @@
 {
   struct ndn_NameComponent prefixNameComponents[100];
   struct ndn_ForwardingEntry forwardingEntryStruct;
-  ndn_ForwardingEntry_init
+  ndn_ForwardingEntry_initialize
     (&forwardingEntryStruct, prefixNameComponents, sizeof(prefixNameComponents) / sizeof(prefixNameComponents[0]));
   forwardingEntry.get(forwardingEntryStruct);
 
@@ -116,7 +116,7 @@
 {
   struct ndn_NameComponent prefixNameComponents[100];
   struct ndn_ForwardingEntry forwardingEntryStruct;
-  ndn_ForwardingEntry_init
+  ndn_ForwardingEntry_initialize
     (&forwardingEntryStruct, prefixNameComponents, sizeof(prefixNameComponents) / sizeof(prefixNameComponents[0]));
     
   BinaryXmlDecoder decoder(input, inputLength);  
