diff --git a/README.md b/README.md
index c4f01712293be3e58829855dacf08a21bb27c7c1..4fc73b485a471f338d2a5fbcc106119b9b82447c 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # tiny-worker
 Tiny WebWorker for Server
 
-`require()` is available for flexible inline Worker scripts.
+`require()` is available for flexible inline Worker scripts. Optional parameters `args` Array & `options` Object; see `child_process.fork()` documentation.
 
 [![build status](https://secure.travis-ci.org/avoidwork/tiny-worker.svg)](http://travis-ci.org/avoidwork/tiny-worker)
 
diff --git a/lib/index.js b/lib/index.js
index 0c0b473c780c31e63bd041d0e66183f10a98d6f4..3336bd0466e4cff010eed749c65b99e151b35a85 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -4,21 +4,24 @@ var _createClass = (function () { function defineProperties(target, props) { for
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-var path = require("path");
-var fork = require("child_process").fork;
-var worker = path.join(__dirname, "worker.js");
-var events = /^(error|message)$/;
+var path = require("path"),
+    fork = require("child_process").fork,
+    worker = path.join(__dirname, "worker.js"),
+    events = /^(error|message)$/;
 
 var Worker = (function () {
 	function Worker(arg) {
 		var _this = this;
 
+		var args = arguments.length <= 1 || arguments[1] === undefined ? undefined : arguments[1];
+		var options = arguments.length <= 2 || arguments[2] === undefined ? undefined : arguments[2];
+
 		_classCallCheck(this, Worker);
 
 		var isfn = typeof arg === "function",
 		    input = isfn ? arg.toString() : arg;
 
-		this.child = fork(worker);
+		this.child = fork(worker, args, options);
 		this.onerror = undefined;
 		this.onmessage = undefined;
 
diff --git a/lib/noop.js b/lib/noop.js
index 7f0f4e86c7b0e41447cc9d3537354a125e033003..312fce83b41228310d46efefd9a447261e7187cf 100644
--- a/lib/noop.js
+++ b/lib/noop.js
@@ -1,3 +1,5 @@
 "use strict";
 
-module.exports = function () {};
+module.exports = function () {
+  return void 0;
+};
diff --git a/lib/worker.js b/lib/worker.js
index 71addb117b8fb17d08d530a8e22d9b1a228616ea..51c1a40ecbda7f3a224109a5454bef544ac7f3e3 100644
--- a/lib/worker.js
+++ b/lib/worker.js
@@ -1,10 +1,10 @@
 "use strict";
 
-var fs = require("fs");
-var path = require("path");
-var vm = require("vm");
-var noop = require(path.join(__dirname, "noop.js"));
-var events = /^(error|message)$/;
+var fs = require("fs"),
+    path = require("path"),
+    vm = require("vm"),
+    noop = require(path.join(__dirname, "noop.js")),
+    events = /^(error|message)$/;
 
 function trim(arg) {
 	return arg.replace(/^(\s+|\t+|\n+)|(\s+|\t+|\n+)$/g, "");
@@ -30,11 +30,11 @@ process.once("message", function (obj) {
 			process.exit(0);
 		},
 		postMessage: function postMessage(msg) {
-			process.send(JSON.stringify({ data: msg }));
+			process.send(JSON.stringify({ data: msg }, null, 0));
 		},
 		onmessage: void 0,
 		onerror: function onerror(err) {
-			process.send(JSON.stringify({ error: err.message, stack: err.stack }));
+			process.send(JSON.stringify({ error: err.message, stack: err.stack }, null, 0));
 		},
 		addEventListener: function addEventListener(event, fn) {
 			if (events.test(event)) {
@@ -52,18 +52,14 @@ process.once("message", function (obj) {
 			files[_key] = arguments[_key];
 		}
 
-		var scripts = undefined;
-
 		if (files.length > 0) {
-			scripts = files.map(function (file) {
+			vm.createScript(files.map(function (file) {
 				return fs.readFileSync(file, "utf8");
-			}).join("\n");
-
-			vm.createScript(scripts).runInThisContext();
+			}).join("\n")).runInThisContext();
 		}
 	};
 
-	Object.keys(global.self).forEach(function (key) {
+	Reflect.ownKeys(global.self).forEach(function (key) {
 		global[key] = global.self[key];
 	});
 
diff --git a/package.json b/package.json
index 9ecc360b02070d202dc563312cd0f99ee2a5dec1..e23d78379e595dd531c754bff28be9685f5b2462 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "tiny-worker",
-  "version": "1.1.7",
+  "version": "2.0.0",
   "description": "Tiny WebWorker for Server",
   "main": "lib/index.js",
   "scripts": {
diff --git a/src/index.js b/src/index.js
index dd53ae5e330d682d1b1ea0b69e68f2d1eb384048..27adfe2b774989799b0e416b7ad6f2eae26655ae 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,14 +1,14 @@
-const path = require("path");
-const fork = require("child_process").fork;
-const worker = path.join(__dirname, "worker.js");
-const events = /^(error|message)$/;
+const path = require("path"),
+	fork = require("child_process").fork,
+	worker = path.join(__dirname, "worker.js"),
+	events = /^(error|message)$/;
 
 class Worker {
-	constructor (arg) {
+	constructor (arg, args = undefined, options = undefined) {
 		let isfn = typeof arg === "function",
 			input = isfn ? arg.toString() : arg;
 
-		this.child = fork(worker);
+		this.child = fork(worker, args, options);
 		this.onerror = undefined;
 		this.onmessage = undefined;
 
diff --git a/src/noop.js b/src/noop.js
index ea41b01de465176d8debbabb17bf4f343a9e0c7f..0e0cebb8734f8613fad06d370238b405d6d2df8a 100644
--- a/src/noop.js
+++ b/src/noop.js
@@ -1 +1 @@
-module.exports = function () {};
+module.exports = () => void 0;
diff --git a/src/worker.js b/src/worker.js
index 0219f9927c74d03178ef8e281a39fd01804b33f7..5ee73ff13058de37a06beab117fc6df52f7c21d9 100644
--- a/src/worker.js
+++ b/src/worker.js
@@ -1,8 +1,8 @@
-const fs = require("fs");
-const path = require("path");
-const vm = require("vm");
-const noop = require(path.join(__dirname, "noop.js"));
-const events = /^(error|message)$/;
+const fs = require("fs"),
+	path = require("path"),
+	vm = require("vm"),
+	noop = require(path.join(__dirname, "noop.js")),
+	events = /^(error|message)$/;
 
 function trim (arg) {
 	return arg.replace(/^(\s+|\t+|\n+)|(\s+|\t+|\n+)$/g, "");
@@ -13,7 +13,7 @@ function explode (arg) {
 }
 
 function toFunction (arg) {
-	let args = trim(arg.replace(/^.*\(/, "").replace(/[\t|\r|\n|\"|\']+/g, "").replace(/\).*/, "")),
+	const args = trim(arg.replace(/^.*\(/, "").replace(/[\t|\r|\n|\"|\']+/g, "").replace(/\).*/, "")),
 		body = trim(arg.replace(/^.*\{/, "").replace(/\}$/, ""));
 
 	return Function.apply(Function, explode(args).concat([body]));
@@ -28,11 +28,11 @@ process.once("message", obj => {
 			process.exit(0);
 		},
 		postMessage: msg => {
-			process.send(JSON.stringify({data: msg}));
+			process.send(JSON.stringify({data: msg}, null, 0));
 		},
 		onmessage: void 0,
 		onerror: err => {
-			process.send(JSON.stringify({error: err.message, stack: err.stack}));
+			process.send(JSON.stringify({error: err.message, stack: err.stack}, null, 0));
 		},
 		addEventListener: (event, fn) => {
 			if (events.test(event)) {
@@ -46,18 +46,12 @@ process.once("message", obj => {
 	global.require = require;
 
 	global.importScripts = (...files) => {
-		let scripts;
-
 		if (files.length > 0) {
-			scripts = files.map(file => {
-				return fs.readFileSync(file, "utf8");
-			}).join("\n");
-
-			vm.createScript(scripts).runInThisContext();
+			vm.createScript(files.map(file => fs.readFileSync(file, "utf8")).join("\n")).runInThisContext();
 		}
 	};
 
-	Object.keys(global.self).forEach(key => {
+	Reflect.ownKeys(global.self).forEach(key => {
 		global[key] = global.self[key];
 	});