diff --git a/exec/default.src b/exec/default.src
index 9ec5c74d68dc5bcb0307e6657ef12b8438b935dd..0f4fbf16afd04b621901706d8bc51157b76245bc 100644
--- a/exec/default.src
+++ b/exec/default.src
@@ -214,7 +214,7 @@ if_true
 cmdkey A
 	auto_message
 	end_cmd
-    
+
 cmdkey /A
 	compare_ars ANSI and not GUEST
 	if_false
@@ -265,7 +265,7 @@ cmdkey I
 cmdkey J
 	msg_select_area
 	end_cmd
-    
+
 cmdkey L
     msg_list
     end_cmd
@@ -277,7 +277,7 @@ cmdkey /L
 cmdkey W
 	nodelist_users
 	end_cmd
-    
+
 cmdkey M
 	minute_bank
 	end_cmd
@@ -387,7 +387,7 @@ cmdkey /*
 	end_cmd
 
 cmdkey &
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
@@ -457,50 +457,6 @@ cmdkey Q
 cmd_pop
 return
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_user_misc UM_expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\1y\1hConfig: \1n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_user_misc UM_expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -753,11 +709,11 @@ cmdkey L
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
-   
+
 cmdkey N
 	print "\r\n\1c\1hNew File Scan\r\n"
 	file_new_scan
@@ -874,7 +830,7 @@ cmdkey &
                     end_if
                 crlf
 		end_cmd
-    
+
 	cmdkey E
                 crlf
 		toggle_user_misc UM_EXTDESC
diff --git a/exec/major.src b/exec/major.src
index 84b980aeb52b5bd7c093aa5288a0e6fddbc04752..e00e694632d9d6dc646b5878fecf7ba0cc1c21f2 100644
--- a/exec/major.src
+++ b/exec/major.src
@@ -230,42 +230,7 @@ cmdkey Q
                 end_cmd
 
 	cmdstr C
-		cmd_home
-		menu maincfg
-		async
-		print "\r\n\x01y\x01hConfig: \x01n"
-		getcmd ?QNPIS
-		logkey
-
-		cmdkey ?
-			compare_ars expert
-			if_true
-				menu maincfg
-				end_if
-			end_cmd
-
-		cmdkey N
-			msg_new_scan_cfg
-			end_cmd
-
-		cmdkey S
-			msg_your_scan_cfg
-			end_cmd
-
-		cmdkey P
-			msg_ptrs_cfg
-			end_cmd
-
-		cmdkey I
-			msg_ptrs_reinit
-			end_cmd
-
-		cmdkey Q
-			cmd_pop
-			end_cmd
-
-		end_cmd
-        cmd_pop
+		exec_bin "msgscancfg"
         end_cmd
 
 cmdkey T
diff --git a/exec/msgscancfg.js b/exec/msgscancfg.js
new file mode 100644
index 0000000000000000000000000000000000000000..bcd159eebe73568906c6589f8e21e22286d6a039
--- /dev/null
+++ b/exec/msgscancfg.js
@@ -0,0 +1,44 @@
+// Message Scan Configuration menu
+
+require("sbbsdefs.js", "USER_EXPERT");
+
+"use strict";
+
+const menufile = "maincfg";
+
+while(bbs.online) {
+	if(!(user.settings & USER_EXPERT))
+		bbs.menu(menufile);
+	bbs.nodesync();
+	console.print("\r\n\x01y\x01hConfig: \x01n");
+	var key = console.getkeys("?QNPISRW\r");
+	bbs.log_key(key);
+
+	switch(key) {
+		case '?':
+			if(user.settings & USER_EXPERT)
+				bbs.menu(menufile);
+			continue;
+		case 'N':
+			bbs.cfg_msg_scan(SCAN_CFG_NEW);
+			break;
+		case 'S':
+			bbs.cfg_msg_scan(SCAN_CFG_TOYOU);
+			break;
+		case 'P':
+			bbs.cfg_msg_ptrs();
+			break;
+		case 'I':
+			bbs.reinit_msg_ptrs();
+			break;
+		case 'R':
+			bbs.reload_msg_scan();
+			console.print("\r\nMessage scan configuration and pointers re-loaded.\r\n");
+			break;
+		case 'W':
+			bbs.save_msg_scan();
+			console.print("\r\nMessage scan configuration and pointers saved.\r\n");
+			break;
+	}
+	exit();
+}
diff --git a/exec/renegade.src b/exec/renegade.src
index 99cb064a3d8f1385a0e9884f8c2a09f6c6435dcf..78e9dc2d74b9fe098bd9bae23042b2afd2273e08 100644
--- a/exec/renegade.src
+++ b/exec/renegade.src
@@ -281,7 +281,7 @@ cmdkey N
 		end_if
 	if_true
 		mail_send_netmail
-	else	
+	else
 		mail_send_netfile
 		end_if
 	end_cmd
@@ -316,50 +316,6 @@ if_true
 crlf
 end_cmd
 
-
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_ars expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_ars expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -530,7 +486,7 @@ cmdkey L
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
@@ -748,7 +704,7 @@ cmdkey C
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
@@ -818,7 +774,7 @@ cmdkey Y
 	end_cmd
 
 cmdkey Z
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
diff --git a/exec/sdos.src b/exec/sdos.src
index 35db2e32cca46eae0b3c6df4901d3212d35265bb..7e4bd7d319cda42aed5a9c47ad8049e27c2ad17c 100644
--- a/exec/sdos.src
+++ b/exec/sdos.src
@@ -468,7 +468,7 @@ if_true
 	nodelist_all
 	return
 	end_if
-    
+
 compare_word who
 if_true
 	nodelist_users
@@ -556,7 +556,7 @@ cmdstr "dir"
 	end_cmd
 
 cmdstr "config"
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdstr "send"
@@ -648,47 +648,4 @@ cmdstr "readmsgs"
 call global
 end_cmd
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_user_misc UM_expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_user_misc UM_expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 # End of SDOS.SRC
diff --git a/exec/simple.src b/exec/simple.src
index 3b97fccf4c76ddc391b4b05e43bd878efa825ac8..63d9d840ec782172eed344def75ab67c653b6e4c 100644
--- a/exec/simple.src
+++ b/exec/simple.src
@@ -154,7 +154,7 @@ cmdstr R
 		end_cmd
 
 	cmdstr C
-	       call msg_cfg
+	       exec_bin "msgscancfg"
 	       end_cmd
 
       # Quit back to main menu
@@ -349,37 +349,4 @@ if_true
 	end_if
 return
 
-########################### Msg Config Section	##############################
-
-:msg_cfg
-
-menu maincfg
-async
-print "\r\n\x01y\x01hCommand: \x01n"
-getstrupr 10
-logkey
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
-
 #end of SIMPLE.SRC
diff --git a/exec/wildcat.src b/exec/wildcat.src
index 5d1479d2da03052915b780cbe48bf4a573e0b16a..a72af51e7ad7af17e62c344b8033fb055a6b488f 100644
--- a/exec/wildcat.src
+++ b/exec/wildcat.src
@@ -399,43 +399,7 @@ cmdkey C
         end_cmd
 
 cmdkey U
-	cmd_home
-	compare_ars expert
-	if_false
-		menu maincfg
-		end_if
-	async
-	print "\r\n\x01y\x01hConfig: \x01n"
-	getcmd ?QNPIS
-	logkey
-
-	cmdkey ?
-		compare_ars expert
-		if_true
-			menu maincfg
-			end_if
-		end_cmd
-
-	cmdkey N
-		msg_new_scan_cfg
-		end_cmd
-
-	cmdkey S
-		msg_your_scan_cfg
-		end_cmd
-
-	cmdkey P
-		msg_ptrs_cfg
-		end_cmd
-
-	cmdkey I
-		msg_ptrs_reinit
-		end_cmd
-
-	cmdkey Q
-		cmd_pop
-		end_cmd
-
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey H
@@ -531,9 +495,9 @@ cmdkey D
 	if_true
 		compare_ars "UNIX"
 		if_true
-			exec_int "%y -i"	
+			exec_int "%y -i"
 		else
-			exec_int "%y"	
+			exec_int "%y"
 			end_if
 		end_if
 	end_cmd
diff --git a/exec/wwiv.src b/exec/wwiv.src
index 9845796a089532f8f36252f83a35c18748fce640..22d1709286e30688b551cf2838cfe2ca36480d4b 100644
--- a/exec/wwiv.src
+++ b/exec/wwiv.src
@@ -170,7 +170,7 @@ cmdkey L
 cmdkey /L
 	nodelist_users
 	end_cmd
-    
+
 cmdkey W
     nodelist_all
     end_cmd
@@ -273,7 +273,7 @@ cmdkey /*
 	end_cmd
 
 cmdkey &
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
@@ -342,49 +342,6 @@ cmdkey Q
 cmd_pop
 return
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_ars expert
-if_false
-	menu MAINCFG
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_ars expert
-	if_true
-		menu MAINCFG
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -570,7 +527,7 @@ cmdkey L
 cmdkey /L
 	nodelist_users
 	end_cmd
-    
+
 cmdkey W
     nodelist_all
     end_cmd
diff --git a/text/menu/maincfg.msg b/text/menu/maincfg.msg
index 474ab204ddb422b5a6f4a7857088c04c98265751..e3a74006ee61685ffbc8f758b9b4beec9345952e 100755
--- a/text/menu/maincfg.msg
+++ b/text/menu/maincfg.msg
@@ -6,7 +6,9 @@
 �W HCSY NCAreas to scan for your messagesW�B�
 � HCP NCSet new-scan pointersW�B�
 � HCI NCReinitialize new-scan pointersW�B�
+� HCR NCReload new-scan config & pointers WB�
+� HCW NCSave new-scan config & pointers   WB�
 ۲����������������������������������IJ�
-� HCQ NCQuit to Main menuW�B�
+� HCQ NCQuit to Main/Message menu         WB�
 ���������������������������������������
-Z
\ No newline at end of file
+Z