diff --git a/lib/index.js b/lib/index.js
index 22871744d191e5ddb4bc816b4243e4729435b626..ea43035e965668111ce7dac7f8d23a584d96fb13 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,27 +1,31 @@
-#!/usr/bin/env node
-
 const logger = require('./logger');
 const config = require('./config');
 
 // Require main source
 const renovate = require('./renovate');
 
-// Initialize our promise chain
-let p = Promise.resolve();
+module.exports = {
+  start,
+};
+
+function start() {
+  // Initialize our promise chain
+  let p = Promise.resolve();
 
-// Get global config
-const globalConfig = config.getGlobalConfig();
+  // Get global config
+  const globalConfig = config.getGlobalConfig();
 
-// Queue up each repo/package combination
-globalConfig.repositories.forEach((repo) => {
-  repo.packageFiles.forEach((packageFile) => {
-    const cascadedConfig = config.getCascadedConfig(repo, packageFile);
-    p = p.then(() => renovate(repo.repository, packageFile.fileName, cascadedConfig));
+  // Queue up each repo/package combination
+  globalConfig.repositories.forEach((repo) => {
+    repo.packageFiles.forEach((packageFile) => {
+      const cascadedConfig = config.getCascadedConfig(repo, packageFile);
+      p = p.then(() => renovate(repo.repository, packageFile.fileName, cascadedConfig));
+    });
+  });
+  p.then(() => { // eslint-disable-line promise/always-return
+    logger.info('Renovate finished');
+  })
+  .catch((error) => {
+    logger.error(`Unexpected error: ${error}`);
   });
-});
-p.then(() => { // eslint-disable-line promise/always-return
-  logger.info('Renovate finished');
-})
-.catch((error) => {
-  logger.error(`Unexpected error: ${error}`);
-});
+}
diff --git a/package.json b/package.json
index e0c13ffc3fafa33033618d1052bf3da5695bc4f6..295bf1ea3362ecf0ab998e7a8a409e319f578ec3 100644
--- a/package.json
+++ b/package.json
@@ -2,14 +2,14 @@
   "name": "renovate",
   "description": "Keep npm dependencies up-to-date via Pull Requests",
   "version": "2.3.0",
-  "bin": "./lib/index.js",
+  "bin": "renovate.js",
   "main": "lib/index.js",
   "scripts": {
     "eslint": "eslint lib",
     "eslint-fix": "eslint lib --fix",
     "istanbul": "istanbul cover _mocha test",
     "mocha": "mocha test",
-    "start": "node lib",
+    "start": "node renovate",
     "test": "npm run eslint && npm run istanbul"
   },
   "repository": {
diff --git a/renovate.js b/renovate.js
new file mode 100644
index 0000000000000000000000000000000000000000..2ad6abdc29492953b585518d81d189433b5998af
--- /dev/null
+++ b/renovate.js
@@ -0,0 +1,5 @@
+#!/usr/bin/env node
+
+const renovate = require('./lib');
+
+renovate.start();