diff --git a/ndn-cpp/transport/TcpTransport.hpp b/ndn-cpp/transport/TcpTransport.hpp
new file mode 100644
index 0000000..a8a354e
--- /dev/null
+++ b/ndn-cpp/transport/TcpTransport.hpp
@@ -0,0 +1,33 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_TCPTRANSPORT_HPP
+#define	NDN_TCPTRANSPORT_HPP
+
+#include "../c/transport/TcpTransport.h"
+#include "Transport.hpp"
+
+namespace ndn {
+  
+class TcpTransport : public Transport {
+public:
+  TcpTransport() 
+  {
+    ndn_TcpTransport_init(&transport_);
+  }
+  
+  virtual void connect(char *host, unsigned short port);
+  
+  virtual void send(unsigned char *data, unsigned int dataLength);
+
+  virtual unsigned int receive(unsigned char *buffer, unsigned int bufferLength);
+  
+private:
+  struct ndn_TcpTransport transport_;
+};
+
+}
+
+#endif
diff --git a/ndn-cpp/transport/TcpTransport2.cpp b/ndn-cpp/transport/TcpTransport2.cpp
new file mode 100644
index 0000000..7a3a190
--- /dev/null
+++ b/ndn-cpp/transport/TcpTransport2.cpp
@@ -0,0 +1,37 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include <stdexcept>
+#include "TcpTransport.hpp"
+
+using namespace std;
+
+namespace ndn {
+
+void TcpTransport::connect(char *host, unsigned short port)
+{
+  ndn_Error error;
+  if (error = ndn_TcpTransport_connect(&transport_, host, port))
+    throw std::runtime_error(ndn_getErrorString(error));  
+}
+
+void TcpTransport::send(unsigned char *data, unsigned int dataLength)
+{
+  ndn_Error error;
+  if (error = ndn_TcpTransport_send(&transport_, data, dataLength))
+    throw std::runtime_error(ndn_getErrorString(error));  
+}
+
+unsigned int TcpTransport::receive(unsigned char *buffer, unsigned int bufferLength)
+{
+  ndn_Error error;
+  unsigned int nBytes;
+  if (error = ndn_TcpTransport_receive(&transport_, buffer, bufferLength, &nBytes))
+    throw std::runtime_error(ndn_getErrorString(error));  
+  
+  return nBytes;
+}
+
+}
diff --git a/ndn-cpp/transport/Transport.cpp b/ndn-cpp/transport/Transport.cpp
new file mode 100644
index 0000000..950b1cb
--- /dev/null
+++ b/ndn-cpp/transport/Transport.cpp
@@ -0,0 +1,28 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include <stdexcept>
+#include "Transport.hpp"
+
+using namespace std;
+
+namespace ndn {
+
+void Transport::connect(char *host, unsigned short port) 
+{
+  throw logic_error("unimplemented");
+}
+  
+void Transport::send(unsigned char *data, unsigned int dataLength)
+{
+  throw logic_error("unimplemented");
+}
+
+unsigned int Transport::receive(unsigned char *buffer, unsigned int bufferLength)
+{
+  throw logic_error("unimplemented");
+}
+
+}
diff --git a/ndn-cpp/transport/Transport.hpp b/ndn-cpp/transport/Transport.hpp
new file mode 100644
index 0000000..85fe1b7
--- /dev/null
+++ b/ndn-cpp/transport/Transport.hpp
@@ -0,0 +1,22 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_TRANSPORT_HPP
+#define	NDN_TRANSPORT_HPP
+
+namespace ndn {
+  
+class Transport {
+public:
+  virtual void connect(char *host, unsigned short port);
+  
+  virtual void send(unsigned char *data, unsigned int dataLength);
+  
+  virtual unsigned int receive(unsigned char *buffer, unsigned int bufferLength);
+};
+
+}
+
+#endif
