diff --git a/http2/adapter/data_source.h b/http2/adapter/data_source.h
index 768a412..5658bfd 100644
--- a/http2/adapter/data_source.h
+++ b/http2/adapter/data_source.h
@@ -18,12 +18,13 @@
   static constexpr ssize_t kError = -1;
 
   // Returns the number of bytes to send in the next DATA frame, and whether
-  // this frame indicates the end of the data. Returns kBlocked if blocked,
-  // kError on error.
+  // this frame indicates the end of the data. Returns {kBlocked, false} if
+  // blocked, {kError, false} on error.
   virtual std::pair<ssize_t, bool> SelectPayloadLength(size_t max_length) = 0;
 
   // This method is called with a frame header and a payload length to send. The
   // source should send or buffer the entire frame.
+  // TODO(birenroy): Consider adding a return value to indicate write blockage.
   virtual void Send(absl::string_view frame_header, size_t payload_length) = 0;
 
   // If true, the end of this data source indicates the end of the stream.
diff --git a/http2/adapter/nghttp2_callbacks.cc b/http2/adapter/nghttp2_callbacks.cc
index c3e1dc8..5b8a3c5 100644
--- a/http2/adapter/nghttp2_callbacks.cc
+++ b/http2/adapter/nghttp2_callbacks.cc
@@ -6,6 +6,7 @@
 #include "absl/strings/string_view.h"
 #include "http2/adapter/http2_protocol.h"
 #include "http2/adapter/http2_visitor_interface.h"
+#include "http2/adapter/nghttp2_data_provider.h"
 #include "http2/adapter/nghttp2_util.h"
 #include "third_party/nghttp2/nghttp2.h"
 #include "third_party/nghttp2/src/lib/includes/nghttp2/nghttp2.h"
@@ -218,6 +219,8 @@
                                                             &OnDataChunk);
   nghttp2_session_callbacks_set_on_stream_close_callback(callbacks,
                                                          &OnStreamClosed);
+  nghttp2_session_callbacks_set_send_data_callback(
+      callbacks, &DataFrameSourceSendCallback);
   return MakeCallbacksPtr(callbacks);
 }
 
diff --git a/http2/adapter/nghttp2_data_provider.cc b/http2/adapter/nghttp2_data_provider.cc
index 0a7850e..7a70965 100644
--- a/http2/adapter/nghttp2_data_provider.cc
+++ b/http2/adapter/nghttp2_data_provider.cc
@@ -5,8 +5,11 @@
 
 namespace http2 {
 namespace adapter {
+namespace callbacks {
 
+namespace {
 const size_t kFrameHeaderSize = 9;
+}
 
 ssize_t DataFrameSourceReadCallback(nghttp2_session* /* session */,
                                     int32_t /* stream_id */,
@@ -43,10 +46,16 @@
   return 0;
 }
 
-nghttp2_data_provider MakeDataProvider(DataFrameSource* source) {
-  nghttp2_data_provider provider;
-  provider.source.ptr = source;
-  provider.read_callback = &DataFrameSourceReadCallback;
+}  // namespace callbacks
+
+std::unique_ptr<nghttp2_data_provider> MakeDataProvider(
+    DataFrameSource* source) {
+  if (source == nullptr) {
+    return nullptr;
+  }
+  auto provider = absl::make_unique<nghttp2_data_provider>();
+  provider->source.ptr = source;
+  provider->read_callback = &callbacks::DataFrameSourceReadCallback;
   return provider;
 }
 
diff --git a/http2/adapter/nghttp2_data_provider.h b/http2/adapter/nghttp2_data_provider.h
index d4315f1..241bab9 100644
--- a/http2/adapter/nghttp2_data_provider.h
+++ b/http2/adapter/nghttp2_data_provider.h
@@ -6,6 +6,7 @@
 
 namespace http2 {
 namespace adapter {
+namespace callbacks {
 
 // Assumes |source| is a DataFrameSource.
 ssize_t DataFrameSourceReadCallback(nghttp2_session* /*session */,
@@ -23,8 +24,12 @@
                                 nghttp2_data_source* source,
                                 void* /* user_data */);
 
-// Does not take ownership of |source|.
-nghttp2_data_provider MakeDataProvider(DataFrameSource* source);
+}  // namespace callbacks
+
+// Transforms a DataFrameSource into a nghttp2_data_provider. Does not take
+// ownership of |source|. Returns nullptr if |source| is nullptr.
+std::unique_ptr<nghttp2_data_provider> MakeDataProvider(
+    DataFrameSource* source);
 
 }  // namespace adapter
 }  // namespace http2
diff --git a/http2/adapter/oghttp2_session.h b/http2/adapter/oghttp2_session.h
index 39f4cdc..bb58085 100644
--- a/http2/adapter/oghttp2_session.h
+++ b/http2/adapter/oghttp2_session.h
@@ -121,15 +121,34 @@
     Http2StreamId stream_id_ = 0;
   };
 
+  // Receives events when inbound frames are parsed.
   Http2VisitorInterface& visitor_;
+
+  // Encodes outbound frames.
   spdy::SpdyFramer framer_{spdy::SpdyFramer::ENABLE_COMPRESSION};
+
+  // Decodes inbound frames.
   http2::Http2DecoderAdapter decoder_;
+
+  // Maintains the state of all streams known to this session.
   absl::flat_hash_map<Http2StreamId, StreamState> stream_map_;
+
+  // Maintains the queue of outbound frames, and any serialized bytes that have
+  // not yet been consumed.
   std::list<std::unique_ptr<spdy::SpdyFrameIR>> frames_;
-  PassthroughHeadersHandler headers_handler_;
   std::string serialized_prefix_;
+
+  // Delivers header name-value pairs to the visitor.
+  PassthroughHeadersHandler headers_handler_;
+
+  // Tracks the remaining client connection preface, in the case of a server
+  // session.
   absl::string_view remaining_preface_;
+
+  Http2StreamId next_stream_id_ = 1;
   int peer_window_ = 65535;
+  int stream_receive_window_limit_ = 65535;
+  int max_frame_payload_ = 16384;
   Options options_;
   bool received_goaway_ = false;
 };
