diff --git a/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp b/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
index d7cc9c7..3ff2397 100644
--- a/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
+++ b/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
@@ -7,6 +7,7 @@
 #ifndef BINARYXMLSTRUCTUREDECODER_HPP
 #define	BINARYXMLSTRUCTUREDECODER_HPP
 
+#include <stdexcept>
 #include "BinaryXMLStructureDecoder.h"
 
 namespace ndn {
@@ -18,11 +19,30 @@
 class BinaryXMLStructureDecoder {
 public:
   BinaryXMLStructureDecoder() {
-    ndn_BinaryXMLStructureDecoder_init(&base);
+    ndn_BinaryXMLStructureDecoder_init(&base_);
   }
   
+  /**
+   * Continue scanning input starting from getOffset() to find the element end.  
+   * If the end of the element which started at offset 0 is found, then return true and getOffset() is the length of 
+   *   the element.  Otherwise return false, which means you should read more into input and call again.
+   * @param input the input buffer. You have to pass in input each time because the buffer could be reallocated.
+   * @param inputLength the number of bytes in input.
+   * @return true if found the element end, false if need to read more. (This is the same as returning gotElementEnd().)
+   */
+  bool findElementEnd(const unsigned char *input, unsigned int inputLength) {
+    const char *error;
+    if (error = ndn_BinaryXMLStructureDecoder_findElementEnd(&base_, input, inputLength))
+      throw std::runtime_error(error);
+    return gotElementEnd();
+  }
+  
+  unsigned int getOffset() { return base_.
+          offset; }
+  bool gotElementEnd() { return base_.gotElementEnd != 0; }
+  
 private:
-  struct ndn_BinaryXMLStructureDecoder base;
+  struct ndn_BinaryXMLStructureDecoder base_;
 };
 
 }
