         return databases
     }
     
-    /// Copies a database (optionally from a remote host)
+    /// Copies a database either from one mongod instance to the current mongod instance or within the current mongod
+    ///
+    /// For more information: https://docs.mongodb.com/manual/reference/command/copydb/#dbcmd.copydb
+    ///
     /// - parameter database: The database to copy
-    /// - parameter to: The other database
-    /// - parameter as: The database's credentials
-    /// - parameter at: The optional remote host to copy from
+    /// - parameter otherDatabase: The other database
+    /// - parameter user: The database's credentials
+    /// - parameter remoteHost: The optional remote host to copy from
+    ///
+    /// - throws: When we can't send the request/receive the response, you don't have sufficient permissions or an error occurred
     public func copy(database: String, to otherDatabase: String, as user: (user: String, nonce: String, password: String)? = nil, at remoteHost: String? = nil, slaveOk: Bool? = nil) throws {
         var command: Document = [
                                     "copydb": .int32(1),

/// 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. From this you can get databases which can provide you with collections from where you can do actions
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)?

        let response = try firstDocument(in: reply)
        
        guard response["ok"].int32 == 1 else {
            throw MongoError.CommandFailure // TODO: Make this more specific
        }
    }
    
    /// Shuts down the MongoDB server
    ///
    /// For more information: https://docs.mongodb.com/manual/reference/command/shutdown/#dbcmd.shutdown
    ///
    /// - parameter force: Force the s
    ///
    /// - throws: When we can't send the request/receive the response, you don't have sufficient permissions or an error occurred
    public func shutdown(forced force: Bool? = nil) throws {
        var command: Document = [
                                    "shutdown": .int32(1)
