diff --git a/exec/cshell.js b/exec/cshell.js
index 64e926997e4f23351c76cfa61c0097b21be05de7..3b9c73a52f3a43286b847d584ff33e81be4a241c 100644
--- a/exec/cshell.js
+++ b/exec/cshell.js
@@ -54,9 +54,6 @@ var screen_rows=console.screen_rows;
 var screen_columns=console.screen_columns;
 var full_redraw=false;
 var orig_passthru=console.ctrlkey_passthru;
-bbs.sys_status|=SS_MOFF;
-bbs.sys_status|=SS_PAUSEOFF;	
-console.ctrlkey_passthru="+KOPTU";
 
 var cmdlist=new CommandList();
 var settings=new Settings();
@@ -76,7 +73,7 @@ function init()
 	center.init();
 	left.init();
 	
-	if(favorites.items.length > 0) {
+ 	if(favorites.items.length > 0) {
 		loadMenu("favorites");
 		showLeftWindow();
 	}
@@ -218,6 +215,10 @@ function redraw()
 		menuinfo[left.currentmenu]();
 	}
 	
+	bbs.sys_status|=SS_MOFF;
+	bbs.sys_status|=SS_PAUSEOFF;	
+	console.ctrlkey_passthru="+KOPTU";
+	
 	full_redraw=false;
 }
 function drawTitle(x,y,str)
@@ -241,7 +242,7 @@ function drawSeparator(x,y)
 {
 	console.gotoxy(x,y);
 	console.pushxy();
-	console.attributes=BG_BLACK + settings.shell_fg;
+	console.attributes=BG_BLACK + (settings.shell_bg>>4);
 	for(var i=0;i<settings.main_height;i++) {
 		console.putmsg("\xB3",P_SAVEATR);
 		console.popxy();
@@ -261,7 +262,7 @@ function drawTopline()
 }
 function drawOutline()
 {
-	console.attributes=BG_BLACK + settings.shell_fg;
+	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);
@@ -508,6 +509,7 @@ function saveSettings()
 		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=
diff --git a/exec/load/cshell_menu.js b/exec/load/cshell_menu.js
index d6d10d8143bddd65012b1922c9af39472662ce23..fd32ea4136c31822e8c7ec9b8ba899716db097c6 100644
--- a/exec/load/cshell_menu.js
+++ b/exec/load/cshell_menu.js
@@ -99,6 +99,9 @@ menuobj["settings"]=function() {
 	this.items=new Array();
 	this.addcmd("User Configuration","U");
 	this.addcmd("Minute Bank","B");
+	this.addcmd("File Settings","F");
+	this.addcmd("Chat Settings","C");
+	this.addcmd("Shell Settings","S");
 	set_hotkeys(this);
 	fill_menu(this);
 	this.node_action=NODE_DFLT;
@@ -283,6 +286,78 @@ menuobj["chatsettings"]=function() {
 	fill_menu(this);
 	this.node_action=NODE_DFLT;
 }
+menuobj["shellsettings"]=function() {
+	this.title="COLOR SETTINGS";
+	this.items=new Array();
+	this.addcmd("Shell Background","sbg");
+	this.addcmd("Main Hotkeys","mhk");
+	this.addcmd("Main Foreground","mtx");
+	this.addcmd("Menu Foreground","mfg");
+	this.addcmd("Menu Background","mbg");
+	this.addcmd("Lightbar Foreground","lfg");
+	this.addcmd("Lightbar Background","lbg");
+	this.addcmd("Local Chat","cl");
+	this.addcmd("Remote Chat","cr");
+	this.addcmd("Global Chat","cg");
+	this.addcmd("Private Chat","cp");
+	this.addcmd("",undefined,true);
+	this.addcmd("Save Settings","s");
+	set_hotkeys(this);
+	fill_menu(this);
+	this.node_action=NODE_DFLT;
+}
+menuobj["setcolorbg"]=function() {
+	this.title="BACKGROUND COLORS";
+	this.items=new Array();
+	this.addcmd("BLACK","BG_BLACK");
+	this.addcmd("BLUE","BG_BLUE");
+	this.addcmd("GRAY","BG_GRAY");
+	this.addcmd("GREEN","BG_GREEN");
+	this.addcmd("BROWN","BG_BROWN");
+	this.addcmd("RED","BG_RED");
+	this.addcmd("CYAN","BG_CYAN");
+	this.addcmd("MAGENTA","BG_MAGENTA");
+	set_hotkeys(this);
+	fill_menu(this);
+	this.node_action=NODE_DFLT;
+}
+menuobj["setcolorfbg"]=function() {
+	this.title="COLORS";
+	this.items=new Array();
+	this.addcmd("BLACK","BLACK");
+	this.addcmd("BLUE","BLUE");
+	this.addcmd("GRAY","GRAY");
+	this.addcmd("GREEN","GREEN");
+	this.addcmd("BROWN","BROWN");
+	this.addcmd("RED","RED");
+	this.addcmd("CYAN","CYAN");
+	this.addcmd("MAGENTA","MAGENTA");
+	set_hotkeys(this);
+	fill_menu(this);
+	this.node_action=NODE_DFLT;
+}
+menuobj["setcolorfg"]=function() {
+	this.title="FOREGROUND COLORS";
+	this.items=new Array();
+	this.addcmd("BLACK","BLACK");
+	this.addcmd("BLUE","BLUE");
+	this.addcmd("LIGHT BLUE","LIGHTBLUE");
+	this.addcmd("LIGHT GRAY","LIGHTGRAY");
+	this.addcmd("DARK GRAY","DARKGRAY");
+	this.addcmd("GREEN","GREEN");
+	this.addcmd("LIGHT GREEN","LIGHTGREEN");
+	this.addcmd("RED","RED");
+	this.addcmd("LIGHT RED","LIGHTRED");
+	this.addcmd("CYAN","CYAN");
+	this.addcmd("LIGHT CYAN","LIGHTCYAN");
+	this.addcmd("YELLOW","YELLOW");
+	this.addcmd("BROWN","BROWN");
+	this.addcmd("MAGENTA","MAGENTA");
+	this.addcmd("LIGHT MAGENTA","LIGHTMAGENTA");
+	set_hotkeys(this);
+	fill_menu(this);
+	this.node_action=NODE_DFLT;
+}
 
 /* MENU COMMANDS */
 var menucmd=[];
@@ -320,6 +395,7 @@ menucmd["favorites"]=function(key) {
 			key=this.menu.items[fav.itemID].id;
 			this.process(key);
 		}
+		this.loadMenu("favorites");
 	}
 }
 menucmd["addfavorite"]=function(key) {
@@ -424,10 +500,8 @@ menucmd["xtrnsecs"]=function(key) {
 }
 menucmd["xtrnsec"]=function(key) {
 	clear_screen();
-	var current_passthru=console.ctrlkey_passthru;
 	bbs.exec_xtrn(xtrn_area.sec_list[this.xtrnsec].prog_list[Number(key)].number);
-	console.ctrlkey_passthru=current_passthru;
-	full_redraw=true;
+	console.ctrlkey_passthru=console.ctrlkey_passthru;
 }
 menucmd["file"]=function(key) {
 	var i;
@@ -931,10 +1005,10 @@ menucmd["message"]=function(key) {
 			this.redraw();
 			break;
 		case 'N':
-			this.loadMenu("newscan");
+			this.loadMenu("newmsgscan");
 			break;
 		case 'Y':
-			this.loadMenu("scantoyou");
+			this.loadMenu("yourmsgscan");
 			break;
 		case 'T':
 			this.loadMenu("searchmsgtxt");
@@ -1004,8 +1078,11 @@ menucmd["yourmsgscan"]=function(key) {
 			clear_screen();
 			console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n");
 			for(j=0; j<msg_area.grp_list.length; j++) {
-				for(i=0; i<msg_area.grp_list[j].sub_list.length; i++)
-					bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_TOYOU);
+				for(i=0; i<msg_area.grp_list[j].sub_list.length; i++) {
+					log("scanning base: " + i);
+					log("scanning group: " + j);
+					bbs.scan_posts(msg_area.grp_list[j].sub_list[i].number, SCAN_TOYOU);
+				}
 			}
 			this.redraw();
 			break;
@@ -1248,8 +1325,79 @@ menucmd["settings"]=function(key) {
 			bbs.time_bank();
 			this.redraw();
 			break;
+		case 'F':
+			this.loadMenu("filesettings");
+			break;
+		case 'C':
+			this.loadMenu("chatsettings");
+			break;
+		case 'S':
+			this.loadMenu("shellsettings");
+			break;
 	}
 }
+menucmd["shellsettings"]=function(key) {
+	switch(key) 
+	{
+	case "sbg":
+		settings.temp="shell_bg";
+		this.loadMenu("setcolorbg");
+		break;
+	case "mhk":
+		settings.temp="main_hkey_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "mtx":
+		settings.temp="main_text_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "mfg":
+		settings.temp="menu_fg";
+		this.loadMenu("setcolorfg");
+		break;
+	case "mbg":
+		settings.temp="menu_bg";
+		this.loadMenu("setcolorbg");
+		break;
+	case "lfg":
+		settings.temp="menu_hfg";
+		this.loadMenu("setcolorfg");
+		break;
+	case "lbg":
+		settings.temp="menu_hbg";
+		this.loadMenu("setcolorfbg");
+		break;
+	case "cl":
+		settings.temp="chat_local_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "cr":
+		settings.temp="chat_remote_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "cg":
+		settings.temp="chat_global_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "cp":
+		settings.temp="chat_private_color";
+		this.loadMenu("setcolorfg");
+		break;
+	case "s":
+		saveSettings();
+		break;
+	}
+}
+menucmd["setcolorfg"]=function(key) {
+	settings[settings.temp]=getColor(key);
+	this.init();
+	var current=this.currentmenu;
+	this.currentmenu="";
+	this.loadMenu(current);
+	full_redraw=true;
+}
+menucmd["setcolorbg"]=menucmd["setcolorfg"];
+menucmd["setcolorfbg"]=menucmd["setcolorfg"];
 
 /* MENU INFO */
 var menuinfo=[];
diff --git a/exec/load/cshell_obj.js b/exec/load/cshell_obj.js
index 0a843c37d1d7b0c66075eea121021de7b81cd672..c8dc9e64a7da9385b95d8c234168b6295092768a 100644
--- a/exec/load/cshell_obj.js
+++ b/exec/load/cshell_obj.js
@@ -261,30 +261,9 @@ function LeftWindow()
 	this.init=function()
 	{
 		SideBar.prototype=new Lightbar;
-		
-		menuobj["main"].prototype=new SideBar;
-		menuobj["file"].prototype=new SideBar;
-		menuobj["filedir"].prototype=new SideBar;
-		menuobj["settings"].prototype=new SideBar;
-		menuobj["email"].prototype=new SideBar;
-		menuobj["message"].prototype=new SideBar;
-		menuobj["chat"].prototype=new SideBar;
-		menuobj["xtrnsecs"].prototype=new SideBar;
-		menuobj["xtrnsec"].prototype=new SideBar;
-		menuobj["info"].prototype=new SideBar;
-		menuobj["userlist"].prototype=new SideBar;
-		menuobj["emailtarget"].prototype=new SideBar;
-		menuobj["download"].prototype=new SideBar;
-		menuobj["upload"].prototype=new SideBar;
-		menuobj["fileinfo"].prototype=new SideBar;
-		menuobj["filesettings"].prototype=new SideBar;
-		menuobj["newmsgscan"].prototype=new SideBar;
-		menuobj["yourmsgscan"].prototype=new SideBar;
-		menuobj["searchmsgtxt"].prototype=new SideBar;
-		menuobj["chatsettings"].prototype=new SideBar;
-		menuobj["favorites"].prototype=new SideBar;
-		menuobj["addfavorite"].prototype=new SideBar;
-		menuobj["delfavorite"].prototype=new SideBar;
+		for(var m in menuobj) {
+			menuobj[m].prototype=new SideBar;
+		}
 	}
 	this.cycle=function()
 	{
@@ -365,7 +344,6 @@ function SideBar()
 function Settings(list)
 {
 	this.shell_bg=BG_BROWN;
-	this.shell_fg=BROWN;
 	
 	this.main_hkey_color=YELLOW;
 	this.main_text_color=BLACK;