diff --git a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
index e56673b..5789394 100644
--- a/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
+++ b/ndn-cpp/encoding/BinaryXMLWireFormat.cpp
@@ -6,7 +6,8 @@
 
 #include <stdexcept>
 #include "../c/encoding/BinaryXMLName.h"
-#include "../Name.hpp"
+#include "../c/encoding/BinaryXMLInterest.h"
+#include "../Interest.hpp"
 #include "BinaryXMLEncoder.hpp"
 #include "BinaryXMLWireFormat.hpp"
 
@@ -42,4 +43,17 @@
   name.set(nameStruct);
 }
 
+void BinaryXMLWireFormat::decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength)
+{
+  struct ndn_NameComponent components[100];
+  struct ndn_Interest interestStruct;
+  ndn_Interest_init(&interestStruct, components, sizeof(components) / sizeof(components[0]));
+    
+  char *error;
+  if (error = ndn_decodeBinaryXMLInterest(&interestStruct, (unsigned char *)input, inputLength))
+    throw std::runtime_error(error);
+
+  interest.set(interestStruct);
+}
+
 }
diff --git a/ndn-cpp/encoding/BinaryXMLWireFormat.hpp b/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
index e6d7c8a..418a2ba 100644
--- a/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
+++ b/ndn-cpp/encoding/BinaryXMLWireFormat.hpp
@@ -18,7 +18,7 @@
   virtual void decodeName(Name &name, const unsigned char *input, unsigned int inputLength);
 
   //virtual void encodeInterest(Interest &interest, std::vector<unsigned char> &output);
-  //virtual void decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength);
+  virtual void decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength);
   
   static BinaryXMLWireFormat &instance() { return instance_; }
   
