diff --git a/exec/xtrn_sec.js b/exec/xtrn_sec.js
index e1f846b335d1d21a995ff07469793775ed6b5e31..e2dd5b6ef231cdd2313fb63bdad91eb54fb3d917 100644
--- a/exec/xtrn_sec.js
+++ b/exec/xtrn_sec.js
@@ -123,11 +123,15 @@ function external_program_menu(xsec)
 
 		var secnum = xtrn_area.sec_list[xsec].number+1;
 		var seccode = xtrn_area.sec_list[xsec].code;
-		if(!bbs.menu("xtrn" + secnum + "_head", P_NOERROR))
-			bbs.menu("xtrn" + seccode + "_head", P_NOERROR);
+		if(!bbs.menu("xtrn" + secnum + "_head", P_NOERROR) &&
+			!bbs.menu("xtrn" + seccode + "_head", P_NOERROR)) {
+			bbs.menu("xtrn_head", P_NOERROR);
+		}
 		if(bbs.menu("xtrn" + secnum, P_NOERROR) || bbs.menu("xtrn" + seccode, P_NOERROR)) {
-			if(!bbs.menu("xtrn" + secnum + "_tail", P_NOERROR))
-				bbs.menu("xtrn" + seccode + "_tail", P_NOERROR);
+			if(!bbs.menu("xtrn" + secnum + "_tail", P_NOERROR) &&
+				!bbs.menu("xtrn" + seccode + "_tail", P_NOERROR)) {
+				bbs.menu("xtrn_tail", P_NOERROR);
+			}
 		}
 		else {
 			var multicolumn = options.multicolumn && prog_list.length > options.singlecolumn_height;
@@ -176,8 +180,10 @@ function external_program_menu(xsec)
 				}
 				console.crlf();
 			}
-			if(!bbs.menu("xtrn" + secnum + "_tail", P_NOERROR))
-				bbs.menu("xtrn" + seccode + "_tail", P_NOERROR);
+			if(!bbs.menu("xtrn" + secnum + "_tail", P_NOERROR)
+				&& !bbs.menu("xtrn" + seccode + "_tail", P_NOERROR)) {
+				bbs.menu("xtrn_tail", P_NOERROR);
+			}
 			bbs.node_sync();
 			console.mnemonics(options.which);
 		}
@@ -216,37 +222,38 @@ function external_section_menu()
 		bbs.node_action=NODE_XTRN;
 		bbs.node_sync();
 
+		if(options.clear_screen)
+			console.clear(LIGHTGRAY);
+
+		bbs.menu("xtrn_sec_head", P_NOERROR);
+
 		if(bbs.menu_exists("xtrn_sec")) {
 			bbs.menu("xtrn_sec");
-			xsec=console.getnum(sec_list.length);
-			if(xsec<=0)
-				break;
-			xsec--;
+			bbs.menu("xtrn_sec_tail", P_NOERROR);
 		}
 		else {
-			if(options.clear_screen)
-				console.clear(LIGHTGRAY);
-
 			if(options.sort)
 				sec_list.sort(sort_by_name);
 
-			printf(options.section_header_fmt, options.section_header_title);
-
+			printf(options.section_header_fmt.replace('\x01l', ''), options.section_header_title);
 			for (i = 0; i < sec_list.length; i++) {
 				console.add_hotspot(i+1);
 				printf(options.section_fmt, i + 1, sec_list[i].name);
 			}
 
+			bbs.menu("xtrn_sec_tail", P_NOERROR);
+			
 			bbs.node_sync();
 			console.mnemonics(format(options.section_which, xsec + 1));
-
-			xsec = console.getnum(sec_list.length, xsec + 1);
-			if(xsec < 1)
-				break;
-			xsec--;
 		}
 
-        external_program_menu(sec_list[xsec].index);
+		bbs.node_sync();
+		xsec=console.getnum(sec_list.length);
+		if(xsec<=0)
+			break;
+		xsec--;
+		
+		external_program_menu(sec_list[xsec].index);
     }
 }