             stream = try TCPTLSStream(
                 host: host,
                 port: port,
-                verifyBundle: verifyBundle,
-                certificate: certificate,
-                privateKey: privateKey,
-                certificateChain: certificateChain,
+                certificatePath: certificatePath,
+                privateKeyPath: privateKeyPath,
+                certificateChainPath: certificateChainPath,
+                verifyBundle: verifyBundlePath,
                 sniHostname: host,
                 deadline: now() + connectionTimeout
             )

        self.host = host
        self.port = port

        self.verifyBundle = configuration["tls", "backlog"].string
        self.certificate = configuration["tls", "reusePort"].string
        self.privateKey = configuration["tls", "reusePort"].string
        self.certificateChain = configuration["tls", "reusePort"].string

        self.keepAlive = configuration["keepAlive"].bool ?? true
        self.connectionTimeout = configuration["connectionTimeout"].double ?? 3.minutes
        self.requestTimeout = configuration["requestTimeout"].double ?? 30.seconds

        self.bufferSize = configuration["bufferSize"].int ?? 2048
    }

    public convenience init(url: String, configuration: Map = nil) throws {
        guard let url = URL(string: url) else {
            throw URLError.invalidURL
        }

        try self.init(url: url, configuration: configuration)
    }
}


    public let host: String
    public let port: Int

    public let keepAlive: Bool
    public let connectionTimeout: Double
    public let requestTimeout: Double
    public let bufferSize: Int

    public let certificatePath: String?
    public let privateKeyPath: String?
    public let verifyBundlePath: String?
    public let certificateChainPath: String?

    var stream: Stream?
    var serializer: RequestSerializer?
    var parser: MessageParser?

    public init(url: URL, bufferSize: Int = 4096, connectionTimeout: Double = 3.minutes, requestTimeout: Double = 30.seconds, certificatePath: String? = nil, privateKeyPath: String? = nil, certificateChainPath: String? = nil, verifyBundlePath: String? = nil, keepAlive: Bool = true) throws {
        self.secure = try isSecure(url: url)

        let (host, port) = try getHostPort(url: url)
