diff --git a/transport.go b/transport.go
index 708bcd5..2dd7848 100644
--- a/transport.go
+++ b/transport.go
@@ -15,6 +15,7 @@
 	"log"
 	"net"
 	"net/http"
+	"strconv"
 	"strings"
 	"sync"
 
@@ -44,7 +45,7 @@
 
 	hdec *hpack.Decoder
 
-	nextRes http.Header
+	nextRes *http.Response
 
 	// Settings from peer:
 	maxFrameSize uint32
@@ -276,7 +277,13 @@
 		}
 		switch f := f.(type) {
 		case *HeadersFrame:
-			cc.nextRes = make(http.Header)
+			cc.nextRes = &http.Response{
+				Proto:      "HTTP/2.0",
+				ProtoMajor: 2,
+				Header:     make(http.Header),
+				Request:    nil, // TODO: set this
+				TLS:        nil, // TODO: set this
+			}
 			cs.pr, cs.pw = io.Pipe()
 			cc.hdec.Write(f.HeaderBlockFragment())
 			headersEnded = f.HeadersEnded()
@@ -296,15 +303,29 @@
 			if cs == nil {
 				panic("couldn't find stream") // TODO be graceful
 			}
-			cs.resc <- &http.Response{
-				Header: cc.nextRes,
-				Body:   cs.pr,
-			}
+			cc.nextRes.Body = cs.pr
+			cs.resc <- cc.nextRes
 		}
 	}
 }
 
 func (cc *clientConn) onNewHeaderField(f hpack.HeaderField) {
+	// TODO: verifiy pseudo headers come before non-pseudo headers
+	// TODO: verifiy the status is set
 	log.Printf("Header field: %+v", f)
-	cc.nextRes.Add(http.CanonicalHeaderKey(f.Name), f.Value)
+	if f.Name == ":status" {
+		code, err := strconv.Atoi(f.Value)
+		if err != nil {
+			panic("TODO: be graceful")
+		}
+		cc.nextRes.Status = f.Value + " " + http.StatusText(code)
+		cc.nextRes.StatusCode = code
+		return
+	}
+	if strings.HasPrefix(f.Name, ":") {
+		// "Endpoints MUST NOT generate pseudo-header fields other than those defined in this document."
+		// TODO: treat as invalid?
+		return
+	}
+	cc.nextRes.Header.Add(http.CanonicalHeaderKey(f.Name), f.Value)
 }
diff --git a/transport_test.go b/transport_test.go
index f3de64f..67168f9 100644
--- a/transport_test.go
+++ b/transport_test.go
@@ -36,11 +36,7 @@
 }
 
 func TestTransport(t *testing.T) {
-	condSkipFailingTest(t)
-
-	VerboseLogs = true
 	st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
-		println("in handler")
 		io.WriteString(w, "sup")
 	})
 	defer st.Close()
