docs: function (DB_name, account, pass, onOpenDone) {
  
  		var conn = SR._storage.openDB(DB_name, dbSetting.serverIP, dbSetting.serverPort);
  
  		// load fail
  		if (conn === undefined) {
  			LOG.error('cannot open DB: ' + DB_name, 'SR.DB');
  			return onOpenDone(false);
  		}
  
  		// open DB & load the collection data from DB
  		conn.open(function (err, client) {
  
  			// check if error
  			if (err) {
  				LOG.error(err, 'SR.DB');
  				return UTIL.safeCall(onOpenDone, false);
  			}
  
  			var user_created = false;
  
  			var auth_user = function () {
  
  				// authenticate into the DB
  				LOG.sys('authenticating DB [' + DB_name + ']...', 'SR.DB');
  
  				// NOTE: use client.admin().authenticate will force using admin account
  				//	   but in general we should not do that
  
  				client.authenticate(account, pass, function (err, replies) {
  
  					if (err) {
  
  						// if this is repeated call
  						if (user_created === true) {
  							LOG.error(err, 'SR.DB');
  							LOG.warn('DB authentication failure', 'SR.DB');
  							return UTIL.safeCall(onOpenDone, false);
  						}
  
  						// create DB user/pass (assume it's a new DB)
  						LOG.warn('auth error, assume DB does not exist, try to create new DB...', 'SR.DB');
  
  						// NOTE: right now this action is always successful, so it's like no auth exists
  						//	   might be a bug in MongoDB
  						user_created = true;
  
  						client.admin().authenticate(SR.Settings.DB_ADMIN.account, SR.Settings.DB_ADMIN.pass, function (err, replies) {
  							if (err) {
  								LOG.error(err, 'SR.DB');
  								LOG.error('DB admin auth failure, please make sure DB_ADMIN is setup correctly either in system or project setting', 'SR.DB');
  								return UTIL.safeCall(onOpenDone, false);
  							}
  
  							client.addUser(account, pass, function (err, result) {
  
  								if (err) {
  									LOG.error(err, 'SR.DB');
  									LOG.warn('DB addUser failure', 'SR.DB');
  									return UTIL.safeCall(onOpenDone, false);
  								}
  
  								LOG.warn('DB addUser success, re-authenticate', 'SR.DB');
  								auth_user();
  							});
  						});
  
  						return;
  					}
  
  					LOG.warn('DB authentication success', 'SR.DB');
  
  					// store client for later access
  					l_DBconn[DB_name] = conn;
  					l_DBclient[DB_name] = client;
  					UTIL.safeCall(onOpenDone, true);
  				});
  			}
  
  			// perform first DB authentication
  			auth_user();
  		});
  	}