diff --git a/ndn-cpp/encoding/BinaryXMLEncoder.hpp b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
index bb703b6..c1f8a1f 100644
--- a/ndn-cpp/encoding/BinaryXMLEncoder.hpp
+++ b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
@@ -14,9 +14,9 @@
 namespace ndn {
   
 /**
- * A BinaryXMLEncoder wraps a C ndn_BinaryXMLEncoder struct and related functions.
+ * A BinaryXMLEncoder extends a C ndn_BinaryXMLEncoder struct and wraps related functions.
  */
-class BinaryXMLEncoder {
+class BinaryXMLEncoder : public ndn_BinaryXMLEncoder {
 public:
   /**
    * Initialize the base ndn_BinaryXMLEncoder struct with an initial array of 16 bytes.  Use simpleRealloc.
@@ -24,7 +24,7 @@
   BinaryXMLEncoder() 
   {
     const unsigned int initialLength = 16;
-    ndn_BinaryXMLEncoder_init(&encoder_, (unsigned char *)malloc(initialLength), initialLength, simpleRealloc);
+    ndn_BinaryXMLEncoder_init(this, (unsigned char *)malloc(initialLength), initialLength, simpleRealloc);
   }
   
   /**
@@ -39,22 +39,13 @@
   }
   
   /**
-   * Return a pointer to the base ndn_BinaryXMLEncoder struct.
-   * @return 
-   */
-  struct ndn_BinaryXMLEncoder *getEncoder() { return &encoder_; }
-  
-  /**
    * Copy the encoded bytes to the end of the buffer.
    * @param buffer a vector to receive the copy
    */
   void appendTo(std::vector<unsigned char> &buffer) 
   {
-    buffer.insert(buffer.end(), encoder_.output.array, encoder_.output.array + encoder_.offset);
+    buffer.insert(buffer.end(), this->output.array, this->output.array + this->offset);
   }
-  
-private:
-  struct ndn_BinaryXMLEncoder encoder_;
 };
 
 }
diff --git a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
index 83261de..df5ad35 100644
--- a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
+++ b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
@@ -27,7 +27,7 @@
   name.get(nameStruct);
 
   BinaryXMLEncoder encoder;
-  ndn_encodeBinaryXMLName(&nameStruct, encoder.getEncoder());
+  ndn_encodeBinaryXMLName(&nameStruct, &encoder);
      
   encoder.appendTo(output);
 }
@@ -59,7 +59,7 @@
   interest.get(interestStruct);
 
   BinaryXMLEncoder encoder;
-  ndn_encodeBinaryXMLInterest(&interestStruct, encoder.getEncoder());
+  ndn_encodeBinaryXMLInterest(&interestStruct, &encoder);
      
   encoder.appendTo(output);
 }
@@ -92,7 +92,7 @@
   contentObject.get(contentObjectStruct);
 
   BinaryXMLEncoder encoder;
-  ndn_encodeBinaryXMLContentObject(&contentObjectStruct, encoder.getEncoder());
+  ndn_encodeBinaryXMLContentObject(&contentObjectStruct, &encoder);
      
   encoder.appendTo(output);
 }
