diff --git a/ndn-cpp/Interest.cpp b/ndn-cpp/Interest.cpp
new file mode 100644
index 0000000..ceba502
--- /dev/null
+++ b/ndn-cpp/Interest.cpp
@@ -0,0 +1,35 @@
+/* 
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#include "Interest.hpp"
+
+using namespace std;
+
+namespace ndn {
+  
+void Interest::set(struct ndn_Interest &interestStruct) 
+{
+  name_.set(interestStruct.name);
+	maxSuffixComponents_ = interestStruct.maxSuffixComponents;
+	minSuffixComponents_ = interestStruct.minSuffixComponents;
+	
+	publisherPublicKeyDigest_.clear();
+  if (interestStruct.publisherPublicKeyDigest)
+    publisherPublicKeyDigest_.insert
+      (publisherPublicKeyDigest_.begin(), interestStruct.publisherPublicKeyDigest, interestStruct.publisherPublicKeyDigest + interestStruct.publisherPublicKeyDigestLength);
+	// TODO: implement exclude
+	childSelector_ = interestStruct.childSelector;
+	answerOriginKind_ = interestStruct.answerOriginKind;
+	scope_ = interestStruct.scope;
+	interestLifetime_ = interestStruct.interestLifetime;
+	nonce_.clear();
+  if (interestStruct.nonce)
+    nonce_.insert
+      (nonce_.begin(), interestStruct.nonce, interestStruct.nonce + interestStruct.nonceLength);
+}
+  
+}
+
diff --git a/ndn-cpp/Interest.hpp b/ndn-cpp/Interest.hpp
new file mode 100644
index 0000000..a1f045f
--- /dev/null
+++ b/ndn-cpp/Interest.hpp
@@ -0,0 +1,68 @@
+/* 
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_INTEREST_HPP
+#define	NDN_INTEREST_HPP
+
+#include <vector>
+#include "Name.hpp"
+#include "c/Interest.h"
+
+namespace ndn {
+
+class Interest {
+public:    
+  void encode(std::vector<unsigned char> &output, WireFormat &wireFormat) 
+  {
+    wireFormat.encodeInterest(*this, output);
+  }
+  void encode(std::vector<unsigned char> &output) 
+  {
+    encode(output, BinaryXMLWireFormat::instance());
+  }
+  void decode(const unsigned char *input, unsigned int inputLength, WireFormat &wireFormat) 
+  {
+    wireFormat.decodeInterest(*this, input, inputLength);
+  }
+  void decode(const unsigned char *input, unsigned int inputLength) 
+  {
+    decode(input, inputLength, BinaryXMLWireFormat::instance());
+  }
+  void decode(const std::vector<unsigned char> &input, WireFormat &wireFormat) 
+  {
+    decode(&input[0], input.size(), wireFormat);
+  }
+  void decode(const std::vector<unsigned char> &input) 
+  {
+    decode(&input[0], input.size());
+  }
+
+  Name &getName() { return name_; }
+  
+  /**
+   * Clear this interest, and set the values by copying from the interest struct.
+   * @param interestStruct a C ndn_Interest struct
+   */
+  void set(struct ndn_Interest &interestStruct);
+
+private:
+  
+  Name name_;
+	int maxSuffixComponents_;
+	int minSuffixComponents_;
+	
+	std::vector<unsigned char> publisherPublicKeyDigest_;
+	// TODO: implement exclude
+	int childSelector_;
+	int answerOriginKind_;
+	int scope_;
+	int interestLifetime_;
+	std::vector<unsigned char> nonce_;
+};
+  
+}
+
+#endif
diff --git a/ndn-cpp/c/Interest.h b/ndn-cpp/c/Interest.h
new file mode 100644
index 0000000..1548621
--- /dev/null
+++ b/ndn-cpp/c/Interest.h
@@ -0,0 +1,50 @@
+/* 
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_INTEREST_H
+#define	NDN_INTEREST_H
+
+#include "Name.h"
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+struct ndn_Interest {
+  struct ndn_Name name;
+	int maxSuffixComponents;  /**< -1 for none */
+	int minSuffixComponents;  /**< -1 for none */
+	unsigned char *publisherPublicKeyDigest;      /**< pointer to pre-allocated buffer.  0 for none */
+  unsigned int publisherPublicKeyDigestLength; /**< length of publisherPublicKeyDigest */
+	// TODO: implement exclude
+	int childSelector;        /**< -1 for none */
+	int answerOriginKind;     /**< -1 for none */
+	int scope;                /**< -1 for none */
+	int interestLifetime;     /**< milliseconds. -1 for none */
+	unsigned char *nonce;	    /**< pointer to pre-allocated buffer.  0 for none */
+  unsigned int nonceLength; /**< length of nonce */
+};
+
+static inline void ndn_Interest_init(struct ndn_Interest *self, struct ndn_NameComponent *nameComponents, unsigned int maxNameComponents) 
+{
+  ndn_Name_init(&self->name, nameComponents, maxNameComponents);
+  self->maxSuffixComponents = -1;
+	self->minSuffixComponents = -1;
+	self->publisherPublicKeyDigest = 0;
+	// TODO: implement exclude
+	self->childSelector = -1;
+	self->answerOriginKind = -1;
+	self->scope = -1;
+	self->interestLifetime = -1;
+	self->nonce = 0; /**< length of nonce */
+}
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
+
diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.c b/ndn-cpp/c/encoding/BinaryXMLInterest.c
new file mode 100644
index 0000000..0eea400
--- /dev/null
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.c
@@ -0,0 +1,14 @@
+/* 
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#include "BinaryXMLEncoder.h"
+#include "BinaryXMLDecoder.h"
+#include "BinaryXMLInterest.h"
+
+char *ndn_decodeBinaryXMLInterest(struct ndn_Interest *interest, unsigned char *input, unsigned int inputLength)
+{
+  
+}
\ No newline at end of file
diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.h b/ndn-cpp/c/encoding/BinaryXMLInterest.h
new file mode 100644
index 0000000..115fce2
--- /dev/null
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.h
@@ -0,0 +1,25 @@
+/* 
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_BINARYXMLINTEREST_H
+#define	NDN_BINARYXMLINTEREST_H
+
+#include "../Interest.h"
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+char *ndn_encodeBinaryXMLInterest(struct ndn_Interest *interest, struct ndn_BinaryXMLEncoder *encoder);
+
+char *ndn_decodeBinaryXMLInterest(struct ndn_Interest *interest, unsigned char *input, unsigned int inputLength);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
+
