diff --git a/exec/load/xtrnmenulib.js b/exec/load/xtrnmenulib.js
index 71e6e790c4bf2278e337328dbdbddd6611a1341d..5a0bf122bbcaa96d2cb6c32b80143bdd2ea0a0ca 100644
--- a/exec/load/xtrnmenulib.js
+++ b/exec/load/xtrnmenulib.js
@@ -43,147 +43,208 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
 	if (typeof menutype === "undefined") {
 		menutype = 'custommenu';
 	}
-	
+
 	// Get xtrn_sec options from modopts.ini [xtrn_sec]
 	if ((this.options = load({}, "modopts.js", "xtrn_sec")) == null) {
 		this.options = { multicolumn: true, sort: false };
 	}
-	
-	// Get xtrn_custommenu options from modopts.ini [xtrn_custommenu]
+
+	// Get xtrn_custommenu options from modopts.d/xtrnmenu.ini [xtrnmenu]
 	if ((this.xtrn_custommenu_options = load({}, "modopts.js", "xtrnmenu")) == null) {
 		this.xtrn_custommenu_options = { };
 	}
-	
-	// in all cases, we start with the xtrn_sec options as the base and set the defaults
-	if (this.options.multicolumn === undefined)
+
+	// We start with the option from xtrnmenu. If it doesn't exist,
+	// we use the option from xtrn_sec (if applicable). And if that doesn't exist, we use the 
+	// default (system or in code).
+
+	if (typeof this.xtrn_custommenu_options.multicolumn !== "undefined") {
+		this.options.multicolumn = this.xtrn_custommenu_options.multicolumn;
+	} else if (typeof this.options.multicolumn === "undefined") {
 		this.options.multicolumn = true;
-	
-	if (this.options.multicolumn_separator === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.multicolumn_separator !== "undefined") {
+		this.options.multicolumn_separator = this.xtrn_custommenu_options.multicolumn_separator;
+	} else if (typeof this.options.multicolumn_seperator === "undefined") {
 		this.options.multicolumn_separator = " ";
-	
-	if (this.options.multicolumn_fmt === undefined)
-		this.options.multicolumn_fmt = system.text(XtrnProgLstFmt);
-	
-	if (this.options.singlecolumn_fmt === undefined)
-		this.options.singlecolumn_fmt = "\x01h\x01c%3u \xb3 \x01n\x01c%s\x01h ";
-	
-	if (this.options.multicolumn_fmt_inverse === undefined)
-		this.options.multicolumn_fmt_inverse = system.text(XtrnProgLstFmt);
-	
-	if (this.options.singlecolumn_fmt_inverse === undefined)
-		this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3u \xb3 \x01n\x01c%s\x01h ";
-	
-	if (this.options.singlecolumn_margin == undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") {
+		this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt;
+	} else if (typeof this.options.multicolumn_fmt === "undefined") {
+		// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
+		this.options.multicolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%-32.32s\x01h ";
+	}
+
+	if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") {
+		this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt;
+	} else if (typeof this.options.singlecolumn_fmt === "undefined") {
+		// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
+		this.options.singlecolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%s\x01h ";
+	}
+
+	if (typeof this.xtrn_custommenu_options.multicolumn_fmt_inverse !== "undefined") {
+		this.options.multicolumn_fmt_inverse = this.xtrn_custommenu_options.multicolumn_fmt_inverse;
+	} else {
+		// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
+		this.options.multicolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%-32.32s \x01n\x01h";
+	}
+
+	if (typeof this.xtrn_custommenu_options.singlecolumn_fmt_inverse !== "undefined") {
+		this.options.singlecolumn_fmt_inverse = this.xtrn_custommenu_options.singlecolumn_fmt_inverse;
+	} else {
+		// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
+		this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%s \x01n\x01h";
+	}
+
+	if (typeof this.xtrn_custommenu_options.return_multicolumn_fmt !== "undefined") {
+		this.options.return_multicolumn_fmt = this.xtrn_custommenu_options.return_multicolumn_fmt;
+	} else if (typeof this.options.return_multicolumn_fmt === "undefined") {
+		// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
+		this.options.return_multicolumn_fmt = this.options.multicolumn_fmt;
+	}
+
+	if (typeof this.xtrn_custommenu_options.return_singlecolumn_fmt !== "undefined") {
+		this.options.return_singlecolumn_fmt = this.xtrn_custommenu_options.return_singlecolumn_fmt;
+	} else if (typeof this.options.return_singlecolumn_fmt === "undefined") {
+		// cannot default to xtrn_sec singlecolumn_fmt due to use of %u instead of %s
+		this.options.return_singlecolumn_fmt = this.options.singlecolumn_fmt;
+	}
+
+	if (typeof this.xtrn_custommenu_options.return_multicolumn_fmt_inverse !== "undefined") {
+		this.options.return_multicolumn_fmt_inverse = this.xtrn_custommenu_options.return_multicolumn_fmt_inverse;
+	} else if (typeof this.options.return_multicolumn_fmt_inverse === "undefined") {
+		this.options.return_multicolumn_fmt_inverse = this.options.multicolumn_fmt_inverse;
+	}
+
+	if (typeof this.xtrn_custommenu_options.return_singlecolumn_fmt_inverse !== "undefined") {
+		this.options.return_singlecolumn_fmt_inverse = this.xtrn_custommenu_options.return_singlecolumn_fmt_inverse;
+	} else if (typeof this.options.return_singlecolumn_fmt_inverse === "undefined") {
+		this.options.return_singlecolumn_fmt_inverse = this.options.singlecolumn_fmt_inverse;
+	}
+
+	this.options.multicolumn_fmt_special = typeof this.xtrn_custommenu_options.multicolumn_fmt_special !== "undefined"
+		? this.xtrn_custommenu_options.multicolumn_fmt_special : this.options.multicolumn_fmt;
+
+	this.options.singlecolumn_fmt_special = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special !== "undefined"
+		? this.xtrn_custommenu_options.singlecolumn_fmt_special : this.options.singlecolumn_fmt;
+
+	this.options.multicolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.multicolumn_fmt_special_inverse !== "undefined"
+		? this.xtrn_custommenu_options.multicolumn_fmt_special_inverse : this.options.multicolumn_fmt_inverse;
+
+	this.options.singlecolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse !== "undefined"
+		? this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse : this.options.singlecolumn_fmt_inverse;
+
+	this.options.return_singlecolumn_special_fmt = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt
+		? this.xtrn_custommenu_options.return_singlecolumn_special_fmt : this.options.singlecolumn_fmt;
+
+	this.options.return_multicolumn_special_fmt = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt
+		? this.xtrn_custommenu_options.return_multicolumn_special_fmt : this.options.multicolumn_fmt;
+
+	this.options.return_singlecolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse
+		? this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse : this.options.singlecolumn_fmt_inverse;
+
+	this.options.return_multicolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse
+		? this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse : this.options.multicolumn_fmt_inverse_inverse;
+
+	if (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined") {
+		this.options.singlecolumn_margin = this.xtrn_custommenu_options.singlecolumn_margin;
+	} else if (typeof this.options.singlecolumn_margin === "undefined") {
 		this.options.singlecolumn_margin = 7;
-	
-	if (this.options.restricted_user_msg === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.restricted_user_msg !== "undefined") {
+		this.options.restricted_user_msg = this.xtrn_custommenu_options.restricted_user_msg;
+	} else if (typeof this.options.restricted_user_msg === "undefined") {
 		this.options.restricted_user_msg = system.text(R_ExternalPrograms);
-	
-	if (this.options.no_programs_msg === undefined)
-		this.options.no_programs_msg =  system.text(NoXtrnPrograms);
-	
-	if (this.options.header_fmt === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.no_programs_msg !== "undefined") {
+		this.options.no_programs_msg = this.xtrn_custommenu_options.no_programs_msg;
+	} else if (typeof this.options.no_programs_msg === "undefined") {
+		this.options.no_programs_msg = system.text(NoXtrnPrograms);
+	}
+
+	if (typeof this.xtrn_custommenu_options.header_fmt !== "undefined") {
+		this.options.header_fmt = this.xtrn_custommenu_options.header_fmt;
+	} else if (typeof this.options.header_fmt === "undefined") {
 		this.options.header_fmt = system.text(XtrnProgLstHdr);
-	
-	if (this.options.titles === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.titles !== "undefined") {
+		this.options.titles = this.xtrn_custommenu_options.titles;
+	} else if (typeof this.options.title === "undefined") {
 		this.options.titles = system.text(XtrnProgLstTitles);
-	
-	if (this.options.underline === undefined)
-		this.options.underline = system.text(XtrnProgLstUnderline);
-	
-	if (this.options.which === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.which !== "undefined") {
+		this.options.which = this.xtrn_custommenu_options.which;
+	} else if (typeof this.options.which === "undefined") {
 		this.options.which = system.text(WhichXtrnProg);
-	
-	if (this.options.clear_screen === undefined)
+	}
+
+	if (typeof this.xtrn_custommenu_options.underline !== "undefined") {
+		this.options.underline = this.xtrn_custommenu_options.underline;
+	} else if (typeof this.options.underline === "undefined") {
+		this.options.underline = system.text(XtrnProgLstUnderline);
+	}
+
+	if (typeof this.xtrn_custommenu_options.clear_screen !== "undefined") {
+		this.options.clear_screen = this.xtrn_custommenu_options.clear_screen;
+	} else if (typeof this.options.clear_screen === "undefined") {
 		this.options.clear_screen = true;
-	
-	if (this.options.section_fmt === undefined)
-		this.options.section_fmt = "\x01y\x01g%3d:\x01n\x01g %s"
-	
-	if (this.options.section_header_fmt === undefined)
-		this.options.section_header_fmt = "\x01-\x01gSelect \x01hExternal Program Section\x01-\x01g:"
-	
-	if (this.options.section_which === undefined)
-		this.options.section_which = "\r\n\x01-\x01gWhich, \x01w\x01h~Q\x01n\x01guit or [1]: \x01h"
-	
-	if (typeof (this.options.use_xtrn_sec) == "undefined") {
-		this.options.use_xtrn_sec = false;
 	}
+
+	if (typeof this.xtrn_custommenu_options.section_fmt !== "undefined") {
+		this.options.section_fmt = this.xtrn_custommenu_options.section_fmt;
+	} else if (typeof this.options.section_fmt === "undefined") {
+		this.options.section_fmt = "\x01y\x01g%3d:\x01n\x01g %s";
+	}
+
+	if (typeof this.xtrn_custommenu_options.section_header_fmt !== "undefined") {
+		this.options.section_header_fmt = this.xtrn_custommenu_options.section_header_fmt;
+	} else if (typeof this.options.section_header_fmt === "undefined") {
+		this.options.section_header_fmt = "\x01-\x01gSelect \x01hExternal Program Section\x01-\x01g:";
+	}
+
+	if (typeof this.xtrn_custommenu_options.section_which !== "undefined") {
+		this.options.section_which = this.xtrn_custommenu_options.section_which;
+	} else if (typeof this.options.section_which === "undefined") {
+		this.options.section_which = "\r\n\x01-\x01gWhich, \x01w\x01h~Q\x01n\x01guit or [1]: \x01h";
+	}
+
+	if (typeof this.xtrn_custommenu_options.sort !== "undefined") {
+		this.options.sort = this.xtrn_custommenu_options.sort;
+	} else if (typeof this.options.sort === "undefined") {
+		this.options.sort = false;
+	}
+
+	this.options.custom_menu_not_found_msg = (typeof this.options.custom_menu_not_found_msg !== "undefined")
+		? this.options.custom_menu_not_found_msg : "Menu %MENUID% not found";
 	
-	// if its a custom menu, then override with custommenu_options
-	if (menutype == 'custommenu') {
-		if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") {
-			this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt;
-		} else {
-			// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
-			this.options.multicolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%-32.32s\x01h ";
-		}
-		
-		if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") {
-			this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt;
-		} else {
-			// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
-			this.options.singlecolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%s\x01h ";
-		}
-		
-		if (typeof this.xtrn_custommenu_options.multicolumn_fmt_inverse !== "undefined") {
-			this.options.multicolumn_fmt_inverse = this.xtrn_custommenu_options.multicolumn_fmt_inverse;
-		} else {
-			// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
-			this.options.multicolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%-32.32s \x01n\x01h";
-		}
-		
-		if (typeof this.xtrn_custommenu_options.singlecolumn_fmt_inverse !== "undefined") {
-			this.options.singlecolumn_fmt_inverse = this.xtrn_custommenu_options.singlecolumn_fmt_inverse;
-		} else {
-			// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
-			this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%s \x01n\x01h";
-		}
-		
-		this.options.header_fmt = (typeof this.xtrn_custommenu_options.header_fmt !== "undefined")
-			? this.xtrn_custommenu_options.header_fmt : this.options.header_fmt;
-		
-		this.options.titles = (typeof this.xtrn_custommenu_options.titles !== "undefined")
-			? this.xtrn_custommenu_options.titles : this.options.titles;
-		
-		this.options.which = (typeof this.xtrn_custommenu_options.which !== "undefined")
-			? this.xtrn_custommenu_options.which : this.options.which;
-		
-		this.options.underline = (typeof this.xtrn_custommenu_options.underline !== "undefined")
-			? this.xtrn_custommenu_options.underline : this.options.underline;
-		
-		this.options.multicolumn_separator = (typeof this.xtrn_custommenu_options.multicolumn_separator !== "undefined")
-			? this.xtrn_custommenu_options.multicolumn_separator : this.options.multicolumn_separator;
-		
-		this.options.multicolumn = (typeof this.xtrn_custommenu_options.multicolumn !== "undefined")
-			? this.xtrn_custommenu_options.multicolumn : this.options.multicolumn;
-		
-		this.options.sort = (typeof this.xtrn_custommenu_options.sort !== "undefined")
-			? this.xtrn_custommenu_options.sort : this.options.sort;
-		
-		this.options.clear_screen = (typeof this.xtrn_custommenu_options.clear_screen !== "undefined")
-			? this.xtrn_custommenu_options.clear_screen : this.options.clear_screen;
-		
-		this.options.singlecolumn_margin = (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined")
-			? this.xtrn_custommenu_options.singlecolumn_margin : this.options.singlecolumn_margin;
-		
-		if (typeof bbs !== "undefined") {
-			// override and turn off multicolumn if terminal width is less than 80
-			if (console.screen_columns < 80)
-				options.multicolumn = false;
-		}
-		
-		// no need to override restricted_user_msg or no_programs_msg - these
-		// will be the same for both types of menus
-		
-		// Allow overriding on a per-menu basis
-		var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid);
-		if ((typeof menuid !== "undefined") && (menuoptions !== null)) {
-			for (var m in menuoptions) {
-				this.options[m] = menuoptions[m];
-			}
+	this.options.custom_menu_program_not_found_msg = (typeof this.options.custom_menu_program_not_found_msg  !== "undefined")
+		? this.options.custom_menu_program_not_found_msg  : "Menu %MENUID% not found";
+
+	this.options.use_xtrn_sec = (typeof this.xtrn_custommenu_options.use_xtrn_sec !== "undefined")
+		? this.xtrn_custommenu_options.use_xtrn_sec : false;
+	
+	this.options.custom_quit_msg = (typeof this.xtrn_custommenu_options.custom_quit_msg !== "undefined")
+		? this.xtrn_custommenu_options.custom_quit_msg : 'Quit';
+
+	this.options.custom_return_msg = (typeof this.xtrn_custommenu_options.custom_return_msg !== "undefined")
+		? this.xtrn_custommenu_options.custom_return_msg : 'Return to Previous Menu';
+
+	// Allow overriding on a per-menu basis
+	var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid);
+	if ((typeof menuid !== "undefined") && (menuoptions !== null)) {
+		for (var m in menuoptions) {
+			this.options[m] = menuoptions[m];
 		}
 	}
+
+	this.options.custom_logoff_msg = (typeof this.xtrn_custommenu_options.custom_logoff_msg !== "undefined")
+		? this.xtrn_custommenu_options.custom_logoff_msg : 'Logoff';
 	
 	this.options.json_enabled = (typeof this.xtrn_custommenu_options.json_enabled !== undefined)
 		? this.xtrn_custommenu_options.json_enabled : false;
@@ -197,20 +258,6 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
 	this.options.blacklist_tracking_xtrnsec = (typeof this.xtrn_custommenu_options.blacklist_tracking_xtrnsec !== undefined)
 		? this.xtrn_custommenu_options.blacklist_tracking_xtrnsec : "";
 	
-	// these options only apply to terminals/consoles
-	
-	// the intention is to obtain all the mod_opts options for xtrn_sec, and
-	// override if a custom menu global setting is set
-	
-	//// The following are used for the enhanced custom menu functionality
-	if (this.options.custom_menu_not_found_msg === undefined) {
-		this.options.custom_menu_not_found_msg = "Menu %MENUID% not found";
-	}
-	
-	if (this.options.custom_menu_program_not_found_msg === undefined) {
-		this.options.custom_menu_program_not_found_msg = "Program %PROGRAMID% not found";
-	}
-	
 	this.options.custom = this.xtrn_custommenu_options;
 
 	return this.options;
diff --git a/exec/xtrnmenu.js b/exec/xtrnmenu.js
index 40e27710a7265c6f0a5d3e271f7faa64d3050b86..76ab2c42eb0bf517cc96d2ece123bb14de90001e 100644
--- a/exec/xtrnmenu.js
+++ b/exec/xtrnmenu.js
@@ -559,15 +559,6 @@ function external_menu_custom(menuid)
 	var multicolumn_fmt_inverse = options.multicolumn_fmt_inverse;
 	var singlecolumn_fmt_inverse = options.singlecolumn_fmt_inverse;
 	
-	var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
-		? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
-	var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
-		? options.custom.return_multicolumn_fmt : multicolumn_fmt;
-	var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
-		? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
-	var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
-		? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;	
-	
 	while (bbs.online) {
 		console.aborted = false;
 		
@@ -609,21 +600,21 @@ function external_menu_custom(menuid)
 		if (gamesrv && (menuid == 'main')) {
 			menuitemsfiltered.push({
 				input: 'Q',
-				title: options.custom_logoff_msg !== undefined ? options.custom_logoff_msg : 'Logoff',
+				title: options.custom_logoff_msg,
 				target: '',
 				type: 'quit',
 			});
 		} else if (menuid == 'main') {
 			menuitemsfiltered.push({
 				input: 'Q',
-				title: options.custom.quit_msg !== undefined ? options.custom.quit_msg : 'Quit',
+				title: options.custom.quit_msg,
 				target: '',
 				type: 'quit',
 			});
 		} else {
 			menuitemsfiltered.unshift({
 				input: 'Q',
-				title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu',
+				title: options.custom.return_msg,
 				target: '',
 				type: 'quit',
 			});
@@ -697,48 +688,34 @@ function external_menu_custom(menuid)
 				
 				// allow overriding format on a per-item basis
 				// great for featuring a specific game
-				var checkkey = menuitemsfiltered[i].target + '-multicolumn_fmt';
-				checkkey = checkkey.toLowerCase();
+				var checkkey = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt';
 				item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ?
 					options[checkkey] : options.multicolumn_fmt;
-				item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ?
-					options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse;
+				var checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt_inverse';
+				item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
+					options[checkkeyinv] : options.multicolumn_fmt_inverse;
 				
-				checkkey = menuitemsfiltered[i].target + '-singlecolumn_fmt'
-				checkkey = checkkey.toLowerCase();
+				checkkey = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt';
+				checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt_inverse';
 				item_singlecolumn_fmt = (typeof options[checkkey] !== "undefined") ?
 					options[checkkey] : options.singlecolumn_fmt;
-				item_singlecolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ?
-					options[checkkey + "_inverse"] : options.singlecolumn_fmt_inverse;
+				item_singlecolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
+					options[checkkeyinv] : options.singlecolumn_fmt_inverse;
 				
-				if (i == selected_index) {
-					if (menuitemsfiltered[i].type == 'quit') {
-						printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-							menuitemsfiltered[i].input.toString().toUpperCase(),
-							menuitemsfiltered[i].title,
-							''
-						);
-					} else {
-						printf(multicolumn ? item_multicolumn_fmt_inverse : item_singlecolumn_fmt_inverse,
-							menuitemsfiltered[i].input.toString().toUpperCase(),
-							menuitemsfiltered[i].title,
-							cost
-						);
-					}
+				if (selected_index == i) {
+					printf(
+						menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse,
+						menuitemsfiltered[i].input.toString().toUpperCase(),
+						menuitemsfiltered[i].title,
+						menuitemsfiltered[i].type == 'quit' ? '' : cost
+					);
 				} else {
-					if (menuitemsfiltered[i].type == 'quit') {
-						printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
-							menuitemsfiltered[i].input.toString().toUpperCase(),
-							menuitemsfiltered[i].title,
-							''
-						);
-					} else {
-						printf(multicolumn ? item_multicolumn_fmt : item_singlecolumn_fmt,
-							menuitemsfiltered[i].input.toString().toUpperCase(),
-							menuitemsfiltered[i].title,
-							cost
-						);
-					}
+					printf(
+						menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt,
+						menuitemsfiltered[i].input.toString().toUpperCase(),
+						menuitemsfiltered[i].title,
+						menuitemsfiltered[i].type == 'quit' ? '' : cost
+					);
 				}
 				
 				if (multicolumn) {
@@ -754,47 +731,30 @@ function external_menu_custom(menuid)
 						
 						// allow overriding format on a per-item basis
 						// great for featuring a specific game
-						var checkkey = menuitemsfiltered[j].target + '-multicolumn_fmt';
-						checkkey = checkkey.toLowerCase();
+						var checkkey = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt';
 						item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ?
 							options[checkkey] : options.multicolumn_fmt;
-						item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ?
-							options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse;
-						
-						checkkey = menuitemsfiltered[j].target + '-singlecolumn_fmt'
-						checkkey = checkkey.toLowerCase();
+						var checkkeyinv = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt_inverse';
+						item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
+							options[checkkeyinv] : options.multicolumn_fmt_inverse;
 						
 						write(options.multicolumn_separator);
 						console.add_hotspot(menuitemsfiltered[j].input.toString());
 						
 						if (selected_index == j) {
-							if (menuitemsfiltered[j].type == 'quit') {
-								printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-									menuitemsfiltered[j].input.toString().toUpperCase(),
-									menuitemsfiltered[j].title,
-									''
-								);					
-							} else {
-								printf(item_multicolumn_fmt_inverse,
-									menuitemsfiltered[j].input.toString().toUpperCase(),
-									menuitemsfiltered[j].title,
-									cost
-								);
-							}
+							printf(
+								menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse,
+								menuitemsfiltered[j].input.toString().toUpperCase(),
+								menuitemsfiltered[j].title,
+								menuitemsfiltered[j].type == 'quit' ? '' : cost
+							);
 						} else {
-							if (menuitemsfiltered[j].type == 'quit') {
-								printf(return_multicolumn_fmt,
-									menuitemsfiltered[j].input.toString().toUpperCase(),
-									menuitemsfiltered[j].title,
-									''
-								);
-							} else {
-								printf(item_multicolumn_fmt,
-									menuitemsfiltered[j].input.toString().toUpperCase(),
-									menuitemsfiltered[j].title,
-									cost
-								);
-							}
+							printf(
+								menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt,
+								menuitemsfiltered[j].input.toString().toUpperCase(),
+								menuitemsfiltered[j].title,
+								menuitemsfiltered[j].type == 'quit' ? '' : cost
+							);
 						}
 					} else {
 						write(options.multicolumn_separator);
@@ -830,8 +790,8 @@ function external_menu_custom(menuid)
 		var maxkeylen = 0;
 		var maxfirstkey = 0;
 		var morekeys = [];
-		var k;
-		for (k in validkeys) {
+
+		for (var k in validkeys) {
 			if (validkeys[k] == "\x1B") {
 				continue;
 			}
@@ -1025,25 +985,6 @@ function special_menu(menutype, title, itemcount) {
 	
 	var options = ExternalMenus.getOptions('custommenu', menuid);
 	
-	// Allow overriding auto-format on a per-menu basis
-	var multicolumn_fmt = options.custom.multicolumn_fmt_special !== undefined 
-		? options.custom.multicolumn_fmt_special : options.multicolumn_fmt;
-	var singlecolumn_fmt = options.custom.singlecolumn_fmt_special !== undefined
-		? options.custom.singlecolumn_fmt_special : options.singlecolumn_fmt;
-	var multicolumn_fmt_inverse = options.custom.multicolumn_fmt_special_inverse !== undefined
-		? options.custom.multicolumn_fmt_special_inverse : options.multicolumn_fmt_inverse;
-	var singlecolumn_fmt_inverse = options.custom.singlecolumn_fmt_special_inverse !== undefined
-		? options.custom.singlecolumn_fmt_special_inverse : options.singlecolumn_fmt_inverse;
-	
-	var return_singlecolumn_special_fmt = options.custom.return_singlecolumn_special_fmt !== undefined
-		? options.custom.return_singlecolumn_special_fmt : singlecolumn_fmt;
-	var return_multicolumn_special_fmt = options.custom.return_multicolumn_special_fmt !== undefined
-		? options.custom.return_multicolumn_special_fmt : multicolumn_fmt;
-	var return_singlecolumn_special_fmt_inverse = options.custom.return_singlecolumn_special_fmt_inverse !== undefined
-		? options.custom.return_singlecolumn_special_fmt_inverse : singlecolumn_fmt_inverse;
-	var return_multicolumn_special_fmt_inverse = options.custom.return_multicolumn_special_fmt_inverse !== undefined
-		? options.custom.return_multicolumn_special_fmt_inverse : multicolumn_fmt_inverse;
-	
 	while (bbs.online) {
 		console.aborted = false;
 		
@@ -1071,7 +1012,7 @@ function special_menu(menutype, title, itemcount) {
 		// The quit item is intended to aid in the lightbar navigation
 		menuitemsfiltered.unshift({
 			input: 'Q',
-			title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu',
+			title: options.custom.return_msg,
 			target: '',
 			type: 'quit',
 		});
@@ -1127,74 +1068,50 @@ function special_menu(menutype, title, itemcount) {
 			}
 			
 			if (i == selected_index) {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_inverse,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title,
-						''
-					);
-				} else {
-					printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title,
-						menuitemsfiltered[i].stats
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_special_fmt_inverse : options.return_singlecolumn_special_fmt_inverse;
+				var itemformat = multicolumn ? options.multicolumn_fmt_special_inverse : options.singlecolumn_fmt_special_inverse
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat, 
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title,
+					menuitemsfiltered[i].type == 'quit' ? '' : menuitemsfiltered[i].stats
+				);
 			} else {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_special_fmt : return_singlecolumn_special_fmt,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title,
-						''
-					);
-				} else {
-					printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title,
-						menuitemsfiltered[i].stats
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_special_fmt : options.return_singlecolumn_special_fmt;
+				var itemformat = multicolumn ? options.multicolumn_fmt_special : options.singlecolumn_fmt_special
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title,
+					menuitemsfiltered[i].type == 'quit' ? '' : menuitemsfiltered[i].stats
+				);
 			}
-			
+
 			if (multicolumn) {
 				if (typeof menuitemsfiltered[j] !== "undefined") {
 					validkeys.push(menuitemsfiltered[j].input.toString());
-					
+
 					if (menuitemsfiltered[j].input > keymax) {
 						keymax = menuitemsfiltered[i].input;
 					}
-					
+
 					write(options.multicolumn_separator);
 					console.add_hotspot(menuitemsfiltered[j].input.toString());
 					
-					if (selected_index == j) {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_inverse,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title,
-								''
-							);
-						} else {
-							printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title,
-								menuitemsfiltered[j].stats
-							);
-						}
+					if (j == selected_index) {
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt_inverse : options.multicolumn_fmt_special_inverse,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title,
+							menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats
+						);
 					} else {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_special_fmt : return_singlecolumn_special_fmt,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title,
-								''
-							);
-						} else {
-							printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title,
-								menuitemsfiltered[j].stats
-							);
-						}
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt : options.multicolumn_fmt_special,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title,
+							menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats
+						);
 					}
 				} else {
 					write(options.multicolumn_separator);
@@ -1367,15 +1284,6 @@ function search_menu(title, itemcount) {
 	
 	var options = ExternalMenus.getOptions('custommenu', menuid);
 	
-	var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
-		? options.custom.return_multicolumn_fmt : multicolumn_fmt;
-	var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
-		? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
-	var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
-		? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
-	var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
-		? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;
-	
 	while (bbs.online) {
 		console.aborted = false;
 		
@@ -1403,7 +1311,8 @@ function search_menu(title, itemcount) {
 			if (!searchterm) {
 				return;
 			} else {
-				console.crlf();
+				console.up();
+				console.clearline();
 				printf(typeof options.custom.searchresultsheader !== "undefined"
 					? options.custom.searchresultsheader : "\x01n\x01cSearch Results for \x01h%s", searchterm);
 			}
@@ -1531,31 +1440,23 @@ function search_menu(title, itemcount) {
 			}
 			
 			if (i == selected_index) {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-						menuitemsfiltered[i].input.toString().toUpperCase(),
-						menuitemsfiltered[i].title,
-						''
-					);
-				} else {
-					printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
+				var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse;
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title,
+					''
+				);
 			} else {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
-						menuitemsfiltered[i].input.toString().toUpperCase(),
-						menuitemsfiltered[i].title,
-						''
-					);
-				} else {
-					printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
+				var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt;
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title,
+					''
+				);
 			}
 			
 			if (multicolumn) {
@@ -1569,31 +1470,23 @@ function search_menu(title, itemcount) {
 					console.add_hotspot(menuitemsfiltered[j].input.toString());
 					
 					if (j == selected_index) {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-								menuitemsfiltered[j].input.toString().toUpperCase(),
-								menuitemsfiltered[j].title,
-								''
-							);
-						} else {
-							printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						}
+						var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
+						var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse;
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title,
+							''
+						);
 					} else {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
-								menuitemsfiltered[j].input.toString().toUpperCase(),
-								menuitemsfiltered[j].title,
-								''
-							);
-						} else {
-							printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						}
+						var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
+						var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt;
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title,
+							''
+						);
 					}
 				} else {
 					write(options.multicolumn_separator);
@@ -1798,21 +1691,6 @@ function favorites_menu(title, itemcount) {
 	
 	var options = ExternalMenus.getOptions('custommenu', menuid);
 	
-	// Allow overriding auto-format on a per-menu basis
-	var multicolumn_fmt = options.multicolumn_fmt;
-	var singlecolumn_fmt = options.singlecolumn_fmt;
-	var multicolumn_fmt_inverse = options.multicolumn_fmt_inverse;
-	var singlecolumn_fmt_inverse = options.singlecolumn_fmt_inverse;
-	
-	var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
-		? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
-	var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
-		? options.custom.return_multicolumn_fmt : multicolumn_fmt;
-	var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
-		? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
-	var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
-		? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;
-	
 	while (bbs.online) {
 		console.aborted = false;
 		
@@ -1835,21 +1713,21 @@ function favorites_menu(title, itemcount) {
 		// The quit item is intended to aid in the lightbar navigation
 		menuitemsfiltered.unshift({
 			input: 'Q',
-			title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu',
+			title: options.custom.return_msg,
 			target: '',
 			type: 'quit'
 		});
 		
 		menuitemsfiltered.push({
 			input: '+',
-			title: options.custom.favorite_add_item !== undefined ? options.custom.favorite_add_item : 'Add Item',
+			title: options.custom.favorite_add_item,
 			target: '',
 			type: 'add'
 		});
 		
 		menuitemsfiltered.push({
 			input: '-',
-			title: options.custom.favorite_remove_item !== undefined ? options.custom.favorite_remove_item : 'Remove Item',
+			title: options.custom.favorite_remove_item,
 			target: '',
 			type: 'remove'
 		});
@@ -1904,29 +1782,21 @@ function favorites_menu(title, itemcount) {
 			}
 			
 			if (i == selected_index) {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				} else {
-					printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
+				var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title
+				);
 			} else {
-				if (menuitemsfiltered[i].type == 'quit') {
-					printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				} else {
-					printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
-						menuitemsfiltered[i].input,
-						menuitemsfiltered[i].title
-					);
-				}
+				var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
+				var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt
+				printf(
+					menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
+					menuitemsfiltered[i].input,
+					menuitemsfiltered[i].title
+				);
 			}
 			
 			if (multicolumn) {
@@ -1940,30 +1810,22 @@ function favorites_menu(title, itemcount) {
 					write(options.multicolumn_separator);
 					console.add_hotspot(menuitemsfiltered[j].input.toString());
 					
-					if (selected_index == j) {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						} else {
-							printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						}
+					if (j == selected_index) {
+						var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
+						var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title
+						);
 					} else {
-						if (menuitemsfiltered[j].type == 'quit') {
-							printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						} else {
-							printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
-								menuitemsfiltered[j].input,
-								menuitemsfiltered[j].title
-							);
-						}
+						var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
+						var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt
+						printf(
+							menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
+							menuitemsfiltered[j].input,
+							menuitemsfiltered[j].title
+						);
 					}
 				} else {
 					write(options.multicolumn_separator);