code: function start (options, callback) {
  	console.log([moment().format('HH:mm:ss:SSS')] + ' kne: starting...');
  
  	if (!options.keystone) {
  		var errMsg = 'kne: must pass a keystone instance';
  		console.error([moment().format('HH:mm:ss:SSS')] + ' ' + errMsg);
  		if (callback) {
  			callback(errMsg);
  		} else {
  			process.exit(1);
  		}
  	}
  
  	// add the keystone instance to the module exports so that the keystone-nightwatch-e2e library may use it
  	exports.keystone = options.keystone;
  
  	async.series([
  		function (cb) {
  			checkKeystoneReady(options.keystone, cb);
  		},
  		function (cb) {
  			runNightwatch(cb);
  		},
  	], function (err) {
  		console.log([moment().format('HH:mm:ss:SSS')] + ' kne: finishing...');
  		if (err) {
  			console.error([moment().format('HH:mm:ss:SSS')] + ' kne: finished with error\n' + err);
  		}
  		if (selenium_proc) {
  			console.error([moment().format('HH:mm:ss:SSS')] + ' kne: terminating selenium process');
  			selenium_proc.kill('SIGTERM');
  			selenium_proc.kill('SIGKILL');
  		}
  		if (sauceConnectionRunning) {
  			stopSauceConnect(function () { callback && callback(err); });
  		} else {
  			callback && callback(err);
  		}
  	});
  }
docs: /*
  Function that starts the nightwatch-based e2e framework service
  
  options:
  {
  keystone: <keystone instance>		// REQUIRED
  }