diff --git a/Makefile.am b/Makefile.am
index 10297a0..c882616 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,7 +11,7 @@
 
 lib_LTLIBRARIES = libndn-c.la libndn-cpp.la
 
-bin_PROGRAMS = bin/test-encode-decode-interest bin/test-encode-decode-data bin/test-get-async
+bin_PROGRAMS = bin/test-encode-decode-interest bin/test-encode-decode-data bin/test-get-async bin/test-publish-async
 
 libndn_c_la_SOURCES = \
   config.h \
@@ -71,4 +71,7 @@
 bin_test_get_async_SOURCES = tests/test-get-async.cpp
 bin_test_get_async_LDADD = libndn-cpp.la libndn-c.la
 
+bin_test_publish_async_SOURCES = tests/test-publish-async.cpp
+bin_test_publish_async_LDADD = libndn-cpp.la libndn-c.la
+
 dist_noinst_SCRIPTS = autogen.sh
diff --git a/Makefile.in b/Makefile.in
index f7d87d4..f594d19 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -89,7 +89,7 @@
 	config.guess config.sub install-sh missing ltmain.sh
 bin_PROGRAMS = bin/test-encode-decode-interest$(EXEEXT) \
 	bin/test-encode-decode-data$(EXEEXT) \
-	bin/test-get-async$(EXEEXT)
+	bin/test-get-async$(EXEEXT) bin/test-publish-async$(EXEEXT)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -177,6 +177,10 @@
 am_bin_test_get_async_OBJECTS = tests/test-get-async.$(OBJEXT)
 bin_test_get_async_OBJECTS = $(am_bin_test_get_async_OBJECTS)
 bin_test_get_async_DEPENDENCIES = libndn-cpp.la libndn-c.la
+am_bin_test_publish_async_OBJECTS =  \
+	tests/test-publish-async.$(OBJEXT)
+bin_test_publish_async_OBJECTS = $(am_bin_test_publish_async_OBJECTS)
+bin_test_publish_async_DEPENDENCIES = libndn-cpp.la libndn-c.la
 SCRIPTS = $(dist_noinst_SCRIPTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -233,11 +237,13 @@
 SOURCES = $(libndn_c_la_SOURCES) $(libndn_cpp_la_SOURCES) \
 	$(bin_test_encode_decode_data_SOURCES) \
 	$(bin_test_encode_decode_interest_SOURCES) \
-	$(bin_test_get_async_SOURCES)
+	$(bin_test_get_async_SOURCES) \
+	$(bin_test_publish_async_SOURCES)
 DIST_SOURCES = $(libndn_c_la_SOURCES) $(libndn_cpp_la_SOURCES) \
 	$(bin_test_encode_decode_data_SOURCES) \
 	$(bin_test_encode_decode_interest_SOURCES) \
-	$(bin_test_get_async_SOURCES)
+	$(bin_test_get_async_SOURCES) \
+	$(bin_test_publish_async_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -509,6 +515,8 @@
 bin_test_encode_decode_data_LDADD = libndn-cpp.la libndn-c.la
 bin_test_get_async_SOURCES = tests/test-get-async.cpp
 bin_test_get_async_LDADD = libndn-cpp.la libndn-c.la
+bin_test_publish_async_SOURCES = tests/test-publish-async.cpp
+bin_test_publish_async_LDADD = libndn-cpp.la libndn-c.la
 dist_noinst_SCRIPTS = autogen.sh
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -806,6 +814,12 @@
 bin/test-get-async$(EXEEXT): $(bin_test_get_async_OBJECTS) $(bin_test_get_async_DEPENDENCIES) $(EXTRA_bin_test_get_async_DEPENDENCIES) bin/$(am__dirstamp)
 	@rm -f bin/test-get-async$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(bin_test_get_async_OBJECTS) $(bin_test_get_async_LDADD) $(LIBS)
+tests/test-publish-async.$(OBJEXT): tests/$(am__dirstamp) \
+	tests/$(DEPDIR)/$(am__dirstamp)
+
+bin/test-publish-async$(EXEEXT): $(bin_test_publish_async_OBJECTS) $(bin_test_publish_async_DEPENDENCIES) $(EXTRA_bin_test_publish_async_DEPENDENCIES) bin/$(am__dirstamp)
+	@rm -f bin/test-publish-async$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(bin_test_publish_async_OBJECTS) $(bin_test_publish_async_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -865,6 +879,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test-encode-decode-data.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test-encode-decode-interest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test-get-async.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test-publish-async.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
diff --git a/tests/test-publish-async.cpp b/tests/test-publish-async.cpp
new file mode 100644
index 0000000..a7ba291
--- /dev/null
+++ b/tests/test-publish-async.cpp
@@ -0,0 +1,61 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include <cstdlib>
+#include <sstream>
+#include <iostream>
+#include <time.h>
+#include "../ndn-cpp/face.hpp"
+#include "../ndn-cpp/key-chain.hpp"
+
+using namespace std;
+using namespace ndn;
+using namespace ptr_lib;
+using namespace func_lib;
+
+class Echo {
+public:
+  Echo() 
+  { 
+    interestCount_ = 0;
+  }
+  
+  void operator()(const ptr_lib::shared_ptr<const Name> &prefix, const ptr_lib::shared_ptr<const Interest> &interest) {
+    ++interestCount_;
+    
+    // Make and sign a Data packet.
+    Data data(interest->getName());
+    string content(string("Echo ") + interest->getName().toUri());
+    data.setContent((const unsigned char*)&content[0], sizeof(content));
+    data.getSignedInfo().setTimestampMilliseconds(time(NULL) * 1000.0);
+    KeyChain::defaultSign(data);
+
+    // TODO: Need to put the Data.
+  }
+
+  int interestCount_;
+};
+
+int main(int argc, char** argv)
+{
+  try {
+    Face face("localhost");
+    
+    Echo echo;
+    Name prefix("/testecho");
+    cout << "Register prefix  " << prefix.toUri() << endl;
+    face.registerPrefix(prefix, ref(echo));
+    
+    // The main event loop.
+    while (echo.interestCount_ < 1) {
+      face.processEvents();
+      // We need to sleep for a few milliseconds so we don't use 100% of the CPU.
+      usleep(10000);
+    }
+  } catch (std::exception &e) {
+    cout << "exception: " << e.what() << endl;
+  }
+  return 0;
+}
