make: Global change: Move all public headers to include folder.  Change source to including public headers using #include <ndn-cpp/*>. Split some header files to minimize exposing C .h files.
diff --git a/Makefile.am b/Makefile.am
index b926a93..c87fc75 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,16 +17,60 @@
 bin_PROGRAMS = bin/test-encode-decode-forwarding-entry bin/test-encode-decode-interest bin/test-encode-decode-data \
   bin/test-get-async bin/test-publish-async
 
+# Public C headers.
+ndn_cpp_c_headers = \
+  include/ndn-cpp/ndn-cpp-config.h \
+  include/ndn-cpp/c/common.h \
+  include/ndn-cpp/c/data-types.h \
+  include/ndn-cpp/c/forwarding-flags.h \
+  include/ndn-cpp/c/interest-types.h \
+  include/ndn-cpp/c/key-types.h \
+  include/ndn-cpp/c/encoding/element-listener.h
+
+# Public C++ headers.
+ndn_cpp_cpp_headers = \
+  include/ndn-cpp/common.hpp \
+  include/ndn-cpp/data.hpp \
+  include/ndn-cpp/face.hpp \
+  include/ndn-cpp/forwarding-entry.hpp \
+  include/ndn-cpp/forwarding-flags.hpp \
+  include/ndn-cpp/interest.hpp \
+  include/ndn-cpp/key.hpp \
+  include/ndn-cpp/name.hpp \
+  include/ndn-cpp/node.hpp \
+  include/ndn-cpp/publisher-public-key-digest.hpp \
+  include/ndn-cpp/sha256-with-rsa-signature.hpp \
+  include/ndn-cpp/encoding/element-listener.hpp \
+  include/ndn-cpp/encoding/binary-xml-wire-format.hpp \
+  include/ndn-cpp/encoding/wire-format.hpp \
+  include/ndn-cpp/security/security-common.hpp \
+  include/ndn-cpp/security/key-chain.hpp \
+  include/ndn-cpp/security/security-exception.hpp \
+  include/ndn-cpp/security/certificate/oid.hpp \
+  include/ndn-cpp/security/certificate/public-key.hpp \
+  include/ndn-cpp/security/encryption/encryption-manager.hpp \
+  include/ndn-cpp/security/identity/basic-identity-storage.hpp \
+  include/ndn-cpp/security/identity/identity-manager.hpp \
+  include/ndn-cpp/security/identity/identity-storage.hpp \
+  include/ndn-cpp/security/identity/memory-identity-storage.hpp \
+  include/ndn-cpp/security/identity/memory-private-key-storage.hpp \
+  include/ndn-cpp/security/identity/osx-private-key-storage.hpp \
+  include/ndn-cpp/security/identity/private-key-storage.hpp \
+  include/ndn-cpp/security/policy/no-verify-policy-manager.hpp \
+  include/ndn-cpp/security/policy/policy-manager.hpp \
+  include/ndn-cpp/transport/tcp-transport.hpp \
+  include/ndn-cpp/transport/transport.hpp \
+  include/ndn-cpp/transport/udp-transport.hpp \
+  include/ndn-cpp/util/blob.hpp \
+  include/ndn-cpp/util/signed-blob.hpp
+
 # Just the C code.
-libndn_c_la_SOURCES = \
-  ndn-cpp/ndn-cpp-config.h \
-  ndn-cpp/c/common.h \
+libndn_c_la_SOURCES = $(ndn_cpp_c_headers) \
   ndn-cpp/c/data.h \
   ndn-cpp/c/errors.c ndn-cpp/c/errors.h \
   ndn-cpp/c/forwarding-entry.h \
-  ndn-cpp/c/forwarding-flags.c ndn-cpp/c/forwarding-flags.h \
+  ndn-cpp/c/forwarding-flags.c \
   ndn-cpp/c/interest.c ndn-cpp/c/interest.h \
-  ndn-cpp/c/key.h \
   ndn-cpp/c/name.c ndn-cpp/c/name.h \
   ndn-cpp/c/publisher-public-key-digest.h \
   ndn-cpp/c/encoding/binary-xml.h \
@@ -50,51 +94,40 @@
   ndn-cpp/c/util/ndn_realloc.c ndn-cpp/c/util/ndn_realloc.h
 
 # C++ code and also the C code.
-libndn_cpp_la_SOURCES = \
-  $(libndn_c_la_SOURCES) \
-  ndn-cpp/ndn-cpp-config.h \
-  ndn-cpp/c/common.h \
-  ndn-cpp/common.hpp ndn-cpp/common.cpp \
-  ndn-cpp/data.cpp ndn-cpp/c/data.h ndn-cpp/data.hpp \
-  ndn-cpp/face.cpp ndn-cpp/face.hpp \
-  ndn-cpp/forwarding-entry.cpp ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
-  ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
-  ndn-cpp/interest.cpp ndn-cpp/c/interest.h ndn-cpp/interest.hpp \
-  ndn-cpp/key.cpp ndn-cpp/c/key.h ndn-cpp/key.hpp \
-  ndn-cpp/name.cpp ndn-cpp/c/name.h ndn-cpp/name.hpp \
-  ndn-cpp/node.cpp ndn-cpp/node.hpp \
-  ndn-cpp/publisher-public-key-digest.hpp \
-  ndn-cpp/sha256-with-rsa-signature.cpp ndn-cpp/sha256-with-rsa-signature.hpp \
-  ndn-cpp/c/encoding/binary-xml.h \
-  ndn-cpp/c/encoding/binary-xml-decoder.h ndn-cpp/encoding/binary-xml-decoder.hpp \
-  ndn-cpp/c/encoding/binary-xml-element-reader.h ndn-cpp/encoding/binary-xml-element-reader.cpp ndn-cpp/encoding/binary-xml-element-reader.hpp \
-  ndn-cpp/c/encoding/binary-xml-encoder.h ndn-cpp/encoding/binary-xml-encoder.hpp ndn-cpp/c/util/dynamic-uint8-array.h \
-  ndn-cpp/c/encoding/binary-xml-structure-decoder.h ndn-cpp/encoding/binary-xml-structure-decoder.hpp \
-  ndn-cpp/encoding/binary-xml-wire-format.cpp ndn-cpp/c/encoding/binary-xml-name.h ndn-cpp/encoding/binary-xml-wire-format.hpp \
-  ndn-cpp/encoding/wire-format.cpp ndn-cpp/encoding/wire-format.hpp \
-  ndn-cpp/security/security-common.hpp \
-  ndn-cpp/security/key-chain.cpp ndn-cpp/security/key-chain.hpp \
-  ndn-cpp/security/security-exception.cpp ndn-cpp/security/security-exception.hpp \
-  ndn-cpp/security/certificate/oid.cpp ndn-cpp/security/certificate/oid.hpp \
-  ndn-cpp/security/certificate/public-key.cpp ndn-cpp/security/certificate/public-key.hpp \
-  ndn-cpp/security/encryption/encryption-manager.hpp \
-  ndn-cpp/security/identity/basic-identity-storage.cpp ndn-cpp/security/identity/basic-identity-storage.hpp \
-  ndn-cpp/security/identity/identity-manager.cpp ndn-cpp/security/identity/identity-manager.hpp \
-  ndn-cpp/security/identity/identity-storage.hpp \
-  ndn-cpp/security/identity/memory-identity-storage.cpp ndn-cpp/security/identity/memory-identity-storage.hpp \
-  ndn-cpp/security/identity/memory-private-key-storage.cpp ndn-cpp/security/identity/memory-private-key-storage.hpp \
-  ndn-cpp/security/identity/osx-private-key-storage.cpp ndn-cpp/security/identity/osx-private-key-storage.hpp \
-  ndn-cpp/security/identity/private-key-storage.hpp \
-  ndn-cpp/security/policy/no-verify-policy-manager.cpp ndn-cpp/security/policy/no-verify-policy-manager.hpp \
-  ndn-cpp/security/policy/policy-manager.hpp \
-  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/tcp-transport.h ndn-cpp/transport/tcp-transport.cpp ndn-cpp/transport/tcp-transport.hpp \
-  ndn-cpp/transport/transport.cpp ndn-cpp/transport/transport.hpp \
-  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/udp-transport.h ndn-cpp/transport/udp-transport.cpp ndn-cpp/transport/udp-transport.hpp \
-  ndn-cpp/util/blob.hpp \
+libndn_cpp_la_SOURCES = $(libndn_c_la_SOURCES) $(ndn_cpp_cpp_headers) \
+  ndn-cpp/common.cpp \
+  ndn-cpp/data.cpp \
+  ndn-cpp/face.cpp \
+  ndn-cpp/forwarding-entry.cpp \
+  ndn-cpp/interest.cpp \
+  ndn-cpp/key.cpp \
+  ndn-cpp/name.cpp \
+  ndn-cpp/node.cpp \
+  ndn-cpp/publisher-public-key-digest.cpp \
+  ndn-cpp/sha256-with-rsa-signature.cpp \
+  ndn-cpp/encoding/binary-xml-decoder.hpp \
+  ndn-cpp/encoding/binary-xml-encoder.hpp \
+  ndn-cpp/encoding/binary-xml-structure-decoder.hpp \
+  ndn-cpp/encoding/binary-xml-wire-format.cpp \
+  ndn-cpp/encoding/element-listener.cpp \
+  ndn-cpp/encoding/wire-format.cpp \
+  ndn-cpp/security/key-chain.cpp \
+  ndn-cpp/security/security-exception.cpp \
+  ndn-cpp/security/certificate/oid.cpp \
+  ndn-cpp/security/certificate/public-key.cpp \
+  ndn-cpp/security/identity/basic-identity-storage.cpp \
+  ndn-cpp/security/identity/identity-manager.cpp \
+  ndn-cpp/security/identity/memory-identity-storage.cpp \
+  ndn-cpp/security/identity/memory-private-key-storage.cpp \
+  ndn-cpp/security/identity/osx-private-key-storage.cpp \
+  ndn-cpp/security/policy/no-verify-policy-manager.cpp \
+  ndn-cpp/transport/tcp-transport.cpp \
+  ndn-cpp/transport/transport.cpp \
+  ndn-cpp/transport/udp-transport.cpp \
+  ndn-cpp/util/blob.cpp \
   ndn-cpp/util/changed-event.cpp ndn-cpp/util/changed-event.hpp \
   ndn-cpp/util/dynamic-uint8-vector.cpp ndn-cpp/util/dynamic-uint8-vector.hpp \
-  ndn-cpp/util/logging.cpp ndn-cpp/util/logging.hpp \
-  ndn-cpp/util/signed-blob.hpp
+  ndn-cpp/util/logging.cpp ndn-cpp/util/logging.hpp
 
 bin_test_encode_decode_forwarding_entry_SOURCES = tests/test-encode-decode-forwarding-entry.cpp
 bin_test_encode_decode_forwarding_entry_LDADD = libndn-cpp.la
diff --git a/Makefile.in b/Makefile.in
index 1815ea5..84d7443 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -135,8 +135,9 @@
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libndn_c_la_LIBADD =
+am__objects_1 =
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libndn_c_la_OBJECTS = ndn-cpp/c/errors.lo \
+am_libndn_c_la_OBJECTS = $(am__objects_1) ndn-cpp/c/errors.lo \
 	ndn-cpp/c/forwarding-flags.lo ndn-cpp/c/interest.lo \
 	ndn-cpp/c/name.lo ndn-cpp/c/encoding/binary-xml-data.lo \
 	ndn-cpp/c/encoding/binary-xml-decoder.lo \
@@ -157,9 +158,9 @@
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 libndn_cpp_la_LIBADD =
-am__objects_1 = ndn-cpp/c/errors.lo ndn-cpp/c/forwarding-flags.lo \
-	ndn-cpp/c/interest.lo ndn-cpp/c/name.lo \
-	ndn-cpp/c/encoding/binary-xml-data.lo \
+am__objects_2 = $(am__objects_1) ndn-cpp/c/errors.lo \
+	ndn-cpp/c/forwarding-flags.lo ndn-cpp/c/interest.lo \
+	ndn-cpp/c/name.lo ndn-cpp/c/encoding/binary-xml-data.lo \
 	ndn-cpp/c/encoding/binary-xml-decoder.lo \
 	ndn-cpp/c/encoding/binary-xml-element-reader.lo \
 	ndn-cpp/c/encoding/binary-xml-encoder.lo \
@@ -172,12 +173,14 @@
 	ndn-cpp/c/transport/socket-transport.lo \
 	ndn-cpp/c/util/crypto.lo ndn-cpp/c/util/dynamic-uint8-array.lo \
 	ndn-cpp/c/util/ndn_memory.lo ndn-cpp/c/util/ndn_realloc.lo
-am_libndn_cpp_la_OBJECTS = $(am__objects_1) ndn-cpp/common.lo \
-	ndn-cpp/data.lo ndn-cpp/face.lo ndn-cpp/forwarding-entry.lo \
-	ndn-cpp/interest.lo ndn-cpp/key.lo ndn-cpp/name.lo \
-	ndn-cpp/node.lo ndn-cpp/sha256-with-rsa-signature.lo \
-	ndn-cpp/encoding/binary-xml-element-reader.lo \
+am_libndn_cpp_la_OBJECTS = $(am__objects_2) $(am__objects_1) \
+	ndn-cpp/common.lo ndn-cpp/data.lo ndn-cpp/face.lo \
+	ndn-cpp/forwarding-entry.lo ndn-cpp/interest.lo ndn-cpp/key.lo \
+	ndn-cpp/name.lo ndn-cpp/node.lo \
+	ndn-cpp/publisher-public-key-digest.lo \
+	ndn-cpp/sha256-with-rsa-signature.lo \
 	ndn-cpp/encoding/binary-xml-wire-format.lo \
+	ndn-cpp/encoding/element-listener.lo \
 	ndn-cpp/encoding/wire-format.lo ndn-cpp/security/key-chain.lo \
 	ndn-cpp/security/security-exception.lo \
 	ndn-cpp/security/certificate/oid.lo \
@@ -190,7 +193,7 @@
 	ndn-cpp/security/policy/no-verify-policy-manager.lo \
 	ndn-cpp/transport/tcp-transport.lo \
 	ndn-cpp/transport/transport.lo \
-	ndn-cpp/transport/udp-transport.lo \
+	ndn-cpp/transport/udp-transport.lo ndn-cpp/util/blob.lo \
 	ndn-cpp/util/changed-event.lo \
 	ndn-cpp/util/dynamic-uint8-vector.lo ndn-cpp/util/logging.lo
 libndn_cpp_la_OBJECTS = $(am_libndn_cpp_la_OBJECTS)
@@ -549,16 +552,62 @@
 SUBDIRS = include
 lib_LTLIBRARIES = libndn-c.la libndn-cpp.la
 
+# Public C headers.
+ndn_cpp_c_headers = \
+  include/ndn-cpp/ndn-cpp-config.h \
+  include/ndn-cpp/c/common.h \
+  include/ndn-cpp/c/data-types.h \
+  include/ndn-cpp/c/forwarding-flags.h \
+  include/ndn-cpp/c/interest-types.h \
+  include/ndn-cpp/c/key-types.h \
+  include/ndn-cpp/c/encoding/element-listener.h
+
+
+# Public C++ headers.
+ndn_cpp_cpp_headers = \
+  include/ndn-cpp/common.hpp \
+  include/ndn-cpp/data.hpp \
+  include/ndn-cpp/face.hpp \
+  include/ndn-cpp/forwarding-entry.hpp \
+  include/ndn-cpp/forwarding-flags.hpp \
+  include/ndn-cpp/interest.hpp \
+  include/ndn-cpp/key.hpp \
+  include/ndn-cpp/name.hpp \
+  include/ndn-cpp/node.hpp \
+  include/ndn-cpp/publisher-public-key-digest.hpp \
+  include/ndn-cpp/sha256-with-rsa-signature.hpp \
+  include/ndn-cpp/encoding/element-listener.hpp \
+  include/ndn-cpp/encoding/binary-xml-wire-format.hpp \
+  include/ndn-cpp/encoding/wire-format.hpp \
+  include/ndn-cpp/security/security-common.hpp \
+  include/ndn-cpp/security/key-chain.hpp \
+  include/ndn-cpp/security/security-exception.hpp \
+  include/ndn-cpp/security/certificate/oid.hpp \
+  include/ndn-cpp/security/certificate/public-key.hpp \
+  include/ndn-cpp/security/encryption/encryption-manager.hpp \
+  include/ndn-cpp/security/identity/basic-identity-storage.hpp \
+  include/ndn-cpp/security/identity/identity-manager.hpp \
+  include/ndn-cpp/security/identity/identity-storage.hpp \
+  include/ndn-cpp/security/identity/memory-identity-storage.hpp \
+  include/ndn-cpp/security/identity/memory-private-key-storage.hpp \
+  include/ndn-cpp/security/identity/osx-private-key-storage.hpp \
+  include/ndn-cpp/security/identity/private-key-storage.hpp \
+  include/ndn-cpp/security/policy/no-verify-policy-manager.hpp \
+  include/ndn-cpp/security/policy/policy-manager.hpp \
+  include/ndn-cpp/transport/tcp-transport.hpp \
+  include/ndn-cpp/transport/transport.hpp \
+  include/ndn-cpp/transport/udp-transport.hpp \
+  include/ndn-cpp/util/blob.hpp \
+  include/ndn-cpp/util/signed-blob.hpp
+
+
 # Just the C code.
-libndn_c_la_SOURCES = \
-  ndn-cpp/ndn-cpp-config.h \
-  ndn-cpp/c/common.h \
+libndn_c_la_SOURCES = $(ndn_cpp_c_headers) \
   ndn-cpp/c/data.h \
   ndn-cpp/c/errors.c ndn-cpp/c/errors.h \
   ndn-cpp/c/forwarding-entry.h \
-  ndn-cpp/c/forwarding-flags.c ndn-cpp/c/forwarding-flags.h \
+  ndn-cpp/c/forwarding-flags.c \
   ndn-cpp/c/interest.c ndn-cpp/c/interest.h \
-  ndn-cpp/c/key.h \
   ndn-cpp/c/name.c ndn-cpp/c/name.h \
   ndn-cpp/c/publisher-public-key-digest.h \
   ndn-cpp/c/encoding/binary-xml.h \
@@ -583,51 +632,40 @@
 
 
 # C++ code and also the C code.
-libndn_cpp_la_SOURCES = \
-  $(libndn_c_la_SOURCES) \
-  ndn-cpp/ndn-cpp-config.h \
-  ndn-cpp/c/common.h \
-  ndn-cpp/common.hpp ndn-cpp/common.cpp \
-  ndn-cpp/data.cpp ndn-cpp/c/data.h ndn-cpp/data.hpp \
-  ndn-cpp/face.cpp ndn-cpp/face.hpp \
-  ndn-cpp/forwarding-entry.cpp ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
-  ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
-  ndn-cpp/interest.cpp ndn-cpp/c/interest.h ndn-cpp/interest.hpp \
-  ndn-cpp/key.cpp ndn-cpp/c/key.h ndn-cpp/key.hpp \
-  ndn-cpp/name.cpp ndn-cpp/c/name.h ndn-cpp/name.hpp \
-  ndn-cpp/node.cpp ndn-cpp/node.hpp \
-  ndn-cpp/publisher-public-key-digest.hpp \
-  ndn-cpp/sha256-with-rsa-signature.cpp ndn-cpp/sha256-with-rsa-signature.hpp \
-  ndn-cpp/c/encoding/binary-xml.h \
-  ndn-cpp/c/encoding/binary-xml-decoder.h ndn-cpp/encoding/binary-xml-decoder.hpp \
-  ndn-cpp/c/encoding/binary-xml-element-reader.h ndn-cpp/encoding/binary-xml-element-reader.cpp ndn-cpp/encoding/binary-xml-element-reader.hpp \
-  ndn-cpp/c/encoding/binary-xml-encoder.h ndn-cpp/encoding/binary-xml-encoder.hpp ndn-cpp/c/util/dynamic-uint8-array.h \
-  ndn-cpp/c/encoding/binary-xml-structure-decoder.h ndn-cpp/encoding/binary-xml-structure-decoder.hpp \
-  ndn-cpp/encoding/binary-xml-wire-format.cpp ndn-cpp/c/encoding/binary-xml-name.h ndn-cpp/encoding/binary-xml-wire-format.hpp \
-  ndn-cpp/encoding/wire-format.cpp ndn-cpp/encoding/wire-format.hpp \
-  ndn-cpp/security/security-common.hpp \
-  ndn-cpp/security/key-chain.cpp ndn-cpp/security/key-chain.hpp \
-  ndn-cpp/security/security-exception.cpp ndn-cpp/security/security-exception.hpp \
-  ndn-cpp/security/certificate/oid.cpp ndn-cpp/security/certificate/oid.hpp \
-  ndn-cpp/security/certificate/public-key.cpp ndn-cpp/security/certificate/public-key.hpp \
-  ndn-cpp/security/encryption/encryption-manager.hpp \
-  ndn-cpp/security/identity/basic-identity-storage.cpp ndn-cpp/security/identity/basic-identity-storage.hpp \
-  ndn-cpp/security/identity/identity-manager.cpp ndn-cpp/security/identity/identity-manager.hpp \
-  ndn-cpp/security/identity/identity-storage.hpp \
-  ndn-cpp/security/identity/memory-identity-storage.cpp ndn-cpp/security/identity/memory-identity-storage.hpp \
-  ndn-cpp/security/identity/memory-private-key-storage.cpp ndn-cpp/security/identity/memory-private-key-storage.hpp \
-  ndn-cpp/security/identity/osx-private-key-storage.cpp ndn-cpp/security/identity/osx-private-key-storage.hpp \
-  ndn-cpp/security/identity/private-key-storage.hpp \
-  ndn-cpp/security/policy/no-verify-policy-manager.cpp ndn-cpp/security/policy/no-verify-policy-manager.hpp \
-  ndn-cpp/security/policy/policy-manager.hpp \
-  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/tcp-transport.h ndn-cpp/transport/tcp-transport.cpp ndn-cpp/transport/tcp-transport.hpp \
-  ndn-cpp/transport/transport.cpp ndn-cpp/transport/transport.hpp \
-  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/udp-transport.h ndn-cpp/transport/udp-transport.cpp ndn-cpp/transport/udp-transport.hpp \
-  ndn-cpp/util/blob.hpp \
+libndn_cpp_la_SOURCES = $(libndn_c_la_SOURCES) $(ndn_cpp_cpp_headers) \
+  ndn-cpp/common.cpp \
+  ndn-cpp/data.cpp \
+  ndn-cpp/face.cpp \
+  ndn-cpp/forwarding-entry.cpp \
+  ndn-cpp/interest.cpp \
+  ndn-cpp/key.cpp \
+  ndn-cpp/name.cpp \
+  ndn-cpp/node.cpp \
+  ndn-cpp/publisher-public-key-digest.cpp \
+  ndn-cpp/sha256-with-rsa-signature.cpp \
+  ndn-cpp/encoding/binary-xml-decoder.hpp \
+  ndn-cpp/encoding/binary-xml-encoder.hpp \
+  ndn-cpp/encoding/binary-xml-structure-decoder.hpp \
+  ndn-cpp/encoding/binary-xml-wire-format.cpp \
+  ndn-cpp/encoding/element-listener.cpp \
+  ndn-cpp/encoding/wire-format.cpp \
+  ndn-cpp/security/key-chain.cpp \
+  ndn-cpp/security/security-exception.cpp \
+  ndn-cpp/security/certificate/oid.cpp \
+  ndn-cpp/security/certificate/public-key.cpp \
+  ndn-cpp/security/identity/basic-identity-storage.cpp \
+  ndn-cpp/security/identity/identity-manager.cpp \
+  ndn-cpp/security/identity/memory-identity-storage.cpp \
+  ndn-cpp/security/identity/memory-private-key-storage.cpp \
+  ndn-cpp/security/identity/osx-private-key-storage.cpp \
+  ndn-cpp/security/policy/no-verify-policy-manager.cpp \
+  ndn-cpp/transport/tcp-transport.cpp \
+  ndn-cpp/transport/transport.cpp \
+  ndn-cpp/transport/udp-transport.cpp \
+  ndn-cpp/util/blob.cpp \
   ndn-cpp/util/changed-event.cpp ndn-cpp/util/changed-event.hpp \
   ndn-cpp/util/dynamic-uint8-vector.cpp ndn-cpp/util/dynamic-uint8-vector.hpp \
-  ndn-cpp/util/logging.cpp ndn-cpp/util/logging.hpp \
-  ndn-cpp/util/signed-blob.hpp
+  ndn-cpp/util/logging.cpp ndn-cpp/util/logging.hpp
 
 bin_test_encode_decode_forwarding_entry_SOURCES = tests/test-encode-decode-forwarding-entry.cpp
 bin_test_encode_decode_forwarding_entry_LDADD = libndn-cpp.la
@@ -812,6 +850,8 @@
 	ndn-cpp/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/node.lo: ndn-cpp/$(am__dirstamp) \
 	ndn-cpp/$(DEPDIR)/$(am__dirstamp)
+ndn-cpp/publisher-public-key-digest.lo: ndn-cpp/$(am__dirstamp) \
+	ndn-cpp/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/sha256-with-rsa-signature.lo: ndn-cpp/$(am__dirstamp) \
 	ndn-cpp/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/encoding/$(am__dirstamp):
@@ -820,10 +860,10 @@
 ndn-cpp/encoding/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) ndn-cpp/encoding/$(DEPDIR)
 	@: > ndn-cpp/encoding/$(DEPDIR)/$(am__dirstamp)
-ndn-cpp/encoding/binary-xml-element-reader.lo:  \
+ndn-cpp/encoding/binary-xml-wire-format.lo:  \
 	ndn-cpp/encoding/$(am__dirstamp) \
 	ndn-cpp/encoding/$(DEPDIR)/$(am__dirstamp)
-ndn-cpp/encoding/binary-xml-wire-format.lo:  \
+ndn-cpp/encoding/element-listener.lo:  \
 	ndn-cpp/encoding/$(am__dirstamp) \
 	ndn-cpp/encoding/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/encoding/wire-format.lo: ndn-cpp/encoding/$(am__dirstamp) \
@@ -899,6 +939,8 @@
 ndn-cpp/util/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) ndn-cpp/util/$(DEPDIR)
 	@: > ndn-cpp/util/$(DEPDIR)/$(am__dirstamp)
+ndn-cpp/util/blob.lo: ndn-cpp/util/$(am__dirstamp) \
+	ndn-cpp/util/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/util/changed-event.lo: ndn-cpp/util/$(am__dirstamp) \
 	ndn-cpp/util/$(DEPDIR)/$(am__dirstamp)
 ndn-cpp/util/dynamic-uint8-vector.lo: ndn-cpp/util/$(am__dirstamp) \
@@ -1036,6 +1078,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/$(DEPDIR)/key.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/$(DEPDIR)/name.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/$(DEPDIR)/node.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/$(DEPDIR)/publisher-public-key-digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/$(DEPDIR)/sha256-with-rsa-signature.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/$(DEPDIR)/errors.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/$(DEPDIR)/forwarding-flags.Plo@am__quote@
@@ -1056,8 +1099,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/dynamic-uint8-array.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/ndn_memory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/c/util/$(DEPDIR)/ndn_realloc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/encoding/$(DEPDIR)/binary-xml-element-reader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/encoding/$(DEPDIR)/binary-xml-wire-format.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/encoding/$(DEPDIR)/element-listener.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/encoding/$(DEPDIR)/wire-format.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/security/$(DEPDIR)/key-chain.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/security/$(DEPDIR)/security-exception.Plo@am__quote@
@@ -1072,6 +1115,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/transport/$(DEPDIR)/tcp-transport.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/transport/$(DEPDIR)/transport.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/transport/$(DEPDIR)/udp-transport.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/util/$(DEPDIR)/blob.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/util/$(DEPDIR)/changed-event.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/util/$(DEPDIR)/dynamic-uint8-vector.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ndn-cpp/util/$(DEPDIR)/logging.Plo@am__quote@
diff --git a/include/Makefile.am b/include/Makefile.am
index ce3321c..409f202 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -3,7 +3,55 @@
 # These files are included by the application with, for example
 # #include <ndn-cpp/namp.hpp>
 # Internal include headers are not put in this public install directory.
-ndnboost_files = \
+
+# Public C headers.
+ndn_cpp_c_headers = \
+  ndn-cpp/ndn-cpp-config.h \
+  ndn-cpp/c/common.h \
+  ndn-cpp/c/data-types.h \
+  ndn-cpp/c/forwarding-flags.h \
+  ndn-cpp/c/interest-types.h \
+  ndn-cpp/c/key-types.h \
+  ndn-cpp/c/encoding/element-listener.h
+
+# Public C++ headers.
+ndn_cpp_cpp_headers = \
+  ndn-cpp/common.hpp \
+  ndn-cpp/data.hpp \
+  ndn-cpp/face.hpp \
+  ndn-cpp/forwarding-entry.hpp \
+  ndn-cpp/forwarding-flags.hpp \
+  ndn-cpp/interest.hpp \
+  ndn-cpp/key.hpp \
+  ndn-cpp/name.hpp \
+  ndn-cpp/node.hpp \
+  ndn-cpp/publisher-public-key-digest.hpp \
+  ndn-cpp/sha256-with-rsa-signature.hpp \
+  ndn-cpp/encoding/element-listener.hpp \
+  ndn-cpp/encoding/binary-xml-wire-format.hpp \
+  ndn-cpp/encoding/wire-format.hpp \
+  ndn-cpp/security/security-common.hpp \
+  ndn-cpp/security/key-chain.hpp \
+  ndn-cpp/security/security-exception.hpp \
+  ndn-cpp/security/certificate/oid.hpp \
+  ndn-cpp/security/certificate/public-key.hpp \
+  ndn-cpp/security/encryption/encryption-manager.hpp \
+  ndn-cpp/security/identity/basic-identity-storage.hpp \
+  ndn-cpp/security/identity/identity-manager.hpp \
+  ndn-cpp/security/identity/identity-storage.hpp \
+  ndn-cpp/security/identity/memory-identity-storage.hpp \
+  ndn-cpp/security/identity/memory-private-key-storage.hpp \
+  ndn-cpp/security/identity/osx-private-key-storage.hpp \
+  ndn-cpp/security/identity/private-key-storage.hpp \
+  ndn-cpp/security/policy/no-verify-policy-manager.hpp \
+  ndn-cpp/security/policy/policy-manager.hpp \
+  ndn-cpp/transport/tcp-transport.hpp \
+  ndn-cpp/transport/transport.hpp \
+  ndn-cpp/transport/udp-transport.hpp \
+  ndn-cpp/util/blob.hpp \
+  ndn-cpp/util/signed-blob.hpp
+
+ndnboost_headers = \
   ndnboost/algorithm/string/compare.hpp \
   ndnboost/algorithm/string/concept.hpp \
   ndnboost/algorithm/string/config.hpp \
@@ -1757,5 +1805,4 @@
   ndnboost/visit_each.hpp \
   ndnboost/weak_ptr.hpp
 
-nobase_include_HEADERS = $(ndnboost_files) \
-  ndn-cpp/ndn-cpp-config.h
+nobase_include_HEADERS = $(ndn_cpp_c_headers) $(ndn_cpp_cpp_headers) $(ndnboost_headers)
diff --git a/include/Makefile.in b/include/Makefile.in
index fc102ed..c4fc005 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -14,6 +14,12 @@
 
 @SET_MAKE@
 
+# "make install" will install these in the install include directory, for example
+# /usr/local/include/ndn-cpp/name.hpp.
+# These files are included by the application with, for example
+# #include <ndn-cpp/namp.hpp>
+# Internal include headers are not put in this public install directory.
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -314,12 +320,55 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
-# "make install" will install these in the install include directory, for example
-# /usr/local/include/ndn-cpp/name.hpp.
-# These files are included by the application with, for example
-# #include <ndn-cpp/namp.hpp>
-# Internal include headers are not put in this public install directory.
-ndnboost_files = \
+# Public C headers.
+ndn_cpp_c_headers = \
+  ndn-cpp/ndn-cpp-config.h \
+  ndn-cpp/c/common.h \
+  ndn-cpp/c/data-types.h \
+  ndn-cpp/c/forwarding-flags.h \
+  ndn-cpp/c/interest-types.h \
+  ndn-cpp/c/key-types.h \
+  ndn-cpp/c/encoding/element-listener.h
+
+
+# Public C++ headers.
+ndn_cpp_cpp_headers = \
+  ndn-cpp/common.hpp \
+  ndn-cpp/data.hpp \
+  ndn-cpp/face.hpp \
+  ndn-cpp/forwarding-entry.hpp \
+  ndn-cpp/forwarding-flags.hpp \
+  ndn-cpp/interest.hpp \
+  ndn-cpp/key.hpp \
+  ndn-cpp/name.hpp \
+  ndn-cpp/node.hpp \
+  ndn-cpp/publisher-public-key-digest.hpp \
+  ndn-cpp/sha256-with-rsa-signature.hpp \
+  ndn-cpp/encoding/element-listener.hpp \
+  ndn-cpp/encoding/binary-xml-wire-format.hpp \
+  ndn-cpp/encoding/wire-format.hpp \
+  ndn-cpp/security/security-common.hpp \
+  ndn-cpp/security/key-chain.hpp \
+  ndn-cpp/security/security-exception.hpp \
+  ndn-cpp/security/certificate/oid.hpp \
+  ndn-cpp/security/certificate/public-key.hpp \
+  ndn-cpp/security/encryption/encryption-manager.hpp \
+  ndn-cpp/security/identity/basic-identity-storage.hpp \
+  ndn-cpp/security/identity/identity-manager.hpp \
+  ndn-cpp/security/identity/identity-storage.hpp \
+  ndn-cpp/security/identity/memory-identity-storage.hpp \
+  ndn-cpp/security/identity/memory-private-key-storage.hpp \
+  ndn-cpp/security/identity/osx-private-key-storage.hpp \
+  ndn-cpp/security/identity/private-key-storage.hpp \
+  ndn-cpp/security/policy/no-verify-policy-manager.hpp \
+  ndn-cpp/security/policy/policy-manager.hpp \
+  ndn-cpp/transport/tcp-transport.hpp \
+  ndn-cpp/transport/transport.hpp \
+  ndn-cpp/transport/udp-transport.hpp \
+  ndn-cpp/util/blob.hpp \
+  ndn-cpp/util/signed-blob.hpp
+
+ndnboost_headers = \
   ndnboost/algorithm/string/compare.hpp \
   ndnboost/algorithm/string/concept.hpp \
   ndnboost/algorithm/string/config.hpp \
@@ -2073,9 +2122,7 @@
   ndnboost/visit_each.hpp \
   ndnboost/weak_ptr.hpp
 
-nobase_include_HEADERS = $(ndnboost_files) \
-  ndn-cpp/ndn-cpp-config.h
-
+nobase_include_HEADERS = $(ndn_cpp_c_headers) $(ndn_cpp_cpp_headers) $(ndnboost_headers)
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
diff --git a/ndn-cpp/c/common.h b/include/ndn-cpp/c/common.h
similarity index 81%
rename from ndn-cpp/c/common.h
rename to include/ndn-cpp/c/common.h
index 48e2ec2..7f47f7a 100644
--- a/ndn-cpp/c/common.h
+++ b/include/ndn-cpp/c/common.h
@@ -7,8 +7,9 @@
 #ifndef NDN_COMMON_H
 #define	NDN_COMMON_H
 
-#include <ndn-cpp/ndn-cpp-config.h>
+#include "../ndn-cpp-config.h"
 #include <stdint.h>
+// TODO: Is stddef.h portable?
 #include <stddef.h>
 
 #endif
diff --git a/include/ndn-cpp/c/data-types.h b/include/ndn-cpp/c/data-types.h
new file mode 100644
index 0000000..3c2abce
--- /dev/null
+++ b/include/ndn-cpp/c/data-types.h
@@ -0,0 +1,27 @@
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_DATA_TYPES_H
+#define	NDN_DATA_TYPES_H
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+  ndn_ContentType_DATA = 0,
+  ndn_ContentType_ENCR = 1,
+  ndn_ContentType_GONE = 2,
+  ndn_ContentType_KEY =  3,
+  ndn_ContentType_LINK = 4,
+  ndn_ContentType_NACK = 5
+} ndn_ContentType;
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
diff --git a/include/ndn-cpp/c/encoding/element-listener.h b/include/ndn-cpp/c/encoding/element-listener.h
new file mode 100644
index 0000000..af88a85
--- /dev/null
+++ b/include/ndn-cpp/c/encoding/element-listener.h
@@ -0,0 +1,39 @@
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_ELEMENT_LISTENER_H
+#define NDN_ELEMENT_LISTENER_H
+
+#include "../common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** An ndn_ElementListener struct holds a function pointer onReceivedElement.  You can extend this struct with data that
+ * will be passed to onReceivedElement.
+ */
+struct ndn_ElementListener {
+  void (*onReceivedElement)(struct ndn_ElementListener *self, uint8_t *element, size_t elementLength); /**< see ndn_ElementListener_initialize */
+};
+
+/**
+ * Initialize an ndn_ElementListener struct to use the onReceivedElement function pointer.
+ * @param self pointer to the ndn_ElementListener struct
+ * @param onReceivedElement pointer to a function which is called when an entire binary XML element is received.
+ * self is the pointer to this ndn_ElementListener struct.  See ndn_BinaryXmlElementReader_onReceivedData.
+ */
+static inline void ndn_ElementListener_initialize
+  (struct ndn_ElementListener *self, void (*onReceivedElement)(struct ndn_ElementListener *self, uint8_t *element, size_t elementLength))
+{
+  self->onReceivedElement = onReceivedElement;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/ndn-cpp/c/forwarding-flags.h b/include/ndn-cpp/c/forwarding-flags.h
similarity index 100%
rename from ndn-cpp/c/forwarding-flags.h
rename to include/ndn-cpp/c/forwarding-flags.h
diff --git a/include/ndn-cpp/c/interest-types.h b/include/ndn-cpp/c/interest-types.h
new file mode 100644
index 0000000..d6a5e51
--- /dev/null
+++ b/include/ndn-cpp/c/interest-types.h
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_INTEREST_TYPES_H
+#define	NDN_INTEREST_TYPES_H
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+  ndn_Exclude_COMPONENT = 0,
+  ndn_Exclude_ANY = 1  
+} ndn_ExcludeType;
+
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
diff --git a/include/ndn-cpp/c/key-types.h b/include/ndn-cpp/c/key-types.h
new file mode 100644
index 0000000..712aee8
--- /dev/null
+++ b/include/ndn-cpp/c/key-types.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_KEY_TYPES_H
+#define NDN_KEY_TYPES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+  ndn_KeyLocatorType_KEY = 1,
+  ndn_KeyLocatorType_CERTIFICATE = 2,
+  ndn_KeyLocatorType_KEYNAME = 3
+} ndn_KeyLocatorType;
+
+typedef enum {
+  ndn_KeyNameType_PUBLISHER_PUBLIC_KEY_DIGEST = 1,
+  ndn_KeyNameType_PUBLISHER_CERTIFICATE_DIGEST = 2,
+  ndn_KeyNameType_PUBLISHER_ISSUER_KEY_DIGEST = 3,
+  ndn_KeyNameType_PUBLISHER_ISSUER_CERTIFICATE_DIGEST = 4
+} ndn_KeyNameType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/ndn-cpp/common.hpp b/include/ndn-cpp/common.hpp
similarity index 94%
rename from ndn-cpp/common.hpp
rename to include/ndn-cpp/common.hpp
index b9b02c7..e9d0c88 100644
--- a/ndn-cpp/common.hpp
+++ b/include/ndn-cpp/common.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,7 +9,7 @@
 #define NDN_COMMON_HPP
 
 #include <vector>
-// common.h includes ndn-cpp-config.h.
+// common.h include ndn-cpp-config.h.
 #include "c/common.h"
 
 // Depending on where ./configure found shared_ptr, define the ptr_lib namespace.
diff --git a/ndn-cpp/data.hpp b/include/ndn-cpp/data.hpp
similarity index 97%
rename from ndn-cpp/data.hpp
rename to include/ndn-cpp/data.hpp
index f8cc893..0fe4c99 100644
--- a/ndn-cpp/data.hpp
+++ b/include/ndn-cpp/data.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -10,7 +11,12 @@
 #include "common.hpp"
 #include "name.hpp"
 #include "util/signed-blob.hpp"
-#include "c/data.h"
+#include "c/data-types.h"
+#include "encoding/wire-format.hpp"
+
+struct ndn_MetaInfo;
+struct ndn_Signature;
+struct ndn_Data;
 
 namespace ndn {
 
diff --git a/ndn-cpp/encoding/binary-xml-wire-format.hpp b/include/ndn-cpp/encoding/binary-xml-wire-format.hpp
similarity index 97%
rename from ndn-cpp/encoding/binary-xml-wire-format.hpp
rename to include/ndn-cpp/encoding/binary-xml-wire-format.hpp
index c169669..cb4f0aa 100644
--- a/ndn-cpp/encoding/binary-xml-wire-format.hpp
+++ b/include/ndn-cpp/encoding/binary-xml-wire-format.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/encoding/binary-xml-element-reader.hpp b/include/ndn-cpp/encoding/element-listener.hpp
similarity index 87%
rename from ndn-cpp/encoding/binary-xml-element-reader.hpp
rename to include/ndn-cpp/encoding/element-listener.hpp
index f353e97..7d13312 100644
--- a/ndn-cpp/encoding/binary-xml-element-reader.hpp
+++ b/include/ndn-cpp/encoding/element-listener.hpp
@@ -1,13 +1,14 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#ifndef NDN_BINARYXMLELEMENTREADER_HPP
-#define NDN_BINARYXMLELEMENTREADER_HPP
+#ifndef NDN_ELEMENT_LISTENER_HPP
+#define NDN_ELEMENT_LISTENER_HPP
 
-#include "../c/encoding/binary-xml-element-reader.h"
+#include "../c/encoding/element-listener.h"
 
 namespace ndn {
 
diff --git a/ndn-cpp/encoding/wire-format.hpp b/include/ndn-cpp/encoding/wire-format.hpp
similarity index 98%
rename from ndn-cpp/encoding/wire-format.hpp
rename to include/ndn-cpp/encoding/wire-format.hpp
index c5b4c6e..1a40cd1 100644
--- a/ndn-cpp/encoding/wire-format.hpp
+++ b/include/ndn-cpp/encoding/wire-format.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/face.hpp b/include/ndn-cpp/face.hpp
similarity index 98%
rename from ndn-cpp/face.hpp
rename to include/ndn-cpp/face.hpp
index 8eab12a..7859000 100644
--- a/ndn-cpp/face.hpp
+++ b/include/ndn-cpp/face.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/forwarding-entry.hpp b/include/ndn-cpp/forwarding-entry.hpp
similarity index 96%
rename from ndn-cpp/forwarding-entry.hpp
rename to include/ndn-cpp/forwarding-entry.hpp
index 1bd15fa..675b56b 100644
--- a/ndn-cpp/forwarding-entry.hpp
+++ b/include/ndn-cpp/forwarding-entry.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -11,7 +12,9 @@
 #include "name.hpp"
 #include "publisher-public-key-digest.hpp"
 #include "forwarding-flags.hpp"
-#include "c/forwarding-entry.h"
+#include "encoding/wire-format.hpp"
+
+struct ndn_ForwardingEntry;
 
 namespace ndn {
 
diff --git a/ndn-cpp/forwarding-flags.hpp b/include/ndn-cpp/forwarding-flags.hpp
similarity index 100%
rename from ndn-cpp/forwarding-flags.hpp
rename to include/ndn-cpp/forwarding-flags.hpp
diff --git a/ndn-cpp/interest.hpp b/include/ndn-cpp/interest.hpp
similarity index 96%
rename from ndn-cpp/interest.hpp
rename to include/ndn-cpp/interest.hpp
index de4f00e..955d681 100644
--- a/ndn-cpp/interest.hpp
+++ b/include/ndn-cpp/interest.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -9,7 +10,12 @@
 
 #include "name.hpp"
 #include "publisher-public-key-digest.hpp"
-#include "c/interest.h"
+#include "c/interest-types.h"
+#include "encoding/wire-format.hpp"
+
+struct ndn_ExcludeEntry;
+struct ndn_Exclude;
+struct ndn_Interest;
 
 namespace ndn {
   
@@ -40,12 +46,7 @@
    * @param excludeEntryStruct the C ndn_NameComponent struct to receive the pointer
    */
   void 
-  get(struct ndn_ExcludeEntry& excludeEntryStruct) const 
-  {
-    excludeEntryStruct.type = type_;
-    if (type_ == ndn_Exclude_COMPONENT)
-      component_.get(excludeEntryStruct.component);
-  }
+  get(struct ndn_ExcludeEntry& excludeEntryStruct) const;
   
   ndn_ExcludeType getType() const { return type_; }
   
diff --git a/ndn-cpp/key.hpp b/include/ndn-cpp/key.hpp
similarity index 96%
rename from ndn-cpp/key.hpp
rename to include/ndn-cpp/key.hpp
index 6bfd779..83230f6 100644
--- a/ndn-cpp/key.hpp
+++ b/include/ndn-cpp/key.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,9 +9,11 @@
 #define NDN_KEY_HPP
 
 #include <vector>
-#include "c/key.h"
+#include "c/key-types.h"
 #include "name.hpp"
 
+struct ndn_KeyLocator;
+
 namespace ndn {
   
 class KeyLocator {
diff --git a/ndn-cpp/name.hpp b/include/ndn-cpp/name.hpp
similarity index 97%
rename from ndn-cpp/name.hpp
rename to include/ndn-cpp/name.hpp
index 3adf841..59caef8 100644
--- a/ndn-cpp/name.hpp
+++ b/include/ndn-cpp/name.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -12,10 +13,11 @@
 #include <vector>
 #include <string>
 #include <sstream>
-#include "c/name.h"
-#include "encoding/binary-xml-wire-format.hpp"
 #include "util/blob.hpp"
 
+struct ndn_NameComponent;
+struct ndn_Name;
+
 namespace ndn {
     
 class Name {
@@ -66,10 +68,7 @@
      * @param componentStruct The C ndn_NameComponent struct to receive the pointer.
      */
     void 
-    get(struct ndn_NameComponent& componentStruct) const 
-    {
-      value_.get(componentStruct.value);
-    }
+    get(struct ndn_NameComponent& componentStruct) const;
   
     const Blob& 
     getValue() const { return value_; }
@@ -102,12 +101,7 @@
      * @return The integer number.
      */
     uint64_t
-    toNumber() const
-    {
-      struct ndn_NameComponent componentStruct;
-      get(componentStruct);
-      return ndn_NameComponent_toNumber(&componentStruct);
-    }
+    toNumber() const;
 
     /**
      * Interpret this name component as a network-ordered number with a marker and return an integer.
diff --git a/ndn-cpp/node.hpp b/include/ndn-cpp/node.hpp
similarity index 97%
rename from ndn-cpp/node.hpp
rename to include/ndn-cpp/node.hpp
index 24a2672..882ecd8 100644
--- a/ndn-cpp/node.hpp
+++ b/include/ndn-cpp/node.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -11,8 +12,10 @@
 #include "interest.hpp"
 #include "data.hpp"
 #include "transport/tcp-transport.hpp"
-#include "encoding/binary-xml-element-reader.hpp"
 #include "forwarding-flags.hpp"
+#include "encoding/element-listener.hpp"
+
+struct ndn_Interest;
 
 namespace ndn {
 
@@ -163,7 +166,7 @@
     const struct ndn_Interest& 
     getInterestStruct()
     {
-      return interestStruct_;
+      return *interestStruct_;
     }
     
     /**
@@ -179,7 +182,7 @@
     ptr_lib::shared_ptr<const Interest> interest_;
     std::vector<struct ndn_NameComponent> nameComponents_;
     std::vector<struct ndn_ExcludeEntry> excludeEntries_;
-    struct ndn_Interest interestStruct_;
+    ptr_lib::shared_ptr<struct ndn_Interest> interestStruct_;
   
     static uint64_t lastPendingInterestId_; /**< A class variable used to get the next unique ID. */
     uint64_t pendingInterestId_;            /**< A unique identifier for this entry so it can be deleted */
diff --git a/ndn-cpp/publisher-public-key-digest.hpp b/include/ndn-cpp/publisher-public-key-digest.hpp
similarity index 90%
rename from ndn-cpp/publisher-public-key-digest.hpp
rename to include/ndn-cpp/publisher-public-key-digest.hpp
index 8069fa0..ad60ef4 100644
--- a/ndn-cpp/publisher-public-key-digest.hpp
+++ b/include/ndn-cpp/publisher-public-key-digest.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -9,7 +10,9 @@
 
 #include <vector>
 #include "common.hpp"
-#include "c/publisher-public-key-digest.h"
+#include "util/blob.hpp"
+
+struct ndn_PublisherPublicKeyDigest;
 
 namespace ndn {
   
@@ -28,20 +31,14 @@
    * @param publisherPublicKeyDigestStruct a C ndn_PublisherPublicKeyDigest struct to receive the pointer
    */
   void 
-  get(struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct) const 
-  {
-    publisherPublicKeyDigest_.get(publisherPublicKeyDigestStruct.publisherPublicKeyDigest);
-  }
+  get(struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct) const;
   
   /**
    * Clear this PublisherPublicKeyDigest, and copy from the ndn_PublisherPublicKeyDigest struct.
    * @param excludeStruct a C ndn_Exclude struct
    */
   void 
-  set(const struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct) 
-  {
-    publisherPublicKeyDigest_ = Blob(publisherPublicKeyDigestStruct.publisherPublicKeyDigest);
-  }
+  set(const struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct);
 
   const Blob& 
   getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_; }
diff --git a/ndn-cpp/security/certificate/certificate.hpp b/include/ndn-cpp/security/certificate/certificate.hpp
similarity index 100%
rename from ndn-cpp/security/certificate/certificate.hpp
rename to include/ndn-cpp/security/certificate/certificate.hpp
diff --git a/ndn-cpp/security/certificate/oid.hpp b/include/ndn-cpp/security/certificate/oid.hpp
similarity index 100%
rename from ndn-cpp/security/certificate/oid.hpp
rename to include/ndn-cpp/security/certificate/oid.hpp
diff --git a/ndn-cpp/security/certificate/public-key.hpp b/include/ndn-cpp/security/certificate/public-key.hpp
similarity index 100%
rename from ndn-cpp/security/certificate/public-key.hpp
rename to include/ndn-cpp/security/certificate/public-key.hpp
diff --git a/ndn-cpp/security/encryption/encryption-manager.hpp b/include/ndn-cpp/security/encryption/encryption-manager.hpp
similarity index 100%
rename from ndn-cpp/security/encryption/encryption-manager.hpp
rename to include/ndn-cpp/security/encryption/encryption-manager.hpp
diff --git a/ndn-cpp/security/identity/basic-identity-storage.hpp b/include/ndn-cpp/security/identity/basic-identity-storage.hpp
similarity index 100%
rename from ndn-cpp/security/identity/basic-identity-storage.hpp
rename to include/ndn-cpp/security/identity/basic-identity-storage.hpp
diff --git a/ndn-cpp/security/identity/identity-manager.hpp b/include/ndn-cpp/security/identity/identity-manager.hpp
similarity index 98%
rename from ndn-cpp/security/identity/identity-manager.hpp
rename to include/ndn-cpp/security/identity/identity-manager.hpp
index c53607f..08f0434 100644
--- a/ndn-cpp/security/identity/identity-manager.hpp
+++ b/include/ndn-cpp/security/identity/identity-manager.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Yingdi Yu <yingdi@cs.ucla.edu>
diff --git a/ndn-cpp/security/identity/identity-storage.hpp b/include/ndn-cpp/security/identity/identity-storage.hpp
similarity index 100%
rename from ndn-cpp/security/identity/identity-storage.hpp
rename to include/ndn-cpp/security/identity/identity-storage.hpp
diff --git a/ndn-cpp/security/identity/memory-identity-storage.hpp b/include/ndn-cpp/security/identity/memory-identity-storage.hpp
similarity index 100%
rename from ndn-cpp/security/identity/memory-identity-storage.hpp
rename to include/ndn-cpp/security/identity/memory-identity-storage.hpp
diff --git a/ndn-cpp/security/identity/memory-private-key-storage.hpp b/include/ndn-cpp/security/identity/memory-private-key-storage.hpp
similarity index 100%
rename from ndn-cpp/security/identity/memory-private-key-storage.hpp
rename to include/ndn-cpp/security/identity/memory-private-key-storage.hpp
diff --git a/ndn-cpp/security/identity/osx-private-key-storage.hpp b/include/ndn-cpp/security/identity/osx-private-key-storage.hpp
similarity index 100%
rename from ndn-cpp/security/identity/osx-private-key-storage.hpp
rename to include/ndn-cpp/security/identity/osx-private-key-storage.hpp
diff --git a/ndn-cpp/security/identity/private-key-storage.hpp b/include/ndn-cpp/security/identity/private-key-storage.hpp
similarity index 97%
rename from ndn-cpp/security/identity/private-key-storage.hpp
rename to include/ndn-cpp/security/identity/private-key-storage.hpp
index 0ff0077..8917c92 100644
--- a/ndn-cpp/security/identity/private-key-storage.hpp
+++ b/include/ndn-cpp/security/identity/private-key-storage.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Yingdi Yu <yingdi@cs.ucla.edu>
diff --git a/ndn-cpp/security/key-chain.hpp b/include/ndn-cpp/security/key-chain.hpp
similarity index 99%
rename from ndn-cpp/security/key-chain.hpp
rename to include/ndn-cpp/security/key-chain.hpp
index 7114e4e..97db9d8 100644
--- a/ndn-cpp/security/key-chain.hpp
+++ b/include/ndn-cpp/security/key-chain.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/security/policy/no-verify-policy-manager.hpp b/include/ndn-cpp/security/policy/no-verify-policy-manager.hpp
similarity index 100%
rename from ndn-cpp/security/policy/no-verify-policy-manager.hpp
rename to include/ndn-cpp/security/policy/no-verify-policy-manager.hpp
diff --git a/ndn-cpp/security/policy/policy-manager.hpp b/include/ndn-cpp/security/policy/policy-manager.hpp
similarity index 100%
rename from ndn-cpp/security/policy/policy-manager.hpp
rename to include/ndn-cpp/security/policy/policy-manager.hpp
diff --git a/ndn-cpp/security/security-common.hpp b/include/ndn-cpp/security/security-common.hpp
similarity index 100%
rename from ndn-cpp/security/security-common.hpp
rename to include/ndn-cpp/security/security-common.hpp
diff --git a/ndn-cpp/security/security-exception.hpp b/include/ndn-cpp/security/security-exception.hpp
similarity index 100%
rename from ndn-cpp/security/security-exception.hpp
rename to include/ndn-cpp/security/security-exception.hpp
diff --git a/ndn-cpp/sha256-with-rsa-signature.hpp b/include/ndn-cpp/sha256-with-rsa-signature.hpp
similarity index 97%
rename from ndn-cpp/sha256-with-rsa-signature.hpp
rename to include/ndn-cpp/sha256-with-rsa-signature.hpp
index 2d5c4ce..25eb6ae 100644
--- a/ndn-cpp/sha256-with-rsa-signature.hpp
+++ b/include/ndn-cpp/sha256-with-rsa-signature.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/transport/tcp-transport.hpp b/include/ndn-cpp/transport/tcp-transport.hpp
similarity index 88%
rename from ndn-cpp/transport/tcp-transport.hpp
rename to include/ndn-cpp/transport/tcp-transport.hpp
index e6c2a73..ce7e697 100644
--- a/ndn-cpp/transport/tcp-transport.hpp
+++ b/include/ndn-cpp/transport/tcp-transport.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,10 +9,12 @@
 #define NDN_TCPTRANSPORT_HPP
 
 #include <string>
-#include "../c/transport/tcp-transport.h"
-#include "../c/encoding/binary-xml-element-reader.h"
+#include "../common.hpp"
 #include "transport.hpp"
 
+struct ndn_TcpTransport;
+struct ndn_BinaryXmlElementReader;
+
 namespace ndn {
   
 class TcpTransport : public Transport {
@@ -53,12 +56,7 @@
     unsigned short port_;
   };
 
-  TcpTransport() 
-  : elementListener_(0), isConnected_(false)
-  {
-    ndn_TcpTransport_initialize(&transport_);
-    elementReader_.partialData.array = 0;
-  }
+  TcpTransport();
   
   /**
    * Connect according to the info in ConnectionInfo, and processEvents() will use elementListener.
@@ -93,11 +91,11 @@
   ~TcpTransport();
   
 private:
-  struct ndn_TcpTransport transport_;
+  ptr_lib::shared_ptr<struct ndn_TcpTransport> transport_;
   bool isConnected_;
   ElementListener *elementListener_;
   // TODO: This belongs in the socket listener.
-  ndn_BinaryXmlElementReader elementReader_;
+  ptr_lib::shared_ptr<struct ndn_BinaryXmlElementReader> elementReader_;
 };
 
 }
diff --git a/ndn-cpp/transport/transport.hpp b/include/ndn-cpp/transport/transport.hpp
similarity index 96%
rename from ndn-cpp/transport/transport.hpp
rename to include/ndn-cpp/transport/transport.hpp
index 512a003..3be3dd3 100644
--- a/ndn-cpp/transport/transport.hpp
+++ b/include/ndn-cpp/transport/transport.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/transport/udp-transport.hpp b/include/ndn-cpp/transport/udp-transport.hpp
similarity index 88%
rename from ndn-cpp/transport/udp-transport.hpp
rename to include/ndn-cpp/transport/udp-transport.hpp
index a7a40b1..6d83345 100644
--- a/ndn-cpp/transport/udp-transport.hpp
+++ b/include/ndn-cpp/transport/udp-transport.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,10 +9,12 @@
 #define NDN_UDPTRANSPORT_HPP
 
 #include <string>
-#include "../c/transport/udp-transport.h"
-#include "../c/encoding/binary-xml-element-reader.h"
+#include "../common.hpp"
 #include "transport.hpp"
 
+struct ndn_UdpTransport;
+struct ndn_BinaryXmlElementReader;
+
 namespace ndn {
   
 class UdpTransport : public Transport {
@@ -53,12 +56,7 @@
     unsigned short port_;
   };
 
-  UdpTransport() 
-  : elementListener_(0), isConnected_(false)
-  {
-    ndn_UdpTransport_initialize(&transport_);
-    elementReader_.partialData.array = 0;
-  }
+  UdpTransport();
   
   /**
    * Connect according to the info in ConnectionInfo, and processEvents() will use elementListener.
@@ -98,11 +96,11 @@
   ~UdpTransport();
   
 private:
-  struct ndn_UdpTransport transport_;
+  ptr_lib::shared_ptr<struct ndn_UdpTransport> transport_;
   bool isConnected_;
   ElementListener *elementListener_;
   // TODO: This belongs in the socket listener.
-  ndn_BinaryXmlElementReader elementReader_;
+  ptr_lib::shared_ptr<struct ndn_BinaryXmlElementReader> elementReader_;
 };
 
 }
diff --git a/ndn-cpp/util/blob.hpp b/include/ndn-cpp/util/blob.hpp
similarity index 89%
rename from ndn-cpp/util/blob.hpp
rename to include/ndn-cpp/util/blob.hpp
index 2c238a6..af9432d 100644
--- a/ndn-cpp/util/blob.hpp
+++ b/include/ndn-cpp/util/blob.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,7 +9,8 @@
 #define	NDN_BLOB_HPP
 
 #include "../common.hpp"
-#include "../c/util/blob.h"
+
+struct ndn_Blob;
 
 namespace ndn {
 
@@ -56,10 +58,7 @@
    * Create a new Blob with an immutable copy of the array in the given Blob struct.
    * @param blobStruct The C ndn_Blob struct to receive the pointer.
    */
-  Blob(const struct ndn_Blob& blobStruct)
-  : ptr_lib::shared_ptr<const std::vector<uint8_t> >(new std::vector<uint8_t>(blobStruct.value, blobStruct.value + blobStruct.length))
-  {
-  }
+  Blob(const struct ndn_Blob& blobStruct);
   
   /**
    * Create a new Blob to point to an existing byte array.  IMPORTANT: After calling this constructor,
@@ -105,14 +104,7 @@
    * @param blobStruct The C ndn_Blob struct to receive the pointer.
    */
   void 
-  get(struct ndn_Blob& blobStruct) const 
-  {
-    blobStruct.length = size(); 
-    if (size() > 0)
-      blobStruct.value = (uint8_t*)buf();
-    else
-      blobStruct.value = 0;
-  }
+  get(struct ndn_Blob& blobStruct) const;
 };
 
 }
diff --git a/ndn-cpp/util/signed-blob.hpp b/include/ndn-cpp/util/signed-blob.hpp
similarity index 98%
rename from ndn-cpp/util/signed-blob.hpp
rename to include/ndn-cpp/util/signed-blob.hpp
index dd94ae0..7d9c4e1 100644
--- a/ndn-cpp/util/signed-blob.hpp
+++ b/include/ndn-cpp/util/signed-blob.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
diff --git a/ndn-cpp/c/data.h b/ndn-cpp/c/data.h
index e085f79..8d14e05 100644
--- a/ndn-cpp/c/data.h
+++ b/ndn-cpp/c/data.h
@@ -7,6 +7,7 @@
 #ifndef NDN_DATA_H
 #define NDN_DATA_H
 
+#include <ndn-cpp/c/data-types.h>
 #include "name.h"
 #include "publisher-public-key-digest.h"
 #include "key.h"
@@ -41,15 +42,6 @@
   ndn_KeyLocator_initialize(&self->keyLocator, keyNameComponents, maxKeyNameComponents);
 }
 
-typedef enum {
-  ndn_ContentType_DATA = 0,
-  ndn_ContentType_ENCR = 1,
-  ndn_ContentType_GONE = 2,
-  ndn_ContentType_KEY =  3,
-  ndn_ContentType_LINK = 4,
-  ndn_ContentType_NACK = 5
-} ndn_ContentType;
-
 /**
  * An ndn_MetaInfo struct holds the meta info which is signed inside the data packet.
  */
diff --git a/ndn-cpp/c/encoding/binary-xml-decoder.h b/ndn-cpp/c/encoding/binary-xml-decoder.h
index 3e16497..38fd450 100644
--- a/ndn-cpp/c/encoding/binary-xml-decoder.h
+++ b/ndn-cpp/c/encoding/binary-xml-decoder.h
@@ -7,7 +7,7 @@
 #ifndef NDN_BINARYXMLDECODER_H
 #define NDN_BINARYXMLDECODER_H
 
-#include "../common.h"
+#include <ndn-cpp/c/common.h>
 #include "../errors.h"
 #include "../util/blob.h"
 
diff --git a/ndn-cpp/c/encoding/binary-xml-element-reader.h b/ndn-cpp/c/encoding/binary-xml-element-reader.h
index c2b3777..89f8c8d 100644
--- a/ndn-cpp/c/encoding/binary-xml-element-reader.h
+++ b/ndn-cpp/c/encoding/binary-xml-element-reader.h
@@ -4,9 +4,10 @@
  * See COPYING for copyright and distribution information.
  */
 
-#ifndef NDN_BINARYXMLELEMENTREADER_H
-#define NDN_BINARYXMLELEMENTREADER_H
+#ifndef NDN_BINARY_XML_ELEMENT_READER_H
+#define NDN_BINARY_XML_ELEMENT_READER_H
 
+#include <ndn-cpp/c/encoding/element-listener.h>
 #include "../errors.h"
 #include "binary-xml-structure-decoder.h"
 #include "../util/dynamic-uint8-array.h"
@@ -14,25 +15,6 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-
-/** An ndn_ElementListener struct holds a function pointer onReceivedElement.  You can extend this struct with data that
- * will be passed to onReceivedElement.
- */
-struct ndn_ElementListener {
-  void (*onReceivedElement)(struct ndn_ElementListener *self, uint8_t *element, size_t elementLength); /**< see ndn_ElementListener_initialize */
-};
-
-/**
- * Initialize an ndn_ElementListener struct to use the onReceivedElement function pointer.
- * @param self pointer to the ndn_ElementListener struct
- * @param onReceivedElement pointer to a function which is called when an entire binary XML element is received.
- * self is the pointer to this ndn_ElementListener struct.  See ndn_BinaryXmlElementReader_onReceivedData.
- */
-static inline void ndn_ElementListener_initialize
-  (struct ndn_ElementListener *self, void (*onReceivedElement)(struct ndn_ElementListener *self, uint8_t *element, size_t elementLength))
-{
-  self->onReceivedElement = onReceivedElement;
-}
   
 /**
  * A BinaryXmlElementReader lets you call ndn_BinaryXmlElementReader_onReceivedData multiple times which uses an
diff --git a/ndn-cpp/c/encoding/binary-xml-key.h b/ndn-cpp/c/encoding/binary-xml-key.h
index 6aecd20..391fa72 100644
--- a/ndn-cpp/c/encoding/binary-xml-key.h
+++ b/ndn-cpp/c/encoding/binary-xml-key.h
@@ -7,8 +7,8 @@
 #ifndef NDN_BINARYXMLKEY_H
 #define NDN_BINARYXMLKEY_H
 
-#include "../errors.h"
 #include "../key.h"
+#include "../errors.h"
 #include "binary-xml-encoder.h"
 #include "binary-xml-decoder.h"
 
diff --git a/ndn-cpp/c/encoding/binary-xml-structure-decoder.h b/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
index 63420d2..54a92d5 100644
--- a/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
+++ b/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
@@ -7,7 +7,7 @@
 #ifndef NDN_BINARYXMLSTRUCTUREDECODER_H
 #define NDN_BINARYXMLSTRUCTUREDECODER_H
 
-#include "../common.h"
+#include <ndn-cpp/c/common.h>
 #include "../errors.h"
 
 #ifdef __cplusplus
diff --git a/ndn-cpp/c/forwarding-entry.h b/ndn-cpp/c/forwarding-entry.h
index 001fabc..48bbf5e 100644
--- a/ndn-cpp/c/forwarding-entry.h
+++ b/ndn-cpp/c/forwarding-entry.h
@@ -7,10 +7,10 @@
 #ifndef NDN_FORWARDING_ENTRY_H
 #define NDN_FORWARDING_ENTRY_H
 
-#include "common.h"
+#include <ndn-cpp/c/common.h>
+#include <ndn-cpp/c/forwarding-flags.h>
 #include "name.h"
 #include "publisher-public-key-digest.h"
-#include "forwarding-flags.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/ndn-cpp/c/forwarding-flags.c b/ndn-cpp/c/forwarding-flags.c
index e7477ed..4a7510d 100644
--- a/ndn-cpp/c/forwarding-flags.c
+++ b/ndn-cpp/c/forwarding-flags.c
@@ -5,7 +5,6 @@
  */
 
 #include "forwarding-entry.h"
-#include "forwarding-flags.h"
 
 void ndn_ForwardingFlags_initialize(struct ndn_ForwardingFlags *self)
 {
diff --git a/ndn-cpp/c/interest.h b/ndn-cpp/c/interest.h
index 69428ac..12ca38e 100644
--- a/ndn-cpp/c/interest.h
+++ b/ndn-cpp/c/interest.h
@@ -7,6 +7,7 @@
 #ifndef NDN_INTEREST_H
 #define NDN_INTEREST_H
 
+#include <ndn-cpp/c/interest-types.h>
 #include "name.h"
 #include "publisher-public-key-digest.h"
 
@@ -14,11 +15,6 @@
 extern "C" {
 #endif
 
-typedef enum {
-  ndn_Exclude_COMPONENT = 0,
-  ndn_Exclude_ANY = 1  
-} ndn_ExcludeType;
-
 /**
  * An ndn_ExcludeEntry holds an ndn_ExcludeType, and if it is a COMPONENT, it holds a pointer to the component value.
  */
diff --git a/ndn-cpp/c/key.h b/ndn-cpp/c/key.h
index a933489..b7f8751 100644
--- a/ndn-cpp/c/key.h
+++ b/ndn-cpp/c/key.h
@@ -7,25 +7,13 @@
 #ifndef NDN_KEY_H
 #define NDN_KEY_H
 
+#include <ndn-cpp/c/key-types.h>
 #include "name.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-typedef enum {
-  ndn_KeyLocatorType_KEY = 1,
-  ndn_KeyLocatorType_CERTIFICATE = 2,
-  ndn_KeyLocatorType_KEYNAME = 3
-} ndn_KeyLocatorType;
-
-typedef enum {
-  ndn_KeyNameType_PUBLISHER_PUBLIC_KEY_DIGEST = 1,
-  ndn_KeyNameType_PUBLISHER_CERTIFICATE_DIGEST = 2,
-  ndn_KeyNameType_PUBLISHER_ISSUER_KEY_DIGEST = 3,
-  ndn_KeyNameType_PUBLISHER_ISSUER_CERTIFICATE_DIGEST = 4
-} ndn_KeyNameType;
-
 /**
  * An ndn_KeyLocator holds the type of key locator and related data.
  */
diff --git a/ndn-cpp/c/name.h b/ndn-cpp/c/name.h
index d6badc1..78fcc9c 100644
--- a/ndn-cpp/c/name.h
+++ b/ndn-cpp/c/name.h
@@ -7,6 +7,7 @@
 #ifndef NDN_NAME_H
 #define NDN_NAME_H
 
+#include <ndn-cpp/c/common.h>
 #include "errors.h"
 #include "util/blob.h"
 
diff --git a/ndn-cpp/c/publisher-public-key-digest.h b/ndn-cpp/c/publisher-public-key-digest.h
index 85891bf..95faf1d 100644
--- a/ndn-cpp/c/publisher-public-key-digest.h
+++ b/ndn-cpp/c/publisher-public-key-digest.h
@@ -7,7 +7,7 @@
 #ifndef NDN_PUBLISHERPUBLICKEYDIGEST_H
 #define NDN_PUBLISHERPUBLICKEYDIGEST_H
 
-#include "common.h"
+#include <ndn-cpp/c/common.h>
 #include "util/blob.h"
 
 #ifdef __cplusplus
diff --git a/ndn-cpp/c/transport/socket-transport.h b/ndn-cpp/c/transport/socket-transport.h
index b0a0979..85e297e 100644
--- a/ndn-cpp/c/transport/socket-transport.h
+++ b/ndn-cpp/c/transport/socket-transport.h
@@ -8,7 +8,7 @@
 #define NDN_SOCKETTRANSPORT_H
 
 #include <sys/socket.h>
-#include "../common.h"
+#include <ndn-cpp/c/common.h>
 #include "../errors.h"
 
 #ifdef __cplusplus
diff --git a/ndn-cpp/c/util/blob.h b/ndn-cpp/c/util/blob.h
index 06dbce1..18bcd03 100644
--- a/ndn-cpp/c/util/blob.h
+++ b/ndn-cpp/c/util/blob.h
@@ -7,6 +7,8 @@
 #ifndef NDN_BLOB_H
 #define	NDN_BLOB_H
 
+#include <ndn-cpp/c/common.h>
+
 #ifdef	__cplusplus
 extern "C" {
 #endif
diff --git a/ndn-cpp/c/util/crypto.h b/ndn-cpp/c/util/crypto.h
index 5bec549..586108b 100644
--- a/ndn-cpp/c/util/crypto.h
+++ b/ndn-cpp/c/util/crypto.h
@@ -9,7 +9,7 @@
 
 #include <openssl/ssl.h>
 #include <openssl/rsa.h>
-#include "../common.h"
+#include <ndn-cpp/c/common.h>
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/ndn-cpp/c/util/ndn_memory.h b/ndn-cpp/c/util/ndn_memory.h
index 9d23e2d..bdf6341 100644
--- a/ndn-cpp/c/util/ndn_memory.h
+++ b/ndn-cpp/c/util/ndn_memory.h
@@ -11,7 +11,7 @@
 #ifndef NDN_MEMORY_H
 #define NDN_MEMORY_H
 
-#include "../common.h"
+#include <ndn-cpp/c/common.h>
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/ndn-cpp/common.cpp b/ndn-cpp/common.cpp
index fcebfba..ff420f9 100644
--- a/ndn-cpp/common.cpp
+++ b/ndn-cpp/common.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,7 +6,7 @@
  */
 
 #include <sstream>
-#include "common.hpp"
+#include <ndn-cpp/common.hpp>
 
 using namespace std;
 
diff --git a/ndn-cpp/data.cpp b/ndn-cpp/data.cpp
index 98ffde0..6b2f570 100644
--- a/ndn-cpp/data.cpp
+++ b/ndn-cpp/data.cpp
@@ -1,12 +1,14 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#include "common.hpp"
-#include "data.hpp"
-#include "sha256-with-rsa-signature.hpp"
+#include <ndn-cpp/common.hpp>
+#include <ndn-cpp/data.hpp>
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
+#include "c/data.h"
 
 using namespace std;
 
diff --git a/ndn-cpp/encoding/binary-xml-decoder.hpp b/ndn-cpp/encoding/binary-xml-decoder.hpp
index f75d4f0..3e371c3 100644
--- a/ndn-cpp/encoding/binary-xml-decoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-decoder.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/encoding/binary-xml-encoder.hpp b/ndn-cpp/encoding/binary-xml-encoder.hpp
index af495ca..33afb09 100644
--- a/ndn-cpp/encoding/binary-xml-encoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-encoder.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,7 +9,7 @@
 #define NDN_BINARYXMLENCODER_HPP
 
 #include <vector>
-#include "../common.hpp"
+#include <ndn-cpp/common.hpp>
 #include "../util/dynamic-uint8-vector.hpp"
 #include "../c/encoding/binary-xml-encoder.h"
 
diff --git a/ndn-cpp/encoding/binary-xml-structure-decoder.hpp b/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
index e953a1b..9ffd72b 100644
--- a/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
+++ b/ndn-cpp/encoding/binary-xml-structure-decoder.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/encoding/binary-xml-wire-format.cpp b/ndn-cpp/encoding/binary-xml-wire-format.cpp
index adb756a..9bd6759 100644
--- a/ndn-cpp/encoding/binary-xml-wire-format.cpp
+++ b/ndn-cpp/encoding/binary-xml-wire-format.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,15 +6,15 @@
  */
 
 #include <stdexcept>
+#include <ndn-cpp/interest.hpp>
+#include <ndn-cpp/data.hpp>
+#include <ndn-cpp/forwarding-entry.hpp>
+#include <ndn-cpp/encoding/binary-xml-wire-format.hpp>
 #include "../c/encoding/binary-xml-interest.h"
 #include "../c/encoding/binary-xml-data.h"
 #include "../c/encoding/binary-xml-forwarding-entry.h"
-#include "../interest.hpp"
-#include "../data.hpp"
-#include "../forwarding-entry.hpp"
 #include "binary-xml-encoder.hpp"
 #include "binary-xml-decoder.hpp"
-#include "binary-xml-wire-format.hpp"
 
 using namespace std;
 
diff --git a/ndn-cpp/encoding/binary-xml-element-reader.cpp b/ndn-cpp/encoding/element-listener.cpp
similarity index 77%
rename from ndn-cpp/encoding/binary-xml-element-reader.cpp
rename to ndn-cpp/encoding/element-listener.cpp
index 559af7f..58bb875 100644
--- a/ndn-cpp/encoding/binary-xml-element-reader.cpp
+++ b/ndn-cpp/encoding/element-listener.cpp
@@ -1,10 +1,11 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#include "binary-xml-element-reader.hpp"
+#include <ndn-cpp/encoding/element-listener.hpp>
 
 namespace ndn {
 
diff --git a/ndn-cpp/encoding/wire-format.cpp b/ndn-cpp/encoding/wire-format.cpp
index cf7890e..8751d16 100644
--- a/ndn-cpp/encoding/wire-format.cpp
+++ b/ndn-cpp/encoding/wire-format.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,7 +6,7 @@
  */
 
 #include <stdexcept>
-#include "wire-format.hpp"
+#include <ndn-cpp/encoding/wire-format.hpp>
 
 using namespace std;
 
diff --git a/ndn-cpp/face.cpp b/ndn-cpp/face.cpp
index d70023b..b137765 100644
--- a/ndn-cpp/face.cpp
+++ b/ndn-cpp/face.cpp
@@ -1,10 +1,11 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#include "face.hpp"
+#include <ndn-cpp/face.hpp>
 
 using namespace std;
 
diff --git a/ndn-cpp/forwarding-entry.cpp b/ndn-cpp/forwarding-entry.cpp
index 93c4d26..452d39b 100644
--- a/ndn-cpp/forwarding-entry.cpp
+++ b/ndn-cpp/forwarding-entry.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,8 +6,9 @@
  */
 
 #include <stdexcept>
-#include "common.hpp"
-#include "forwarding-entry.hpp"
+#include <ndn-cpp/common.hpp>
+#include <ndn-cpp/forwarding-entry.hpp>
+#include "c/forwarding-entry.h"
 
 using namespace std;
 
diff --git a/ndn-cpp/interest.cpp b/ndn-cpp/interest.cpp
index e1a6af7..ceeffcd 100644
--- a/ndn-cpp/interest.cpp
+++ b/ndn-cpp/interest.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,14 +6,23 @@
  */
 
 #include <stdexcept>
-#include "common.hpp"
-#include "interest.hpp"
+#include <ndn-cpp/common.hpp>
+#include <ndn-cpp/interest.hpp>
+#include "c/interest.h"
 
 using namespace std;
 
 namespace ndn {
   
 void 
+ExcludeEntry::get(struct ndn_ExcludeEntry& excludeEntryStruct) const 
+{
+  excludeEntryStruct.type = type_;
+  if (type_ == ndn_Exclude_COMPONENT)
+    component_.get(excludeEntryStruct.component);
+}
+
+void 
 Exclude::get(struct ndn_Exclude& excludeStruct) const
 {
   if (excludeStruct.maxEntries < entries_.size())
diff --git a/ndn-cpp/key.cpp b/ndn-cpp/key.cpp
index db3ea58..0cf59ed 100644
--- a/ndn-cpp/key.cpp
+++ b/ndn-cpp/key.cpp
@@ -1,16 +1,18 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#include "common.hpp"
-#include "key.hpp"
+#include <ndn-cpp/common.hpp>
+#include <ndn-cpp/key.hpp>
+#include "c/key.h"
 
 using namespace std;
 
 namespace ndn {
-
+  
 void 
 KeyLocator::get(struct ndn_KeyLocator& keyLocatorStruct) const 
 {
diff --git a/ndn-cpp/name.cpp b/ndn-cpp/name.cpp
index d74142e..4e619cc 100644
--- a/ndn-cpp/name.cpp
+++ b/ndn-cpp/name.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -6,7 +7,8 @@
 
 #include <stdexcept>
 #include <algorithm>
-#include "name.hpp"
+#include <ndn-cpp/name.hpp>
+#include "c/name.h"
 
 using namespace std;
 using namespace ndn::ptr_lib;
@@ -162,6 +164,20 @@
 }
 
 void 
+Name::Component::get(struct ndn_NameComponent& componentStruct) const 
+{
+  value_.get(componentStruct.value);
+}
+
+uint64_t
+Name::Component::toNumber() const
+{
+  struct ndn_NameComponent componentStruct;
+  get(componentStruct);
+  return ndn_NameComponent_toNumber(&componentStruct);
+}
+
+void 
 Name::set(const char *uri_cstr) 
 {
   components_.clear();
diff --git a/ndn-cpp/node.cpp b/ndn-cpp/node.cpp
index 30c0573..c145d50 100644
--- a/ndn-cpp/node.cpp
+++ b/ndn-cpp/node.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -6,13 +7,15 @@
 
 #include <sys/time.h>
 #include <stdexcept>
+#include "c/name.h"
+#include "c/interest.h"
 #include "c/util/crypto.h"
-#include "encoding/binary-xml-decoder.hpp"
 #include "c/encoding/binary-xml.h"
-#include "forwarding-entry.hpp"
-#include "security/key-chain.hpp"
-#include "sha256-with-rsa-signature.hpp"
-#include "node.hpp"
+#include "encoding/binary-xml-decoder.hpp"
+#include <ndn-cpp/forwarding-entry.hpp>
+#include <ndn-cpp/security/key-chain.hpp>
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
+#include <ndn-cpp/node.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
@@ -338,7 +341,8 @@
 
 Node::PendingInterest::PendingInterest
   (uint64_t pendingInterestId, const shared_ptr<const Interest>& interest, const OnData& onData, const OnTimeout& onTimeout)
-: pendingInterestId_(pendingInterestId), interest_(interest), onData_(onData), onTimeout_(onTimeout)
+: pendingInterestId_(pendingInterestId), interest_(interest), onData_(onData), onTimeout_(onTimeout),
+  interestStruct_(new struct ndn_Interest)
 {
   // Set up timeoutTime_.
   if (interest_->getInterestLifetimeMilliseconds() >= 0.0)
@@ -352,8 +356,8 @@
   nameComponents_.reserve(interest_->getName().getComponentCount());
   excludeEntries_.reserve(interest_->getExclude().getEntryCount());
   ndn_Interest_initialize
-    (&interestStruct_, &nameComponents_[0], nameComponents_.capacity(), &excludeEntries_[0], excludeEntries_.capacity());
-  interest_->get(interestStruct_);  
+    (interestStruct_.get(), &nameComponents_[0], nameComponents_.capacity(), &excludeEntries_[0], excludeEntries_.capacity());
+  interest_->get(*interestStruct_);  
 }
 
 bool 
diff --git a/ndn-cpp/publisher-public-key-digest.cpp b/ndn-cpp/publisher-public-key-digest.cpp
new file mode 100644
index 0000000..a0667fa
--- /dev/null
+++ b/ndn-cpp/publisher-public-key-digest.cpp
@@ -0,0 +1,27 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "c/publisher-public-key-digest.h"
+#include <ndn-cpp/publisher-public-key-digest.hpp>
+
+using namespace std;
+
+namespace ndn {
+
+void 
+PublisherPublicKeyDigest::get(struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct) const 
+{
+  publisherPublicKeyDigest_.get(publisherPublicKeyDigestStruct.publisherPublicKeyDigest);
+}
+
+void 
+PublisherPublicKeyDigest::set(const struct ndn_PublisherPublicKeyDigest& publisherPublicKeyDigestStruct) 
+{
+  publisherPublicKeyDigest_ = Blob(publisherPublicKeyDigestStruct.publisherPublicKeyDigest);
+}
+
+}
diff --git a/ndn-cpp/security/certificate/oid.cpp b/ndn-cpp/security/certificate/oid.cpp
index 6ae1942..b03d93e 100644
--- a/ndn-cpp/security/certificate/oid.cpp
+++ b/ndn-cpp/security/certificate/oid.cpp
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <sstream>
 
-#include "oid.hpp"
+#include <ndn-cpp/security/certificate/oid.hpp>
 
 using namespace std;
 
diff --git a/ndn-cpp/security/certificate/public-key.cpp b/ndn-cpp/security/certificate/public-key.cpp
index 3565ac3..cd88f7e 100644
--- a/ndn-cpp/security/certificate/public-key.cpp
+++ b/ndn-cpp/security/certificate/public-key.cpp
@@ -6,9 +6,9 @@
  * See COPYING for copyright and distribution information.
  */
 
-#include "../security-exception.hpp"
+#include <ndn-cpp/security//security-exception.hpp>
 #include "../../c/util/crypto.h"
-#include "public-key.hpp"
+#include <ndn-cpp/security/certificate/public-key.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/identity/basic-identity-storage.cpp b/ndn-cpp/security/identity/basic-identity-storage.cpp
index e383a32..3cad5cc 100644
--- a/ndn-cpp/security/identity/basic-identity-storage.cpp
+++ b/ndn-cpp/security/identity/basic-identity-storage.cpp
@@ -15,9 +15,9 @@
 #include <stdlib.h>
 #include <sstream>
 #include <fstream>
-#include "basic-identity-storage.hpp"
+#include <ndn-cpp/security/identity/basic-identity-storage.hpp>
 #include "../../util/logging.hpp"
-#include "../security-exception.hpp"
+#include <ndn-cpp/security//security-exception.hpp>
 #include "ndn-cpp/data.hpp"
 
 #if 0
diff --git a/ndn-cpp/security/identity/identity-manager.cpp b/ndn-cpp/security/identity/identity-manager.cpp
index e669a20..e07b483 100644
--- a/ndn-cpp/security/identity/identity-manager.cpp
+++ b/ndn-cpp/security/identity/identity-manager.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Yingdi Yu <yingdi@cs.ucla.edu>
@@ -9,9 +10,9 @@
 #include <stdexcept>
 #endif
 #include "../../util/logging.hpp"
-#include "../../sha256-with-rsa-signature.hpp"
-#include "../security-exception.hpp"
-#include "identity-manager.hpp"
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
+#include <ndn-cpp/security/security-exception.hpp>
+#include <ndn-cpp/security/identity/identity-manager.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/identity/memory-identity-storage.cpp b/ndn-cpp/security/identity/memory-identity-storage.cpp
index bc2bd34..97b18f4 100644
--- a/ndn-cpp/security/identity/memory-identity-storage.cpp
+++ b/ndn-cpp/security/identity/memory-identity-storage.cpp
@@ -9,8 +9,8 @@
 #include <stdexcept>
 #endif
 #include <algorithm>
-#include "../security-exception.hpp"
-#include "memory-identity-storage.hpp"
+#include <ndn-cpp/security/security-exception.hpp>
+#include <ndn-cpp/security/identity/memory-identity-storage.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/identity/memory-private-key-storage.cpp b/ndn-cpp/security/identity/memory-private-key-storage.cpp
index af2ac13..09f1c66 100644
--- a/ndn-cpp/security/identity/memory-private-key-storage.cpp
+++ b/ndn-cpp/security/identity/memory-private-key-storage.cpp
@@ -9,8 +9,8 @@
 #include <stdexcept>
 #endif
 #include "../../c/util/crypto.h"
-#include "../security-exception.hpp"
-#include "memory-private-key-storage.hpp"
+#include <ndn-cpp/security/security-exception.hpp>
+#include <ndn-cpp/security/identity/memory-private-key-storage.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/identity/osx-private-key-storage.cpp b/ndn-cpp/security/identity/osx-private-key-storage.cpp
index 5cca7ca..5728ad7 100644
--- a/ndn-cpp/security/identity/osx-private-key-storage.cpp
+++ b/ndn-cpp/security/identity/osx-private-key-storage.cpp
@@ -14,8 +14,8 @@
 #include <CoreFoundation/CoreFoundation.h>
 
 #include "../../util/logging.hpp"
-#include "osx-private-key-storage.hpp"
-#include "../security-exception.hpp"
+#include <ndn-cpp/security/identity/osx-private-key-storage.hpp>
+#include <ndn-cpp/security/security-exception.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/key-chain.cpp b/ndn-cpp/security/key-chain.cpp
index 5bcc4c1..3f47e3e 100644
--- a/ndn-cpp/security/key-chain.cpp
+++ b/ndn-cpp/security/key-chain.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -7,11 +8,11 @@
 #include "../c/util/crypto.h"
 #include "../c/encoding/binary-xml-data.h"
 #include "../encoding/binary-xml-encoder.hpp"
-#include "../sha256-with-rsa-signature.hpp"
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
 #include "../util/logging.hpp"
-#include "policy/policy-manager.hpp"
-#include "security-exception.hpp"
-#include "key-chain.hpp"
+#include <ndn-cpp/security/security-exception.hpp>
+#include <ndn-cpp/security/policy/policy-manager.hpp>
+#include <ndn-cpp/security/key-chain.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/policy/no-verify-policy-manager.cpp b/ndn-cpp/security/policy/no-verify-policy-manager.cpp
index 172845e..e49ae75 100644
--- a/ndn-cpp/security/policy/no-verify-policy-manager.cpp
+++ b/ndn-cpp/security/policy/no-verify-policy-manager.cpp
@@ -6,7 +6,7 @@
  * See COPYING for copyright and distribution information.
  */
 
-#include "no-verify-policy-manager.hpp"
+#include <ndn-cpp/security/policy/no-verify-policy-manager.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/security/security-exception.cpp b/ndn-cpp/security/security-exception.cpp
index b4bbd22..b4acfad 100644
--- a/ndn-cpp/security/security-exception.cpp
+++ b/ndn-cpp/security/security-exception.cpp
@@ -6,7 +6,7 @@
  * See COPYING for copyright and distribution information.
  */
 
-#include "security-exception.hpp"
+#include <ndn-cpp/security/security-exception.hpp>
 using namespace std;
 
 namespace ndn {
diff --git a/ndn-cpp/sha256-with-rsa-signature.cpp b/ndn-cpp/sha256-with-rsa-signature.cpp
index 3153551..bf4dfa6 100644
--- a/ndn-cpp/sha256-with-rsa-signature.cpp
+++ b/ndn-cpp/sha256-with-rsa-signature.cpp
@@ -1,10 +1,12 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
  * See COPYING for copyright and distribution information.
  */
 
-#include "sha256-with-rsa-signature.hpp"
+#include "c/data.h"
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
 
 using namespace std;
 using namespace ndn::ptr_lib;
diff --git a/ndn-cpp/transport/tcp-transport.cpp b/ndn-cpp/transport/tcp-transport.cpp
index 9a712fb..cb8c1e6 100644
--- a/ndn-cpp/transport/tcp-transport.cpp
+++ b/ndn-cpp/transport/tcp-transport.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,9 +6,11 @@
  */
 
 #include <stdexcept>
-#include "../node.hpp"
+#include <ndn-cpp/node.hpp>
+#include "../c/transport/tcp-transport.h"
+#include "../c/encoding/binary-xml-element-reader.h"
 #include "../c/util/ndn_realloc.h"
-#include "tcp-transport.hpp"
+#include <ndn-cpp/transport/tcp-transport.hpp>
 
 using namespace std;
 
@@ -17,20 +20,27 @@
 {  
 }
 
+TcpTransport::TcpTransport() 
+  : elementListener_(0), isConnected_(false), transport_(new struct ndn_TcpTransport), elementReader_(new struct ndn_BinaryXmlElementReader)
+{
+  ndn_TcpTransport_initialize(transport_.get());
+  elementReader_->partialData.array = 0;
+}
+
 void 
 TcpTransport::connect(const Transport::ConnectionInfo& connectionInfo, ElementListener& elementListener)
 {
   const TcpTransport::ConnectionInfo& tcpConnectionInfo = dynamic_cast<const TcpTransport::ConnectionInfo&>(connectionInfo);
   
   ndn_Error error;
-  if ((error = ndn_TcpTransport_connect(&transport_, (char *)tcpConnectionInfo.getHost().c_str(), tcpConnectionInfo.getPort())))
+  if ((error = ndn_TcpTransport_connect(transport_.get(), (char *)tcpConnectionInfo.getHost().c_str(), tcpConnectionInfo.getPort())))
     throw std::runtime_error(ndn_getErrorString(error)); 
 
   // TODO: This belongs in the socket listener.
   const size_t initialLength = 1000;
   // Automatically cast elementReader_ to (struct ndn_ElementListener *)
   ndn_BinaryXmlElementReader_initialize
-    (&elementReader_, &elementListener, (uint8_t *)malloc(initialLength), initialLength, ndn_realloc);
+    (elementReader_.get(), &elementListener, (uint8_t *)malloc(initialLength), initialLength, ndn_realloc);
   
   isConnected_ = true;
   elementListener_ = &elementListener;
@@ -40,7 +50,7 @@
 TcpTransport::send(const uint8_t *data, size_t dataLength)
 {
   ndn_Error error;
-  if ((error = ndn_TcpTransport_send(&transport_, (uint8_t *)data, dataLength)))
+  if ((error = ndn_TcpTransport_send(transport_.get(), (uint8_t *)data, dataLength)))
     throw std::runtime_error(ndn_getErrorString(error));  
 }
 
@@ -49,17 +59,17 @@
 {
   int receiveIsReady;
   ndn_Error error;
-  if ((error = ndn_TcpTransport_receiveIsReady(&transport_, &receiveIsReady)))
+  if ((error = ndn_TcpTransport_receiveIsReady(transport_.get(), &receiveIsReady)))
     throw std::runtime_error(ndn_getErrorString(error));  
   if (!receiveIsReady)
     return;
 
   uint8_t buffer[8000];
   size_t nBytes;
-  if ((error = ndn_TcpTransport_receive(&transport_, buffer, sizeof(buffer), &nBytes)))
+  if ((error = ndn_TcpTransport_receive(transport_.get(), buffer, sizeof(buffer), &nBytes)))
     throw std::runtime_error(ndn_getErrorString(error));  
 
-  ndn_BinaryXmlElementReader_onReceivedData(&elementReader_, buffer, nBytes);
+  ndn_BinaryXmlElementReader_onReceivedData(elementReader_.get(), buffer, nBytes);
 }
 
 bool 
@@ -72,15 +82,15 @@
 TcpTransport::close()
 {
   ndn_Error error;
-  if ((error = ndn_TcpTransport_close(&transport_)))
+  if ((error = ndn_TcpTransport_close(transport_.get())))
     throw std::runtime_error(ndn_getErrorString(error));  
 }
 
 TcpTransport::~TcpTransport()
 {
-  if (elementReader_.partialData.array)
+  if (elementReader_->partialData.array)
     // Free the memory allocated in connect.
-    free(elementReader_.partialData.array);
+    free(elementReader_->partialData.array);
 }
 
 }
diff --git a/ndn-cpp/transport/transport.cpp b/ndn-cpp/transport/transport.cpp
index b36b119..0dcf518 100644
--- a/ndn-cpp/transport/transport.cpp
+++ b/ndn-cpp/transport/transport.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,7 +6,7 @@
  */
 
 #include <stdexcept>
-#include "transport.hpp"
+#include <ndn-cpp/transport/transport.hpp>
 
 using namespace std;
 
diff --git a/ndn-cpp/transport/udp-transport.cpp b/ndn-cpp/transport/udp-transport.cpp
index 4e65375..17250d4 100644
--- a/ndn-cpp/transport/udp-transport.cpp
+++ b/ndn-cpp/transport/udp-transport.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -5,9 +6,11 @@
  */
 
 #include <stdexcept>
-#include "../face.hpp"
+#include <ndn-cpp/face.hpp>
+#include "../c/transport/udp-transport.h"
+#include "../c/encoding/binary-xml-element-reader.h"
 #include "../c/util/ndn_realloc.h"
-#include "udp-transport.hpp"
+#include <ndn-cpp/transport/udp-transport.hpp>
 
 using namespace std;
 
@@ -17,20 +20,27 @@
 {  
 }
 
+UdpTransport::UdpTransport() 
+  : elementListener_(0), isConnected_(false), transport_(new struct ndn_UdpTransport), elementReader_(new struct ndn_BinaryXmlElementReader)
+{
+  ndn_UdpTransport_initialize(transport_.get());
+  elementReader_->partialData.array = 0;
+}
+
 void 
 UdpTransport::connect(const Transport::ConnectionInfo& connectionInfo, ElementListener& elementListener)
 {
   const UdpTransport::ConnectionInfo& udpConnectionInfo = dynamic_cast<const UdpTransport::ConnectionInfo&>(connectionInfo);
   
   ndn_Error error;
-  if ((error = ndn_UdpTransport_connect(&transport_, (char *)udpConnectionInfo.getHost().c_str(), udpConnectionInfo.getPort())))
+  if ((error = ndn_UdpTransport_connect(transport_.get(), (char *)udpConnectionInfo.getHost().c_str(), udpConnectionInfo.getPort())))
     throw std::runtime_error(ndn_getErrorString(error)); 
 
   // TODO: This belongs in the socket listener.
   const size_t initialLength = 1000;
   // Automatically cast elementReader_ to (struct ndn_ElementListener *)
   ndn_BinaryXmlElementReader_initialize
-    (&elementReader_, &elementListener, (uint8_t *)malloc(initialLength), initialLength, ndn_realloc);
+    (elementReader_.get(), &elementListener, (uint8_t *)malloc(initialLength), initialLength, ndn_realloc);
   
   isConnected_ = true;
   elementListener_ = &elementListener;
@@ -40,7 +50,7 @@
 UdpTransport::send(const uint8_t *data, size_t dataLength)
 {
   ndn_Error error;
-  if ((error = ndn_UdpTransport_send(&transport_, (uint8_t *)data, dataLength)))
+  if ((error = ndn_UdpTransport_send(transport_.get(), (uint8_t *)data, dataLength)))
     throw std::runtime_error(ndn_getErrorString(error));  
 }
 
@@ -49,17 +59,17 @@
 {
   int receiveIsReady;
   ndn_Error error;
-  if ((error = ndn_UdpTransport_receiveIsReady(&transport_, &receiveIsReady)))
+  if ((error = ndn_UdpTransport_receiveIsReady(transport_.get(), &receiveIsReady)))
     throw std::runtime_error(ndn_getErrorString(error));  
   if (!receiveIsReady)
     return;
 
   uint8_t buffer[8000];
   size_t nBytes;
-  if ((error = ndn_UdpTransport_receive(&transport_, buffer, sizeof(buffer), &nBytes)))
+  if ((error = ndn_UdpTransport_receive(transport_.get(), buffer, sizeof(buffer), &nBytes)))
     throw std::runtime_error(ndn_getErrorString(error));  
 
-  ndn_BinaryXmlElementReader_onReceivedData(&elementReader_, buffer, nBytes);
+  ndn_BinaryXmlElementReader_onReceivedData(elementReader_.get(), buffer, nBytes);
 }
 
 bool 
@@ -72,15 +82,15 @@
 UdpTransport::close()
 {
   ndn_Error error;
-  if ((error = ndn_UdpTransport_close(&transport_)))
+  if ((error = ndn_UdpTransport_close(transport_.get())))
     throw std::runtime_error(ndn_getErrorString(error));  
 }
 
 UdpTransport::~UdpTransport()
 {
-  if (elementReader_.partialData.array)
+  if (elementReader_->partialData.array)
     // Free the memory allocated in connect.
-    free(elementReader_.partialData.array);
+    free(elementReader_->partialData.array);
 }
 
 }
diff --git a/ndn-cpp/util/blob.cpp b/ndn-cpp/util/blob.cpp
new file mode 100644
index 0000000..4ce9598
--- /dev/null
+++ b/ndn-cpp/util/blob.cpp
@@ -0,0 +1,30 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "../c/util/blob.h"
+#include <ndn-cpp/util/blob.hpp>
+
+using namespace std;
+
+namespace ndn {
+
+Blob::Blob(const struct ndn_Blob& blobStruct)
+  : ptr_lib::shared_ptr<const std::vector<uint8_t> >(new std::vector<uint8_t>(blobStruct.value, blobStruct.value + blobStruct.length))
+{
+}
+
+void 
+Blob::get(struct ndn_Blob& blobStruct) const 
+{
+  blobStruct.length = size(); 
+  if (size() > 0)
+    blobStruct.value = (uint8_t*)buf();
+  else
+    blobStruct.value = 0;
+}
+
+}
diff --git a/ndn-cpp/util/changed-event.cpp b/ndn-cpp/util/changed-event.cpp
index 63b4569..08dcb98 100644
--- a/ndn-cpp/util/changed-event.cpp
+++ b/ndn-cpp/util/changed-event.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/util/changed-event.hpp b/ndn-cpp/util/changed-event.hpp
index ce4b20f..71be366 100644
--- a/ndn-cpp/util/changed-event.hpp
+++ b/ndn-cpp/util/changed-event.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,7 +9,7 @@
 #define	NDN_CHANGED_EVENT_HPP
 
 #include <vector>
-#include "../common.hpp"
+#include <ndn-cpp/common.hpp>
 
 namespace ndn {
 
diff --git a/ndn-cpp/util/dynamic-uint8-vector.cpp b/ndn-cpp/util/dynamic-uint8-vector.cpp
index ae1b621..197fc0e 100644
--- a/ndn-cpp/util/dynamic-uint8-vector.cpp
+++ b/ndn-cpp/util/dynamic-uint8-vector.cpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
diff --git a/ndn-cpp/util/dynamic-uint8-vector.hpp b/ndn-cpp/util/dynamic-uint8-vector.hpp
index 9550899..b69606d 100644
--- a/ndn-cpp/util/dynamic-uint8-vector.hpp
+++ b/ndn-cpp/util/dynamic-uint8-vector.hpp
@@ -1,3 +1,4 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /**
  * Copyright (C) 2013 Regents of the University of California.
  * @author: Jeff Thompson <jefft0@remap.ucla.edu>
@@ -8,7 +9,7 @@
 #define NDN_DYNAMIC_UCHAR_VECTOR_HPP
 
 #include <vector>
-#include "../common.hpp"
+#include <ndn-cpp/common.hpp>
 #include "../c/util/dynamic-uint8-array.h"
 
 namespace ndn {
diff --git a/ndn-cpp/util/logging.hpp b/ndn-cpp/util/logging.hpp
index 87d9ad5..f1afe72 100644
--- a/ndn-cpp/util/logging.hpp
+++ b/ndn-cpp/util/logging.hpp
@@ -9,7 +9,7 @@
 #ifndef NDN_LOGGING_HPP
 #define	NDN_LOGGING_HPP
 
-#include "../common.hpp"
+#include <ndn-cpp//common.hpp>
 
 #ifdef NDN_CPP_HAVE_LOG4CXX
 
diff --git a/tests/test-encode-decode-data.cpp b/tests/test-encode-decode-data.cpp
index f5e46f6..078e31c 100644
--- a/tests/test-encode-decode-data.cpp
+++ b/tests/test-encode-decode-data.cpp
@@ -9,12 +9,12 @@
 #include <iostream>
 #include <time.h>
 #include <stdint.h>
-#include "../ndn-cpp/data.hpp"
-#include "../ndn-cpp/security/identity/memory-identity-storage.hpp"
-#include "../ndn-cpp/security/identity/memory-private-key-storage.hpp"
-#include "../ndn-cpp/security/policy/no-verify-policy-manager.hpp"
-#include "../ndn-cpp/security/key-chain.hpp"
-#include "../ndn-cpp/sha256-with-rsa-signature.hpp"
+#include <ndn-cpp/data.hpp>
+#include <ndn-cpp/security/identity/memory-identity-storage.hpp>
+#include <ndn-cpp/security/identity/memory-private-key-storage.hpp>
+#include <ndn-cpp/security/policy/no-verify-policy-manager.hpp>
+#include <ndn-cpp/security/key-chain.hpp>
+#include <ndn-cpp/sha256-with-rsa-signature.hpp>
 
 using namespace std;
 using namespace ndn;
diff --git a/tests/test-encode-decode-forwarding-entry.cpp b/tests/test-encode-decode-forwarding-entry.cpp
index 152b79f..7f998fe 100644
--- a/tests/test-encode-decode-forwarding-entry.cpp
+++ b/tests/test-encode-decode-forwarding-entry.cpp
@@ -7,10 +7,10 @@
 #include <cstdlib>
 #include <sstream>
 #include <iostream>
-#include "../ndn-cpp/interest.hpp"
-#include "../ndn-cpp/data.hpp"
-#include "../ndn-cpp/forwarding-entry.hpp"
-#include "../ndn-cpp/security/key-chain.hpp"
+#include <ndn-cpp/interest.hpp>
+#include <ndn-cpp/data.hpp>
+#include <ndn-cpp/forwarding-entry.hpp>
+#include <ndn-cpp/security/key-chain.hpp>
 
 using namespace std;
 using namespace ndn;
diff --git a/tests/test-encode-decode-interest.cpp b/tests/test-encode-decode-interest.cpp
index 9281569..4065db0 100644
--- a/tests/test-encode-decode-interest.cpp
+++ b/tests/test-encode-decode-interest.cpp
@@ -7,7 +7,7 @@
 #include <cstdlib>
 #include <sstream>
 #include <iostream>
-#include "../ndn-cpp/interest.hpp"
+#include <ndn-cpp/interest.hpp>
 
 using namespace std;
 using namespace ndn;
diff --git a/tests/test-get-async.cpp b/tests/test-get-async.cpp
index 536e164..9cdf28a 100644
--- a/tests/test-get-async.cpp
+++ b/tests/test-get-async.cpp
@@ -7,7 +7,7 @@
 #include <cstdlib>
 #include <sstream>
 #include <iostream>
-#include "../ndn-cpp/face.hpp"
+#include <ndn-cpp/face.hpp>
 
 using namespace std;
 using namespace ndn;
diff --git a/tests/test-publish-async.cpp b/tests/test-publish-async.cpp
index 27797cc..53163b4 100644
--- a/tests/test-publish-async.cpp
+++ b/tests/test-publish-async.cpp
@@ -8,11 +8,11 @@
 #include <sstream>
 #include <iostream>
 #include <time.h>
-#include "../ndn-cpp/face.hpp"
-#include "../ndn-cpp/security/identity/memory-identity-storage.hpp"
-#include "../ndn-cpp/security/identity/memory-private-key-storage.hpp"
-#include "../ndn-cpp/security/policy/no-verify-policy-manager.hpp"
-#include "../ndn-cpp/security/key-chain.hpp"
+#include <ndn-cpp/face.hpp>
+#include <ndn-cpp/security/identity/memory-identity-storage.hpp>
+#include <ndn-cpp/security/identity/memory-private-key-storage.hpp>
+#include <ndn-cpp/security/policy/no-verify-policy-manager.hpp>
+#include <ndn-cpp/security/key-chain.hpp>
 
 using namespace std;
 using namespace ndn;