docs: function MongoDB(config, mongoDB) {
  
  	if (!config) {
  		throw new Error("Expected a MongoDB configuration");
  	}
  	if (!config.url) {
  		throw new Error("Expected a url in the MongoDB configuration");
  	}
  	if (!config.name) {
  		throw new Error("Expected a name in the MongoDB configuration");
  	}
  	if (!config.collection) {
  		throw new Error("Expected a collection name in the MongoDB configuration");
  	}
  
  	this.config = config;
  	this.type = "MongoDB Provider";
  	this.url = config.url;
  	this.dbName = this.url.substring(this.url.lastIndexOf("/") + 1);
  	this.name = config.name;
  	this.collectionName = config.collection;
  
  	this.__db = null;
  	this.__collection = null;
  	this.__mongoDB = mongoDB || _mongoDB;
  	this.__MongoClient = this.__mongoDB.MongoClient;
  
  	// make your schema strict! Ensure that if you add unknown fiels to the model it will NOT accept it. Usually it does
  //	this.schema = config.schema || { _id: mongoose.Schema.ObjectId }; // { id: Int, name: String }
  //	this.Model = this._mongooseProvider.model(this.collectionName, new mongoose.Schema(this.schema, {strict: true}));
  //	this._mongooseModel = new this.Model();
  
  	// uniform error messages
  	this.missing_arguments_err = "Missing exact number of arguments: ";
  	this.missing_data_err = "Missing 'data' argument.";
  	this.missing_data_id_err = "Missing 'data._id' argument.";
  	this.missing_id_err = "Missing 'id' argument.";
  	this.id_not_string_err = "Argument 'id' must be of type string.";
  	this.invalid_ObjectID_err = "Invalid ObjectID is derived from the given id argument. id must be a single String of 12 bytes or a string of 24 hex characters.";
  	this.missing_key_err = "Missing 'key' argument.";
  	this.missing_callback_err = "Missing 'callback' argument.";
  	this.callback_not_an_Object_err = "Argument 'data' must be of type Object.";
  	this.callback_not_an_Array_err = "Argument 'data' must be of type Array.";
  	this.callback_not_a_function_err = "Argument 'callback' must be of type Function.";
  	this.no_connection_err = "There is no open connection to the dabase server. Call connect function first.";
  
  }