 
     public override func didReadData(data: NSData, withTag tag: Int, from socket: RawTCPSocketProtocol) {
         super.didReadData(data, withTag: tag, from: socket)
+
         switch tag {
         case ReadTag.MethodResponse.rawValue:
             if request.isIPv4() {

                // here we send the domain length and the domain together
                writeData(responseData, withTag: WriteTag.ConnectDomainLength.rawValue)
            }
            var portBytes = Utils.toByteArray(UInt16(request.port)).reverse()
            let portData = NSData(bytes: &portBytes, length: portBytes.count)
            writeData(portData, withTag: WriteTag.ConnectPort.rawValue)
            socket.readDataToLength(4, withTag: ReadTag.ConnectResponse.rawValue)
        case ReadTag.ConnectResponse.rawValue:
            observer?.signal(.ReadyForForward(self))
            delegate?.readyToForward(self)
        default:

    let helloData = NSData(bytes: ([0x05, 0x01, 0x00] as [UInt8]), length: 3)

    public enum ReadTag: Int {
        case MethodResponse = -20000, ConnectResponseFirstPart, ConnectResponseSecondPart
    }

    public enum WriteTag: Int {
