     
     private var waitingForResponses = [Int32:NSCondition]()
     
-    /// TCP Socket bound to the MongoDB Server
+    /// `MongoTCP` Socket bound to the MongoDB Server
     private var client: MongoTCP?
     public let tcpType: MongoTCP.Type
     

        try self.init(url, using: tcpDriver, automatically: connecting)
    }
    
    /// Initializes a MongoDB Client Instance on a given port with a given host
    /// - parameter at: The host we'll connect to
    /// - parameter port: The port we'll connect on
    /// - parameter authentication: The optional authentication details we'll use when connecting to the server
    /// - parameter automatically: Connect automatically
    public init(at host: String, port: UInt16 = 27017, using authentication: (username: String, password: String, against: String)? = nil, using tcpDriver: MongoTCP.Type = CSocket.self, automatically connecting: Bool = false) throws {
        self.tcpType = tcpDriver
        self.server = (host: host, port: port)

/// It's internal because ReplyMessages are an internal struct that is used for direct communication with MongoDB only
internal typealias ResponseHandler = ((reply: Message) -> Void)

/// A server object is the core of MongoKitten as it's used to communicate to the server.
/// You can select a `Database` by subscripting an instance of this Server with a `String`.
public final class Server {
    /// The authentication details that are used to connect with the MongoDB server
    private let authDetails: (username: String, password: String, against: String)?
