factored out debug-nodejs
diff --git a/client/lib/debug-nodejs.js b/client/lib/debug-nodejs.js
new file mode 100644
index 0000000..d6e5619
--- /dev/null
+++ b/client/lib/debug-nodejs.js
@@ -0,0 +1,82 @@
+var fs = require('fs'),
+    tmp = require('tmp'),
+    path = require('path'),
+    spawn = require('child_process').spawn;
+
+exports.debug = function debugNodeJS(message, ws, echoChamberNames, done) {
+    try {
+	exports._debug(message, ws, echoChamberNames, done);
+    } catch (e) {
+	console.error(e);
+    }
+}
+exports._debug = function debugNodeJS(message, ws, echoChamberNames, done) {
+    var code = message.action.exec.code;
+
+    var r = new RegExp(/main[\s]*\([^\)]*\)/)
+    var startOfMethodBody = code.search(r);
+    if (startOfMethodBody >= 0) {
+	var paren = code.indexOf('{', startOfMethodBody);
+	code = code.substring(0, paren + 1) + '\n    // This is your main method\n    // Click continue, and you will stop here\n    debugger;\n' + code.substring(paren + 1);
+    }
+
+/*    var bootstrap = '\n\n\nvar result = main.apply(undefined, ' + JSON.stringify([message.actualParameters || {}]) + ');';
+
+    // fire our echo chamber trigger when the code is done
+    bootstrap += '\n\nvar openwhisk = require(\'openwhisk\');\n';
+    bootstrap += 'ow = openwhisk({api: \'' + api.host + api.path + '\', api_key: \'' + message.key + '\', namespace: \'' + message.action.namespace + '\' });\n';
+    bootstrap += 'ow.triggers.invoke({ triggerName: \'' + echoChamberNames.trigger + '\', params: result });\n';*/
+
+    code += '\n\n//\n'
+    code += '// Welcome to the OpenWhisk debugger.\n';
+    code += '//\n';
+    code += '// To proceed with debugging, press the continue => button.\n';
+    code += '// The first breakpoint will be in your main method\n';
+    code += '//\n';
+    code += '\n\nvar bootstrap = require(\'debug-bootstrap\')(\'' + message.key + '\', \'' + message.action.namespace + '\', \'' + echoChamberNames.trigger + '\');\nbootstrap(main, ' + JSON.stringify(message.actualParameters || {}) + ');';
+    
+    tmp.file(function onTempFileCreation(err, tmpFilePath, fd, tmpfileCleanupCallback) {
+	// console.log('TMP ' + tmpFilePath);
+	try {
+	fs.write(fd, code, 0, 'utf8', function onFileWriteCompletion(err, written, string) {
+	    var env = Object.assign({}, process.env);
+	    env['NODE_PATH'] = path.join(process.cwd(), 'node_modules')
+		+ ':' + path.join(process.cwd(), 'lib');
+
+	    var spawnOpts = {
+		cwd: process.cwd(),
+		// stdio: ['inherit', 'inherit', 'inherit'], // for debugging
+		env: env
+	    };
+	    // console.log('SPAWN ' + JSON.stringify(spawnOpts, undefined, 4));
+	    //var child = spawn('node', ['debug', tmpFilePath], spawnOpts);
+	    var child = spawn(path.join('node_modules', '.bin', 'node-debug'), [tmpFilePath], spawnOpts);
+	    /*var child = spawn('node', ['--debug', '--debug-brk', tmpFilePath], spawnOpts);
+	      console.log('SPAWN2');
+	      var child2 = spawn(path.join('node_modules', '.bin', 'node-inspector'), spawnOpts);
+	      console.log('OPEN');
+	      var child3 = open('http://127.0.0.1:8080/?port=5858', 'Google Chrome');*/
+
+	    /*child.stderr.on('data', function(data) {
+	      console.log(data);
+	      });*/
+	    console.log("");
+	    console.log("");
+	    console.log("\tVisit " + "http://127.0.0.1:8080/?port=5858".underline.blue + " in the " + "Chrome".red + " browser that just popped up");
+	    console.log("\tClose that browser tab to complete your debugging session".bold);
+	    console.log("");
+	    console.log("");
+	    function cleanUpSubprocesses(err, stdout, stderr) {
+		/*console.log('ERR: ' + err);
+		  console.log('stdout: ' + stdout);
+		  console.log('stderr: ' + stderr);*/
+		tmpfileCleanupCallback();
+		done();
+	    }
+	    child.on('close', cleanUpSubprocesses);
+	});
+	} catch (e) {
+	    console.error(e);
+	}
+    });
+}
diff --git a/client/lib/repl.js b/client/lib/repl.js
index 06a3b82..c61ed63 100644
--- a/client/lib/repl.js
+++ b/client/lib/repl.js
@@ -1,5 +1,6 @@
 var prompt = require('inquirer'),
-    rewriter = require('./rewriter');
+    rewriter = require('./rewriter'),
+    columnify = require('columnify');
 
 var help = {
     handler: function help() {
diff --git a/client/wskdb.js b/client/wskdb.js
index c99ea27..7df0d69 100644
--- a/client/wskdb.js
+++ b/client/wskdb.js
@@ -1,12 +1,7 @@
-var fs = require('fs'),
-    tmp = require('tmp'),
-    open = require('open'),
-    path = require('path'),
-    repl = require('./lib/repl').repl,
-    spawn = require('child_process').spawn,
+var repl = require('./lib/repl').repl,
     colors = require('colors'),
-    columnify = require('columnify'),
     WebSocket = require('ws'),
+    debugNodeJS = require('./lib/debug-nodejs').debug,
     expandHomeDir = require('expand-home-dir'),
     propertiesParser = require('properties-parser'),
 
@@ -85,7 +80,6 @@
 	    }
 	    var nextOnErr = done.bind(undefined, true);
 
-	    // console.log("OOOOOOOOOOOOOOOOOO " + message.onDone_trigger + " " + JSON.stringify(message, undefined, 4))
 	    if (message.onDone_trigger) {
 		next({ trigger: message.onDone_trigger });
 	    } else {
@@ -99,92 +93,6 @@
     }
 });
 
-function debugDebug(message, ws, done) {
-    prompt.get({
-	name: 'result', description: 'Return value',
-	conform: function(result) {
-	    try {
-		JSON.parse(result);
-		return true;
-	    } catch (e) {
-		console.log('NOPE ' + result);
-		return false;
-	    }
-	}
-    }, function(err, values) {
-	done(values.result);
-    });
-}
-
-function debugNodeJS(message, ws, echoChamberNames, done) {
-    var code = message.action.exec.code;
-
-    var r = new RegExp(/main[\s]*\([^\)]*\)/)
-    var startOfMethodBody = code.search(r);
-    if (startOfMethodBody >= 0) {
-	var paren = code.indexOf('{', startOfMethodBody);
-	code = code.substring(0, paren + 1) + '\n    // This is your main method\n    // Click continue, and you will stop here\n    debugger;\n' + code.substring(paren + 1);
-    }
-
-/*    var bootstrap = '\n\n\nvar result = main.apply(undefined, ' + JSON.stringify([message.actualParameters || {}]) + ');';
-
-    // fire our echo chamber trigger when the code is done
-    bootstrap += '\n\nvar openwhisk = require(\'openwhisk\');\n';
-    bootstrap += 'ow = openwhisk({api: \'' + api.host + api.path + '\', api_key: \'' + message.key + '\', namespace: \'' + message.action.namespace + '\' });\n';
-    bootstrap += 'ow.triggers.invoke({ triggerName: \'' + echoChamberNames.trigger + '\', params: result });\n';*/
-
-    code += '\n\n//\n'
-    code += '// Welcome to the OpenWhisk debugger.\n';
-    code += '//\n';
-    code += '// To proceed with debugging, press the continue => button.\n';
-    code += '// The first breakpoint will be in your main method\n';
-    code += '//\n';
-    code += '\n\nvar bootstrap = require(\'debug-bootstrap\')(\'' + message.key + '\', \'' + message.action.namespace + '\', \'' + echoChamberNames.trigger + '\');\nbootstrap(main, ' + JSON.stringify(message.actualParameters || {}) + ');';
-    
-    tmp.file(function onTempFileCreation(err, tmpFilePath, fd, tmpfileCleanupCallback) {
-	// console.log('TMP ' + tmpFilePath);
-
-	fs.write(fd, code, 0, 'utf8', function onFileWriteCompletion(err, written, string) {
-	    var env = Object.assign({}, process.env);
-	    env['NODE_PATH'] = path.join(process.cwd(), 'node_modules')
-		+ ':' + path.join(process.cwd(), 'lib');
-
-	    var spawnOpts = {
-		cwd: process.cwd(),
-		//stdio: ['inherit', 'pipe', 'pipe'],
-		env: env
-	    };
-	    //console.log('SPAWN ' + JSON.stringify(spawnOpts, undefined, 4));
-	    //var child = spawn('node', ['debug', tmpFilePath], spawnOpts);
-	    var child = spawn(path.join('node_modules', '.bin', 'node-debug'), [tmpFilePath], spawnOpts);
-	    /*var child = spawn('node', ['--debug', '--debug-brk', tmpFilePath], spawnOpts);
-	      console.log('SPAWN2');
-	      var child2 = spawn(path.join('node_modules', '.bin', 'node-inspector'), spawnOpts);
-	      console.log('OPEN');
-	      var child3 = open('http://127.0.0.1:8080/?port=5858', 'Google Chrome');*/
-
-	    /*child.stderr.on('data', function(data) {
-	      console.log(data);
-	      });*/
-	    console.log("");
-	    console.log("");
-	    console.log("\tVisit " + "http://127.0.0.1:8080/?port=5858".underline.blue + " in the " + "Chrome".red + " browser that just popped up");
-	    console.log("\tClose that browser tab to complete your debugging session".bold);
-	    console.log("");
-	    console.log("");
-	    function cleanUpSubprocesses(err, stdout, stderr) {
-		/*console.log('ERR: ' + err);
-		  console.log('stdout: ' + stdout);
-		  console.log('stderr: ' + stderr);*/
-		tmpfileCleanupCallback();
-		done();
-	    }
-	    child.on('close', cleanUpSubprocesses);
-	});
-    });
-    
-}
-
 /*
 sending binary data 
 ws.on('open', function open() {