diff --git a/exec/cshell.js b/exec/cshell.js
deleted file mode 100644
index 428cfa96f5c388dbefea2fde2e63c58365ab13b4..0000000000000000000000000000000000000000
--- a/exec/cshell.js
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
-	JAVASCRIPT CHAT MENU SHELL - For Synchronet v3.15+ - Matt Johnson(2010)
-	$ID: $ 
-
-	
-	*****************************************************************************
-	*	IMPORTANT INFORMATION:
-	*	Without customizing some binary "wallpaper" this shell is very boring
-	*	If you wish to use this, I recommend creating a folder in your 
-	*	system.text_dir called "cshell" ("/sbbs/text/cshell/") and another within 
-	*	called "xtrn" ("/sbbs/text/cshell/xtrn/"). 
-	*
-	*	WALLPAPER: 
-	*		file: <menu_name>.<width>x<height>.bin
-	*	RIGHT WINDOW ICON:
-	*		file: icon.16x10.bin
-	*
-	*	NOTE: for a standard 80 x 24 terminal, menu wallpaper has a maximum
-	*	size of 34 x 22, and the main wallpaper has a maximum size of 60 x 22,
-	*	though these numbers largely depend on the size of the side menu and
-	*	right window. The max width can be determined by this formula:
-	*		WALLPAPER WIDTH = 
-	*			SCREEN COLUMNS - RIGHT WINDOW WIDTH - (SIDE MENU WIDTH + 1) - 2
-	*
-	*		DEFAULT SIDE MENU WIDTH: 25 
-	*		DEFAULT RIGHT WINDOW WIDTH: 18
-	******************************************************************************
-
-	This shell relies on having commservice.js, commclient.js, and all other related
-	"/sbbs/exec/" & "/sbbs/exec/load/" files up to date. The shell will automatically
-	be linked to inter-BBS chat if you are running commservice.js as a node
-	
-	Much of the lightbar menu code has been taken from lbshell.js, by Deuce. 
-
-*/
-
-bbs.command_str='';	// clear STR (Contains the EXEC for default.js)
-load("nodedefs.js");
-load("lightbar.js");
-load("str_cmds.js");
-load("chateng.js");
-load("graphic.js");
-load("funclib.js");
-load("clock.js");
-load("cshell_menu.js");
-load("cshell_obj.js");
-
-const root=js.exec_dir;
-var settings_file=new File(
-	system.data_dir + 	"user/" + printPadded(user.number,4,"0","right") + ".shell.ini"
-);
-
-var screen_rows=console.screen_rows;
-var screen_columns=console.screen_columns;
-var full_redraw=false;
-var orig_passthru=console.ctrlkey_passthru;
-
-var cmdlist=new CommandList();
-var settings=new Settings();
-var favorites=new Favorites();
-var bottom=new BottomLine();
-var right=new RightWindow();
-var center=new MainWindow();
-var left=new LeftWindow();
-
-/* SHELL FUNCTIONS */
-function init()
-{
-	loadSettings();
-	bottom.init();
-	right.init();
-	center.init();
-	left.init();
-	
- 	if(favorites.items.length > 0) {
-		loadMenu("favorites");
-		showLeftWindow();
-	}
-	redraw();
-	if(left.menu && left.menu.node_action) bbs.node_action=left.menu.node_action;
-	else bbs.node_action=NODE_MAIN;
-}
-function shell()
-{
-	while(!js.terminated) {
-		cycle();
-		var cmd="";
-		if(left.menu) {
-			cmd=left.menu.getval();
-			/* LEFT MENU COMMAND PROCESSING */
-			switch(cmd)
-			{
-			case ctrl('R'): /* CTRL-R (Quick Redraw in SyncEdit) */
-			case ctrl('O'): /* CTRL-O - Pause */
-			case ctrl('U'): /* CTRL-U User List */
-			case ctrl('T'): /* CTRL-T Time Info */
-			case ctrl('K'): /* CTRL-K Control Key Menu */
-			case ctrl('P'): /* Ctrl-P Messages */
-			case ctrl('C'): /* Ctrl-P ABORT */
-				handleCtrlKey(cmd);
-				continue;
-			case KEY_UP:
-				lightBarUp(left.menu);
-				break;
-			case KEY_DOWN:
-				lightBarDown(left.menu);
-				break;
-			case KEY_HOME:
-				lightBarHome(left.menu);
-				break;
-			case KEY_END:
-				lightBarEnd(left.menu);
-				break;
-			case KEY_LEFT:
-				previousMenu();
-				break;
-			case KEY_RIGHT:
-			case "Q":
-			case "\x1b":
-				hideLeftWindow();
-				center.restore();
-				bottom.restore();
-				continue;
-			case "+":
-				if(left.currentmenu == "favorites" || 
-					left.currentmenu == "addfavorite" ||
-					left.currentmenu == "removefavorite") {
-					break;
-				}
-				favorites.mi=left.currentmenu;
-				favorites.mt=left.menu.title;
-				favorites.ii=left.menu.current;
-				favorites.it=left.menu.items[favorites.ii].text.substr(3);
-				loadMenu("addfavorite");
-				break;
-			default:
-				if(left.menu.items[cmd]) {
-					var item_id=left.menu.items[cmd].id;
-					left.process(item_id);
-				}
-				break;
-			}
-		}
-		
-		if(!cmd) cmd=console.inkey(K_NOCRLF|K_NOSPIN|K_NOECHO|K_UPPER,5);
-		if(!cmd) continue;
-		
-		/* MAIN MENU PROCESS */
-		switch(cmd)
-		{
-		case ctrl('R'): /* CTRL-R (Quick Redraw in SyncEdit) */
-		case ctrl('O'): /* CTRL-O - Pause */
-		case ctrl('U'): /* CTRL-U User List */
-		case ctrl('T'): /* CTRL-T Time Info */
-		case ctrl('K'): /* CTRL-K Control Key Menu */
-		case ctrl('P'): /* Ctrl-P Messages */
-		case ctrl('C'): /* Ctrl-P ABORT */
-			handleCtrlKey(cmd);
-			continue;
-		case " ":
-			redraw();
-			break;
-		case "-":
-			if(!favorites.items.length > 0) {
-				break;
-			}
-			loadMenu("delfavorite");
-			break;
-		case "\x1b":
-		case "Q":
-			center.quitChat();
-			return false;
-		default:
-			var sc=bottom.menu.items[cmd];
-			if(sc && sc.enabled) {
-				cmdlist[sc.command].apply(cmdlist[sc.command],sc.parameters);
-			}
-			break;
-		}
-		
-		if(!left.menu) continue;
-		if(!left.menu_shown) showLeftWindow();
-		if(!left.title_shown) left.drawTitle();
-		
-		if(menuinfo[left.currentmenu]) {
-			menuinfo[left.currentmenu]();
-		}
-	}
-}
-function cycle()
-{
-	/* Update node action */
-	if(bbs.node_action != system.node_list[bbs.node_num-1].action)
-		system.node_list[bbs.node_num-1].action = bbs.node_action;
-
-	/* Check for messages */
-	if(system.node_list[bbs.node_num-1].misc & NODE_MSGW) {
-		if(!center.in_chat) right.addNotice();
-		center.notice(system.get_telegram(user.number));
-	}
-	if(system.node_list[bbs.node_num-1].misc & NODE_NMSG) {
-		if(!center.in_chat) right.addNotice();
-		center.notice(system.get_node_message(bbs.node_num));
-	}	
-
-	/* Fix up node status */
-	if(system.node_list[bbs.node_num-1].status==NODE_WFC) {
-		system.node_list[bbs.node_num-1].status=NODE_INUSE;
-	}
-
-	/* Check if user data has changed */
-	if((system.node_list[bbs.node_num-1].misc & NODE_UDAT) && user.compare_ars("REST NOT G")) {
-		user.cached=false;
-		system.node_list[bbs.node_num-1].misc &= ~NODE_UDAT;
-	}
-
-	/* Interrupted? */
-	if(system.node_list[bbs.node_num-1].misc & NODE_INTR) {
-		bbs.hangup();
-	}
-
-	/* Sysop Chat? */
-	if(system.node_list[bbs.node_num-1].misc & NODE_LCHAT) {
-		// TODO: No way of calling bbs.priave_chat(true)
-		// bbs.private_chat();
-		bbs.nodesync();
-		full_redraw=true;
-	}
-
-	right.cycle();
-	center.cycle();
-	left.cycle();
-	
-	if(full_redraw) {
-		redraw();
-	}
-}
-
-/* GLOBAL FUNCTIONS */
-function handleCtrlKey(key)
-{
-	switch(key) {
-		case ctrl('C'): /* Ctrl-P ABORT */
-			console.aborted=false;
-			break;
-	}
-}
-function getHotkey(item)
-{
-	var index=item.indexOf("|")+1;
-	return item[index].toUpperCase();
-}	
-function redraw()
-{
-	console.clear(ANSI_NORMAL);
-	drawTopline();
-	drawOutline();
-	
-	center.redraw();
-	right.redraw();
-	left.redraw();
-	bottom.redraw();
-	
-	if(menuinfo[left.currentmenu]) {
-		menuinfo[left.currentmenu]();
-	}
-	
-	bbs.sys_status|=SS_PAUSEOFF;	
-	console.ctrlkey_passthru="+KOPTUC";
-	full_redraw=false;
-}
-function loadWallPaper(file)
-{
-	if(!file_exists(file)) return false;
-	
-	var width=0;
-	var height=0;
-	var size=file_getname(file).split(".")[1].split("x");
-	if(size[0]) width=Number(size[0]);
-	if(size[1]) height=Number(size[1]);
-	
-	var wp=new Graphic(width,height);
-	wp.load(file);
-	return wp;
-}
-function drawTitle(x,y,str)
-{
-	console.attributes=BG_LIGHTGRAY + BLACK;
-	var top=printPadded("",str.length,"\xDF");
-	var middle=str;
-	var bottom=printPadded("",str.length,"\xDC");
-	console.gotoxy(x,y);
-	console.pushxy();
-	console.putmsg(top,P_SAVEATR);
-	console.popxy();
-	console.down();
-	console.pushxy();
-	console.putmsg(middle,P_SAVEATR);
-	console.popxy();
-	console.down();
-	console.putmsg(bottom,P_SAVEATR);
-}
-function drawSeparator(x,y)
-{
-	console.gotoxy(x,y);
-	console.pushxy();
-	console.attributes=BG_BLACK + (settings.shell_bg>>4);
-	for(var i=0;i<settings.main_height;i++) {
-		console.putmsg("\xB3",P_SAVEATR);
-		console.popxy();
-		console.down();
-		console.pushxy();
-	}
-}
-function drawTopline()
-{
-	var sysname=" \1k" + system.name + " : \1b" + system.location;
-	var sysop="\1kSysOp : \1b" + system.operator + " ";
-	var title=splitPadded(sysname,sysop,console.screen_columns," ");
-
-	console.home();
-	console.attributes=settings.shell_bg;
-	console.putmsg(title,P_SAVEATR);
-}
-function drawOutline()
-{
-	console.attributes=BG_BLACK + (settings.shell_bg>>4);
-	var outline=splitPadded("\xDD","\xDE",console.screen_columns," ");
-	for(var l=2;l<console.screen_rows;l++) {
-		console.gotoxy(1,l);
-		console.putmsg(outline,P_SAVEATR);
-	}
-}
-function displayInfo(text)
-{
-	console.putmsg(text);
-	console.popxy();
-	console.down();
-	console.pushxy();
-}
-function setPosition(x,y)
-{
-	console.gotoxy(x,y);
-	console.pushxy();
-}
-function logoff()
-{
-	center.quitChat();
-	if(bbs.batch_dnload_total) {
-		if(console.yesno(bbs.text(Menu_downloadBatchQ))) {
-			bbs.batch_download();
-			bbs.logoff();
-		}
-	} else bbs.hangup();
-}
-function chatInput()
-{
-	showChat();
-	while(center.in_chat) {
-		cycle();
-		var key=console.inkey(K_NOCRLF|K_NOSPIN|K_NOECHO,5);
-		if(!key) continue;
-		
-		switch(key) {
-		case '\r':
-			if(!center.chat.input_line.buffer.length) {
-				center.in_chat=false;
-			}
-			break;
-		case '\x09':	/* CTRL-I TAB */
-			center.toggleChannel();
-			continue;
-		case '\x1b':
-			center.in_chat=false;
-			break;
-		default:
-			break;
-		}
-		center.chat.processKey(key);
-	}
-	hideChat();
-}
-
-/* MAIN MENU */
-function hideChat()
-{
-	if(left.menu && left.menu.node_action) bbs.node_action=left.menu.node_action;
-	else bbs.node_action=NODE_MAIN;
-	center.chat.chatroom.active=false;
-	center.redraw();
-	bottom.restore();
-}
-function showChat()
-{
-	center.in_chat=true;
-	right.chat_msgs=0;
-	right.notices=0;
-	right.update=true;
-	bbs.node_action=NODE_CHAT;
-	center.chat.chatroom.active=true;
-	center.redraw();
-	console.gotoxy(1,center.chat.input_line.y);
-	console.cleartoeol(settings.shell_bg);
-	console.right();
-	console.attributes=BG_LIGHTGRAY;
-	console.putmsg("\1k\xDDCHAT:",P_SAVEATR);
-	console.attributes=settings.shell_bg;
-	console.putmsg("\1k\xDD",P_SAVEATR);
-	center.chat.input_line.clear();
-}
- 
-/* MAIN WINDOW */
-function stretchCenter(height)
-{
-	var rows=this.rows;
-	rows+=height;
-	center.chat.resize(undefined,rows,undefined,undefined);
-}
-function expandCenter(width,side)
-{
-	var cols=center.chat.chatroom.columns;
-	var x=center.chat.chatroom.x;
-	if(side=="left"){
-		x-=width;
-		cols+=width;
-	}
-	if(side=="right"){
-		cols+=width;
-	}
-	center.chat.resize(cols,undefined,x,undefined);
-}
-
-/* LEFT MENU */
-function hideLeftWindow()
-{
-	expandCenter(settings.menu_width+1,"left");
-	delete left.menu;
-	left.currentmenu="";
-	left.menu_shown=false;
-	left.title_shown=false;
-	left.previous=[];
-}
-function showLeftWindow()
-{
-	expandCenter(-(settings.menu_width+1),"left");
-	drawSeparator(settings.menu_width+2,2,settings.main_height);
-	left.menu_shown=true;
-}
-function lightBarUp(m)
-{
-	do {
-		if(m.current==0)
-			m.current=m.items.length;
-		m.current--;
-	} while(m.items[m.current].disabled || m.items[m.current].retval==undefined);
-}
-function lightBarHome(m)
-{
-	m.current=0;
-	while(m.items[m.current].disabled || m.items[m.current].retval==undefined) {
-		m.current++;
-		if(m.current==m.items.length)
-			m.current=0;
-	}
-}
-function lighBarEnd(m)
-{
-	left.menu.current=left.menu.items.length-1;
-	while(left.menu.items[left.menu.current].disabled || left.menu.items[left.menu.current].retval==undefined) {
-		if(m.current==0)
-			m.current=m.items.length;
-		m.current--;
-	}
-}
-function lightBarDown(m)
-{
-	do {
-		m.current++;
-		if(m.current==m.items.length)
-			m.current=0;
-	} while(m.items[m.current].disabled || m.items[m.current].retval==undefined);
-}
-function previousMenu()
-{
-	left.previousMenu();
-}
-function addcmd(text,id,disabled)
-{
-	this.add(text,undefined,settings.menu_width,undefined,undefined,disabled);
-	this.items[this.items.length-1].id=id;
-}
-function fill_menu(lb)
-{
-	if(left.previous.length) offset=5;
-	else offset=4;
-	
-	while(lb.items.length<settings.main_height-offset)
-	{
-		lb.add("","",settings.menu_width,undefined,undefined,true);
-	}
-	
-	if(left.previous.length) lb.add(format_opt("Previous Menu",settings.menu_width,-1),KEY_LEFT,settings.menu_width);
-	lb.add(format_opt("Main Menu",settings.menu_width,0),KEY_RIGHT,settings.menu_width);
-}
-function set_hotkeys(lb)
-{
-	/* USE FIRST AVAILABLE HOTKEY AS TRIGGER */
-	/* RETURN VALUE = ITEM INDEX FOR MENU COMMAND REFERENCE */
-	var hotkeys="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-	var index=0;
-	for(var i=0;i<lb.items.length;i++) {
-		if(lb.items[i].disabled) continue;
-		
-		while(bottom.menu.items[hotkeys[index]]) index++;
-		lb.items[i].text="|" + hotkeys[index++] + " " + lb.items[i].text;
-		lb.items[i].retval=i;
-	}
-}
-function loadMenu()
-{
-	return left.loadMenu.apply(left,arguments);
-}
-
-/* MENU FUNCTIONS */
-function format_opt(str, width, expand)
-{
-	var spaces80="                                                                               ";
-	if(expand == -1) {
-		opt='|< ';
-		var cleaned=str;
-		cleaned=cleaned.replace(/\|/g,'');
-		opt+=str+spaces80.substr(0,width-cleaned.length-2);
-		return opt;
-	} else if(expand == 0) {
-		opt=str;
-		var cleaned=opt;
-		cleaned=cleaned.replace(/\|/g,'');
-		opt+=spaces80.substr(0,width-cleaned.length-2);
-		opt+=' |>';
-		return opt;
-	} else if(expand == 1) {
-		opt=str;
-		var cleaned=opt;
-		cleaned=cleaned.replace(/\|/g,'');
-		opt+=spaces80.substr(0,width-cleaned.length-2);
-		opt+=' |+';
-		return opt;
-	}
-	return(str);
-}
-function todo_getfiles(lib, dir)
-{
-	var path=format("%s%s.ixb", file_area.lib_list[lib].dir_list[dir].data_dir, file_area.lib_list[lib].dir_list[dir].code);
-	return(file_size(path)/22);	/* F_IXBSIZE */
-}
-function clear_screen()
-{
-	/*
-	 * Called whenever a command needs to exit the menu for user interaction.
-	 *
-	 * If you'd like a header before non-menu stuff, this is the place to put
-	 * it.
-	 */
-
-	bbs.sys_status&=~SS_PAUSEOFF;
-	console.clear(ANSI_NORMAL);
-	full_redraw=true;
-	
-	/* We are going to a line-mode thing... re-enable CTRL keys. */
-}
-
-/* USER SETTINGS */
-function saveSettings() 
-{
-	settings_file.open('w+',false);
-	if(!settings_file.is_open) {
-		log("error opening user settings",LOG_WARNING);
-		return;
-	}
-	settings_file.iniSetObject("settings",settings);
-	for(var f=0;f<favorites.items.length;f++) {
-		var fav=favorites.items[f];
-		var value=
-			fav.menuID + "," + 
-			fav.menuTitle + "," + 
-			fav.itemID + "," + 
-			fav.itemTitle + "," + 
-			fav.xtrnsec;
-		settings_file.iniSetValue("favorites",f,value);
-	}
-	settings_file.close();
-}
-function loadSettings()
-{
-	if(file_exists(settings_file.name)) {
-		settings_file.open('r',true);
-		if(!settings_file.is_open) {
-			log("error opening user settings",LOG_WARNING);
-			return;
-		}
-		var set=settings_file.iniGetObject("settings");
-		var fav=settings_file.iniGetObject("favorites");
-		settings=new Settings(set);
-		favorites=new Favorites(fav);
-		settings_file.close();
-	}
-}
-
-init();
-shell();