diff --git a/exec/sbbsimsg.js b/exec/sbbsimsg.js
index 9ee2b1b6a861a48255197568c3ac941505ec1dfb..00a49d70fc685df6dabc4b0e079ce48dab5105d7 100644
--- a/exec/sbbsimsg.js
+++ b/exec/sbbsimsg.js
@@ -42,27 +42,29 @@ var last_user=0;
 lib.read_sys_list();
 
 // Parse arguments
-for(i=0; i<argc; i++) {
-	if(argv[i].toLowerCase()=="-l") {
-		console.clear();
-		writeln("Inter-BBS Active Users:");
-		var timeout = 2500;
-		var sent = lib.request_active_users();
-		if(parseInt(argv[i+1]))
-			timeout = parseInt(argv[i+1]);
-		function poll_callback(loop)
-		{
-			printf("%c\1[", "/-\\|"[loop%4]);
-			if(console.inkey(0))
-				return true;
+if(this.argc) {
+	for(i=0; i<argc; i++) {
+		if(argv[i].toLowerCase()=="-l") {
+			console.clear();
+			writeln("Inter-BBS Active Users:");
+			var timeout = 2500;
+			var sent = lib.request_active_users();
+			if(parseInt(argv[i+1]))
+				timeout = parseInt(argv[i+1]);
+			function poll_callback(loop)
+			{
+				printf("%c\1[", "/-\\|"[loop%4]);
+				if(console.inkey(0))
+					return true;
+			}
+			lib.poll_systems(sent, 0.25, timeout, poll_callback);
+			list_users();
+			exit();
+		}
+		if(argv[i].toLowerCase()=="-d") {
+			print(lfexpand(JSON.stringify(lib.sys_list, null, 4)));
+			exit();
 		}
-		lib.poll_systems(sent, 0.25, timeout, poll_callback);
-		list_users();
-		exit();
-	}
-	if(argv[i].toLowerCase()=="-d") {
-		print(lfexpand(JSON.stringify(lib.sys_list, null, 4)));
-		exit();
 	}
 }
 
@@ -194,6 +196,7 @@ while(bbs.online) {
 	var key;
 	var last_request = 0;
 	var request_interval = 60;	// seconds
+	var valid_keys = "QLTM\rD";
 	while(bbs.online && !console.aborted) {
 		if(time() - last_request >= request_interval) {
 			lib.request_active_users();
@@ -204,8 +207,8 @@ while(bbs.online) {
 			var message = lib.receive_active_users();
 			if(message) {
 				var result = lib.parse_active_users(message, logon_callback, logoff_callback);
-				if(!result)
-					log(LOG_WARNING, "Failure to parse: "+ JSON.stringify(message));
+				if(result !== true)
+					log(LOG_WARNING, format("%s: %s", result, JSON.stringify(message)));
 			}
 		}
 		bbs.nodesync(true);
@@ -213,10 +216,14 @@ while(bbs.online) {
 			continue prompt;
 		}
 		key=console.inkey(K_UPPER, 500);
-		if(key=='Q' || key=='L' || key=='T' || key=='M' || key=='\r')
+		if(key && valid_keys.indexOf(key) >= 0)
 			break;
 	}
 	switch(key) {
+		case 'D':
+			for(var i in lib.sys_list)
+				print(i + ' = ' + JSON.stringify(lib.sys_list[i]));
+			break;
 		case 'L':
 			print("\1h\1cList\r\n");
 			list_users();