             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
             )

    public let host: String
    public let port: Int

    public let verifyBundle: String?
    public let certificate: String?
    public let privateKey: String?
    public let certificateChain: String?

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

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

    public init(url: URL, configuration: Map = nil) throws {
        self.secure = try isSecure(url: url)

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

        self.host = host
        self.port = port

        self.bufferSize = bufferSize
        self.connectionTimeout = connectionTimeout
        self.requestTimeout = requestTimeout

        self.certificatePath = certificatePath
        self.privateKeyPath = privateKeyPath
        self.certificateChainPath = certificateChainPath
        self.verifyBundlePath = verifyBundlePath

        self.keepAlive = keepAlive
    }

    public convenience init(url: String, bufferSize: Int = 4096, connectionTimeout: Double = 3.minutes, requestTimeout: Double = 30.seconds, certificatePath: String? = nil, privateKeyPath: String? = nil, verifyBundlePath: String? = nil, keepAlive: Bool = true) throws {
        guard let url = URL(string: url) else {
            throw URLError.invalidURL
        }

        try self.init(
            url: url,
            bufferSize: bufferSize,
            connectionTimeout: connectionTimeout,
            requestTimeout: requestTimeout,
            certificatePath: certificatePath,
            privateKeyPath: privateKeyPath,
            verifyBundlePath: verifyBundlePath,
            keepAlive: keepAlive
        )
    }
}

