     override func readDataWithTag(tag: Int) {
         if readIV == nil && !readingIV {
             readingIV = true
-            socket.readDataToLength(ivLength, withTag: ShadowsocksTag.IV.rawValue)
+            socket.readDataToLength(ivLength, withTag: ShadowsocksTag.InitialVector.rawValue)
             nextReadTag = tag
         } else {
             super.readDataWithTag(tag)

    }

    override func didReadData(data: NSData, withTag tag: Int, from socket: RawSocketProtocol) {
        if tag == ShadowsocksTag.IV.rawValue {
            readIV = data
            readingIV = false
            super.readDataWithTag(nextReadTag)

    }

    enum ShadowsocksTag: Int {
        case InitialVector = 25000, Connect
    }

    init(host: String, port: Int, encryptMethod: EncryptMethod, password: String) {
