 
     private let scanner: HTTPStreamScanner = HTTPStreamScanner()
 
-    private var internalStatus: HTTPProxyStatus = .invalid
+    private var readingStatus: HTTPProxyReadStatus = .invalid
+    private var writingStatus: HTTPProxyWriteStatus = .invalid
 
     public var isConnectCommand = false
 
     public override var statusDescription: String {
-        return "\(status) (\(internalStatus))"
+        return "\(status) (read status: \(readingStatus)) (write status: \(writingStatus))"
     }
 
     /**

    override public func didRead(data: Data, from: RawTCPSocketProtocol) {
        super.didRead(data: data, from: from)

        switch internalStatus {
        case .readingFirstHeader:
            guard let header = scanner.input(data).0 else {
                // TODO: indicate observer

            }
        }
    }

    enum HTTPProxyWriteStatus: CustomStringConvertible {
        case invalid,
        sendingConnectResponse,
        forwarding,
        stopped

        var description: String {
            switch self {
            case .invalid:
                return "invalid"
            case .sendingConnectResponse:
                return "sending response header for CONNECT"
            case .forwarding:
                return "waiting to begin forwarding data"
            case .stopped:
                return "stopped"
            }
        }
    }
    /// The remote host to connect to.
    public var destinationHost: String!

