Major update to rename NDN class to Face
diff --git a/ndn-cpp/face.cpp b/ndn-cpp/face.cpp
new file mode 100644
index 0000000..f2212ea
--- /dev/null
+++ b/ndn-cpp/face.cpp
@@ -0,0 +1,42 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "encoding/BinaryXMLDecoder.hpp"
+#include "c/encoding/BinaryXML.h"
+#include "data.hpp"
+#include "face.hpp"
+
+using namespace std;
+using namespace ndn::ptr_lib;
+
+namespace ndn {
+
+void Face::expressInterest(const Name &name, const shared_ptr<Closure> &closure, const Interest *interestTemplate)
+{
+  Interest interest(name);
+  shared_ptr<vector<unsigned char> > encoding = interest.encode();  
+
+  // TODO: This should go in the PIT.
+  tempClosure_ = closure;
+  
+  transport_->connect(*this);
+  transport_->send(*encoding);
+}
+    
+void Face::onReceivedElement(unsigned char *element, unsigned int elementLength)
+{
+  BinaryXmlDecoder decoder(element, elementLength);
+  
+  if (decoder.peekDTag(ndn_BinaryXml_DTag_ContentObject)) {
+    shared_ptr<Data> data(new Data());
+    data->decode(element, elementLength);
+    
+    shared_ptr<Interest> dummyInterest;
+    UpcallInfo upcallInfo(this, dummyInterest, 0, data);
+    tempClosure_->upcall(UPCALL_DATA, upcallInfo);
+  }
+}
+
+}