diff --git a/web/lib/html_themes.ssjs b/web/lib/html_themes.ssjs
index f9ca779d2d521c66a175746294a1a6eafeca3440..b2ee141c2c773503e36cba29bf03d0c719fcf37b 100644
--- a/web/lib/html_themes.ssjs
+++ b/web/lib/html_themes.ssjs
@@ -36,6 +36,45 @@ do_rightnav = Themes[CurrTheme].do_rightnav;
 do_footer = Themes[CurrTheme].do_footer;
 do_extra = Themes[CurrTheme].do_extra;
 template.image_dir = Themes[CurrTheme].image_dir;
+var lib_dir = Themes[CurrTheme].lib_dir;
+
+/* Auto discovery of Theme Specific lib files */
+
+if(file_exists(lib_dir + '/global_defs.ssjs'))
+	var global_defs = lib_dir + '/global_defs.ssjs';
+else
+	var global_defs = '../web/lib/global_defs.ssjs';
+
+if(file_exists(lib_dir + '/leftnav_html.ssjs'))
+	var leftnav_html = lib_dir + '/leftnav_html.ssjs';
+else
+	var leftnav_html = '../web/lib/leftnav_html.ssjs';
+
+if(file_exists(lib_dir + '/leftnav_nodelist.ssjs'))
+	var leftnav_nodelist = lib_dir + '/leftnav_nodelist.ssjs';
+else
+	var leftnav_nodelist = '../web/lib/leftnav_nodelist.ssjs';
+
+if(file_exists(lib_dir + '/main_nodelist.ssjs'))
+	var main_nodelist = lib_dir + '/main_nodelist.ssjs';
+else
+	var main_nodelist = '../web/lib/main_nodelist.ssjs';
+
+if(file_exists(lib_dir + '/msgsconfig.ssjs'))
+	var msgsconfig = lib_dir + '/msgsconfig.ssjs';
+else
+	var msgsconfig = '../web/lib/msgsconfig.ssjs';
+
+if(file_exists(lib_dir + '/siteutils.ssjs'))
+	var siteutils = lib_dir + '/siteutils.ssjs';
+else
+	var siteutils = '../web/lib/siteutils.ssjs';
+
+if(file_exists(lib_dir + '/topnav_html.ssjs'))
+	var topnav_html = lib_dir + '/topnav_html.ssjs';
+else
+	var topnav_html = '../web/lib/topnav_html.ssjs';
+
 
 if(http_request.query.force_ssjs_theme != undefined) {
     if(http_request.query.force_ssjs_theme[0] != undefined && Themes[http_request.query.force_ssjs_theme[0]] != undefined)
diff --git a/web/lib/msgslib.ssjs b/web/lib/msgslib.ssjs
index 6583449db6b1f203d74f68fc9551ed33b3d7711b..f852ed320492a789662144127a61f30c59a88288 100644
--- a/web/lib/msgslib.ssjs
+++ b/web/lib/msgslib.ssjs
@@ -1,8 +1,8 @@
 /* $Id$ */
 
 load("sbbsdefs.js");
-load("../web/lib/template.ssjs");
-load("../web/lib/msgsconfig.ssjs");
+load('../web/lib/template.ssjs');
+load(msgsconfig);
 
 // Use guest user if the current user is super-duper
 if(user.number==0 && this.login!=undefined)
diff --git a/web/lib/template.ssjs b/web/lib/template.ssjs
index d5735a56ae08048865e307a78267ea585c8267fb..29672fc2d86a288c958d4844903b5c6f08b3a703 100644
--- a/web/lib/template.ssjs
+++ b/web/lib/template.ssjs
@@ -32,14 +32,14 @@
 template=new Object;
 load("sbbsdefs.js");    // UFLAG_G
 load("../web/lib/html_themes.ssjs");
-load("../web/lib/siteutils.ssjs");  // Port Check & Logo Check
-load("../web/lib/global_defs.ssjs");  // Global Defs - User Alias and the like.
+load(siteutils);  // Port Check & Logo Check
+load(global_defs);  // Global Defs - User Alias and the like.
  
 if(http_request.virtual_path=="/nodelist.ssjs")
-    load("../web/lib/main_nodelist.ssjs"); // Who's Online Listing
+    load(main_nodelist); // Who's Online Listing
 http_reply.fast=true;
     
-load("../web/lib/leftnav_nodelist.ssjs"); // Left Side Navigation Node Listing
+load(leftnav_nodelist); // Left Side Navigation Node Listing
 
 template.Theme_CSS_File=Themes[CurrTheme].css;
 template.server=server;
diff --git a/web/root/index.ssjs b/web/root/index.ssjs
index efefd748b3045c5cfca8c99221cdda0b8890672d..d71a57a6d908d1b9af68a0628f290568b1d534e8 100644
--- a/web/root/index.ssjs
+++ b/web/root/index.ssjs
@@ -11,9 +11,9 @@ http_reply.header['cache-control']='must-revalidate';
 if(do_header)
     write_template("header.inc");
 if(do_topnav)        
-    load("../web/lib/topnav_html.ssjs");
+    load(topnav_html);
 if(do_leftnav)        
-    load("../web/lib/leftnav_html.ssjs");
+    load(leftnav_html);
 
 /* Main Page Stats - might move to global_defs.ssjs */
 
diff --git a/web/root/members/changepw.ssjs b/web/root/members/changepw.ssjs
index 21f97092d2c2c96abeaa3404628a86f4e0bddf84..f078e91428d97375ef19b2f13c5c9f00b27d6755 100644
--- a/web/root/members/changepw.ssjs
+++ b/web/root/members/changepw.ssjs
@@ -60,9 +60,9 @@ else
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("changepw.inc");
diff --git a/web/root/members/editprofile.ssjs b/web/root/members/editprofile.ssjs
index 3da09f3e29767d886604a84e96bad906fe5fae34..2e354bcf6ac760bc51ee7add03c913152a589813 100644
--- a/web/root/members/editprofile.ssjs
+++ b/web/root/members/editprofile.ssjs
@@ -101,17 +101,17 @@ template.profile = new Array;
 	template.profile.push({html: '<tr><td class="userstatsright" align="right">Yahoo: </td><td class="userstats" align="left"><input type="text" name="yahoo" size="50" maxlength="50" value="' + usr.yahoo + '" /></td></tr>' });
 	template.profile.push({html: '<tr><td class="userstatsright" align="right">AIM: </td><td class="userstats" align="left"><input type="text" name="aim" size="50" maxlength="50" value="' + usr.aim + '" /></td></tr>' });
 	template.profile.push({html: '<tr><td class="userstatsright" align="right">Homepage: </td><td class="userstats" align="left"><input type="text" name="homepage" size="50" maxlength="50" value="' + usr.homepage + '" /></td></tr>' });
-	template.profile.push({html: '<tr><td class="userstatsright" align="right">Hobbies: </td><td class="userstats" align="left"><input type="textarea" size="50" name="hobbies" value="' + usr.hobbies + '" /></td></tr>' });
-	template.profile.push({html: '<tr><td class="userstatsright" align="right">Picture (Link): </td><td class="userstats" align="left"><input type="textarea" size="50" name="picture" value="' + usr.picture + '" /></td></tr>' });
-	template.profile.push({html: '<tr><td class="userstatsright" align="right">Avatar (Link): </td><td class="userstats" align="left"><input type="textarea" size="50" name="avatar" value="' + usr.avatar + '" /></td></tr>' });
+	template.profile.push({html: '<tr><td class="userstatsright" align="right">Hobbies: </td><td class="userstats" align="left"><input type="text" size="50" name="hobbies" value="' + usr.hobbies + '" /></td></tr>' });
+	template.profile.push({html: '<tr><td class="userstatsright" align="right">Picture (Link): </td><td class="userstats" align="left"><input type="text" size="50" name="picture" value="' + usr.picture + '" /></td></tr>' });
+	template.profile.push({html: '<tr><td class="userstatsright" align="right">Avatar (Link): </td><td class="userstats" align="left"><input type="text" size="50" name="avatar" value="' + usr.avatar + '" /></td></tr>' });
 	template.profile.push({html: '<tr><td class="userstats">&nbsp;</td><td class="userstats"><br /><input type="submit" value="Update Profile" /></td></tr></table></form><br />' });	
 
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("profile.inc");
diff --git a/web/root/members/info.ssjs b/web/root/members/info.ssjs
index bbb647b5f3dcbc5957f668f85b56e5dad9df02d7..2871abcfeb7d640464b6da16f2d1b7b43feb6ea9 100644
--- a/web/root/members/info.ssjs
+++ b/web/root/members/info.ssjs
@@ -11,9 +11,9 @@ template.user_num=user.number;
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("infomenu.inc");
diff --git a/web/root/members/lastcallers.ssjs b/web/root/members/lastcallers.ssjs
index 716e3c0e1aceb0629ef69fad75db08de5404ef8a..0402393bba263ca9c788d6c4c5f3a02d5a0b3d2a 100644
--- a/web/root/members/lastcallers.ssjs
+++ b/web/root/members/lastcallers.ssjs
@@ -4,7 +4,7 @@ load("../web/lib/template.ssjs");
 
 var sub="";
 
-if(CurrTheme=="NightShade")
+if(do_extra)
 	do_rightnav=false;
 
 if(user.number!=0) {
@@ -20,9 +20,9 @@ if(user.number!=0) {
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("lastcallers.inc");
diff --git a/web/root/members/newpw.ssjs b/web/root/members/newpw.ssjs
index f640accf7d807a9f1181755e83501c95240dc31f..56603c3677866cf2fe279adfc271191cd195ae82 100644
--- a/web/root/members/newpw.ssjs
+++ b/web/root/members/newpw.ssjs
@@ -14,9 +14,9 @@ if(user.security.password_date!=0)
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("newpw.inc");
diff --git a/web/root/members/picktheme.ssjs b/web/root/members/picktheme.ssjs
index bb5bd48af3ea3e5d03745a9f4c8a770919872857..38ea64b7f00242b8f0b2c22f50125e132d5bcd31 100644
--- a/web/root/members/picktheme.ssjs
+++ b/web/root/members/picktheme.ssjs
@@ -33,9 +33,9 @@ template.theme=Themes[CurrTheme];
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-	load("../web/lib/leftnav_html.ssjs");
+	load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("picktheme.inc");
diff --git a/web/root/members/sysinfo.ssjs b/web/root/members/sysinfo.ssjs
index e951687cc5110ab516750a99762e5dc24c07b725..4a45126d4aaf54618ab4b5e13e200c55745d409a 100644
--- a/web/root/members/sysinfo.ssjs
+++ b/web/root/members/sysinfo.ssjs
@@ -6,7 +6,7 @@ var sub="";
 
 template.title= system.name+ " - System Information";
 
-if(CurrTheme=="NightShade")
+if(do_extra)
 	do_rightnav = false;
 
 template.sysinfo="";
@@ -114,9 +114,9 @@ for(addr in system.fido_addr_list) {
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("sysinfo.inc");
diff --git a/web/root/members/themes.ssjs b/web/root/members/themes.ssjs
index b06814da46c0c5438293934d6aa2ba9eef912279..136ddbcaf99be7de78b1f802f0363a3ce595758e 100644
--- a/web/root/members/themes.ssjs
+++ b/web/root/members/themes.ssjs
@@ -16,9 +16,9 @@ template.theme_list+='</select>';
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-	load("../web/lib/leftnav_html.ssjs");
+	load(leftnav_html);
 if(do_rightnav)	
 	write_template("rightnav.inc");
 write_template("themes.inc");
diff --git a/web/root/members/updateprofile.ssjs b/web/root/members/updateprofile.ssjs
index 9652cd623bf1f4567f792bcbd23b06b9db6baf0c..639e53d4920b3ae38ae0ceb99628b6daabbaff87 100644
--- a/web/root/members/updateprofile.ssjs
+++ b/web/root/members/updateprofile.ssjs
@@ -101,9 +101,9 @@ template.update_message="Profile has been Updated."
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("updateprofile.inc");
diff --git a/web/root/members/userlist.ssjs b/web/root/members/userlist.ssjs
index 337c40245ad82d70889c09daaa4806cfbf4d2dc3..a42595a1e12040174226fef69b312aa0812975f5 100644
--- a/web/root/members/userlist.ssjs
+++ b/web/root/members/userlist.ssjs
@@ -43,9 +43,9 @@ if(http_request.query["sort"]!=undefined)
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("userlist.inc");
diff --git a/web/root/members/userstats.ssjs b/web/root/members/userstats.ssjs
index d1793cec6a19bc288807e0ca71e044b839013d36..88e44be18f3e30699cb06d5df3726204da5d89e0 100644
--- a/web/root/members/userstats.ssjs
+++ b/web/root/members/userstats.ssjs
@@ -25,9 +25,9 @@ template.pinfo=parseInt(i);
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("userstats.inc");
diff --git a/web/root/members/viewprofile.ssjs b/web/root/members/viewprofile.ssjs
index 806817413bf355959d9421c1dec797ce3bfb41fe..21e0643f3b586e76a45abe853e678252fcd5d107 100644
--- a/web/root/members/viewprofile.ssjs
+++ b/web/root/members/viewprofile.ssjs
@@ -154,9 +154,9 @@ if(is_sysop) {
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("profile.inc");
diff --git a/web/root/msgs/choosegroup.ssjs b/web/root/msgs/choosegroup.ssjs
index 7d479519533bba2e434e8438b4e604eda47c05f8..ecf57992265b52bb51913fa24492877016518f3a 100644
--- a/web/root/msgs/choosegroup.ssjs
+++ b/web/root/msgs/choosegroup.ssjs
@@ -7,9 +7,9 @@ template.title="Message Groups on " +system.name;
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 	
diff --git a/web/root/msgs/choosesubs.ssjs b/web/root/msgs/choosesubs.ssjs
index fcccb901cb90458e031928b2a1ca72582639b4db..6368a99d0ed6611d8dd13896362f3f5356c679e1 100644
--- a/web/root/msgs/choosesubs.ssjs
+++ b/web/root/msgs/choosesubs.ssjs
@@ -38,9 +38,9 @@ for(s in msg_area.grp[grp].sub_list) {
 }
 
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/choosesubs.inc");
diff --git a/web/root/msgs/index.ssjs b/web/root/msgs/index.ssjs
index ef3da72ea2f39c2f1ec1c78eb32f7459fd222bed..e4a4f9a817dcbe2affc952ff762e44015dbffd05 100644
--- a/web/root/msgs/index.ssjs
+++ b/web/root/msgs/index.ssjs
@@ -7,9 +7,9 @@ template.title="Message Groups on " +system.name;
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 	
diff --git a/web/root/msgs/management.ssjs b/web/root/msgs/management.ssjs
index c9a5c6acd129b47daffed58c6ea60678cdc2419b..5b521f60d2f55bf098b1d14794a86d958e644c3d 100644
--- a/web/root/msgs/management.ssjs
+++ b/web/root/msgs/management.ssjs
@@ -63,9 +63,9 @@ template.sub_code=sub;
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/management.inc");
diff --git a/web/root/msgs/msg.ssjs b/web/root/msgs/msg.ssjs
index 1735497084bd3bd65046414d6871a65e1baddfa6..905fd371215328ba8145a07d68c12e54e25f5eba 100644
--- a/web/root/msgs/msg.ssjs
+++ b/web/root/msgs/msg.ssjs
@@ -25,10 +25,7 @@ if(msgbase.open!=undefined && msgbase.open()==false) {
 /*    on the new expanded message read page for new theme    */
 
 var hdr=msgbase.get_msg_header(false,m);
-
-
-
-if(hdr.from_ext!=undefined) {
+if(hdr.from_ext != null) {
 	template.u_num = hdr.from_ext;
 	usr = new User(template.u_num);
 	template.author_firston = strftime("%m/%d/%y",usr.stats.firston_date);
@@ -74,11 +71,25 @@ else {
         error("You can't read messages in this sub!");
 }
 
+if(do_header)
+	write_template("header.inc");
+if(do_topnav)
+	load(topnav_html);
+if(do_leftnav)
+	load(leftnav_html);
+if(do_rightnav)
+	write_template("rightnav.inc");
+
 if(sub=='mail')
     template.can_post=!(user.security.restrictions&UFLAG_E);
 else
     template.can_post=msg_area.sub[sub].can_post;
 
+max_display=Themes[CurrTheme].msgs_displayed + m;
+start_num = m;
+
+// for(i = start_num; i <= max_display ; i++) {
+
 template.idx=msgbase.get_msg_index(false,m);
 if(sub=='mail' && template.idx.to!=user.number)
     error("You can only read e-mail messages addressed to yourself!");
@@ -114,7 +125,10 @@ if(msg.attachments!=undefined) {
 }
 
 if(template.hdr != null)  {
-    template.title="Message: "+template.hdr.subject;
+    if(Themes[CurrTheme].do_forumlook==true)
+	template.title="Reading Messages in "+msg_area.grp[msg_area.sub[sub].grp_name];
+	else
+	template.title="Message: "+template.hdr.subject;
 
     if(sub=='mail' || user.security.level>=90) {    /* Sysops can dump all message headers */
         template.hfields="<html><head><title>Message Header Fields</title></head>";
@@ -159,6 +173,8 @@ if(template.hdr.thread_first!=0) {
         template.replies.push(rhdr);
     }
 }
+
+
 if(tmp!=undefined)
     template.prevlink='<a href="msg.ssjs?msg_sub='+sub+'&amp;message='+tmp+'">'+prev_msg_html+'</a>';
 else
@@ -169,15 +185,12 @@ if(tmp!=undefined)
 else
     template.nextlink=no_next_msg_html;
 
-if(do_header)
-	write_template("header.inc");
-if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
-if(do_leftnav)
-	load("../web/lib/leftnav_html.ssjs");
-if(do_rightnav)
-	write_template("rightnav.inc");
+// m--;
+
 write_template("msgs/msg.inc");
+
+// }
+
 if(do_footer)
 	write_template("footer.inc");
 
diff --git a/web/root/msgs/msgs.ssjs b/web/root/msgs/msgs.ssjs
index 0ff102e829f6a6f752b2936de3d7a13207a585db..7452c09062c155493f412c9af1c946ba38f7f376 100644
--- a/web/root/msgs/msgs.ssjs
+++ b/web/root/msgs/msgs.ssjs
@@ -281,9 +281,9 @@ if(http_request.query["sort"]!=undefined)
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-	load("../web/lib/leftnav_html.ssjs");
+	load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/msgs.inc");
diff --git a/web/root/msgs/post.ssjs b/web/root/msgs/post.ssjs
index 37e7ca894a78368a7b058f6a67192be67635ea12..f30d644238f233449b888d97542ce3b3d385b47b 100644
--- a/web/root/msgs/post.ssjs
+++ b/web/root/msgs/post.ssjs
@@ -54,8 +54,8 @@ if(sub=='mail') {
 
 template.title="Post a message in " + template.sub.description;
 write_template("header.inc");
-load("../web/lib/topnav_html.ssjs");
-load("../web/lib/leftnav_html.ssjs");
+load(topnav_html);
+load(leftnav_html);
 write_template("msgs/post.inc");
 write_template("footer.inc");
 
diff --git a/web/root/msgs/reply.ssjs b/web/root/msgs/reply.ssjs
index 66ab1ef8f02aa1b2efdea5f83d173b86d8653728..fabe3f50dcbc143db9dbceba215efca17f05a334 100644
--- a/web/root/msgs/reply.ssjs
+++ b/web/root/msgs/reply.ssjs
@@ -76,8 +76,8 @@ if(sub=='mail') {
 
 title="Reply to message";
 write_template("header.inc");
-load("../web/lib/topnav_html.ssjs");
-load("../web/lib/leftnav_html.ssjs");
+load(topnav_html);
+load(leftnav_html);
 write_template("msgs/reply.inc");
 write_template("footer.inc");
 
diff --git a/web/root/msgs/savemsg.ssjs b/web/root/msgs/savemsg.ssjs
index f5e95319343ce2dde0302809627aa853d6dfa0e0..d3857c0dc5c1dd28ee865524c537ff21e55e59dc 100644
--- a/web/root/msgs/savemsg.ssjs
+++ b/web/root/msgs/savemsg.ssjs
@@ -116,9 +116,9 @@ title="Message posted";
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/posted.inc");
diff --git a/web/root/msgs/subinfo.ssjs b/web/root/msgs/subinfo.ssjs
index 640f3dac9b7c4a479e1e66252d04a553419fe836..0706d17060aeb492d099e0ff7e4c0c8b82ef4cc7 100644
--- a/web/root/msgs/subinfo.ssjs
+++ b/web/root/msgs/subinfo.ssjs
@@ -43,9 +43,9 @@ template.backurl=http_request.header.referer;
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-	load("../web/lib/leftnav_html.ssjs");
+	load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/subinfo.inc");
diff --git a/web/root/msgs/subs.ssjs b/web/root/msgs/subs.ssjs
index e8979774f567184d638bb2a9ce5b6086c332ffe8..124f6798a23a84a74f7260d380956bd3f2f7ac85 100644
--- a/web/root/msgs/subs.ssjs
+++ b/web/root/msgs/subs.ssjs
@@ -60,9 +60,9 @@ for(s in msg_area.grp[grp].sub_list) {
 }
 
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/subs.inc");
diff --git a/web/root/msgs/updatesubs.ssjs b/web/root/msgs/updatesubs.ssjs
index ee6f0e4b7a9c6c4426a22378d936d9c6d00bc53f..eb4033b9e19fe4ddb09095d3fe70a3cbacfb82fe 100644
--- a/web/root/msgs/updatesubs.ssjs
+++ b/web/root/msgs/updatesubs.ssjs
@@ -58,9 +58,9 @@ for(s in msg_area.grp[grp].sub_list) {
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("msgs/updatesubs.inc");
diff --git a/web/root/newuser.ssjs b/web/root/newuser.ssjs
index 86956d9c2003c5ae4117e0b1511197c6e46d3f79..4d4a93e8f48e44d827523df14c474d361c9ed0e5 100644
--- a/web/root/newuser.ssjs
+++ b/web/root/newuser.ssjs
@@ -351,9 +351,9 @@ else {
 	if(do_header)
 	    write_template("header.inc");
 	if(do_topnav)
-	    load("../web/lib/topnav_html.ssjs");
+	    load(topnav_html);
 	if(do_leftnav)
-	    load("../web/lib/leftnav_html.ssjs");
+	    load(leftnav_html);
 	if(do_rightnav)
 		write_template("rightnav.inc");
     if(http_request.query.netmail != undefined && http_request.query.netmail != '')
@@ -379,9 +379,9 @@ function showform() {
 	if(do_header)
 	    write_template("header.inc");
 	if(do_topnav)
-	    load("../web/lib/topnav_html.ssjs");
+	    load(topnav_html);
 	if(do_leftnav)
-    	load("../web/lib/leftnav_html.ssjs");
+    	load(leftnav_html);
 	if(do_rightnav)
 		write_template("rightnav.inc");
     write_template("newuser.inc");
diff --git a/web/root/nodelist.ssjs b/web/root/nodelist.ssjs
index d71e36306e5763a1e3525bc6a1c123e8aafb8630..7fe0b2d061c2a8874ff6da74f2927462807f48f6 100644
--- a/web/root/nodelist.ssjs
+++ b/web/root/nodelist.ssjs
@@ -9,9 +9,9 @@ var sub='';
 if(do_header)
 	write_template("header.inc");
 if(do_topnav)
-	load("../web/lib/topnav_html.ssjs");
+	load(topnav_html);
 if(do_leftnav)
-load("../web/lib/leftnav_html.ssjs");
+load(leftnav_html);
 if(do_rightnav)
 	write_template("rightnav.inc");
 write_template("nodelist.inc");
diff --git a/web/templates/html_themes.ssjs b/web/templates/html_themes.ssjs
index 8d57c4815cf90fc207d029ff232051daff3de622..a2c75ff1246be1b05c71f8c53fb853a934c18c68 100644
--- a/web/templates/html_themes.ssjs
+++ b/web/templates/html_themes.ssjs
@@ -2,7 +2,7 @@
 
 /* Set default theme name */
 
-var DefaultTheme="Default";
+var DefaultTheme="NightShade";
 
 /* Edit this bit to add/remove/modify theme descriptions, dirs */
 
@@ -10,6 +10,7 @@ Themes["Default"]=new Object;
 Themes["Default"].desc="Default Synchronet Theme";
 Themes["Default"].theme_dir="default";
 Themes["Default"].image_dir="/images/default";
+Themes["Default"].lib_dir="../web/lib";
 Themes["Default"].css="/default.css";
 Themes["Default"].do_header=true;
 Themes["Default"].do_topnav=true;
@@ -17,11 +18,15 @@ Themes["Default"].do_leftnav=true;
 Themes["Default"].do_rightnav=false;
 Themes["Default"].do_footer=true;
 Themes["Default"].do_extra=false;
+Themes["Default"].do_forumlook=false;
+Themes["Default"].msgs_displayed=1;
+
 
 Themes["NightShade"]=new Object;
 Themes["NightShade"].desc="NightShade";
 Themes["NightShade"].theme_dir="nightshade";
 Themes["NightShade"].image_dir="/images/nightshade";
+Themes["NightShade"].lib_dir="../web/lib/nightshade";
 Themes["NightShade"].css="/nightshade.css";
 Themes["NightShade"].do_header=true;
 Themes["NightShade"].do_topnav=true;
@@ -29,4 +34,6 @@ Themes["NightShade"].do_leftnav=true;
 Themes["NightShade"].do_rightnav=true;
 Themes["NightShade"].do_footer=true;
 Themes["NightShade"].do_extra=true;
+Themes["NightShade"].do_forumlook=true;
+Themes["NightShade"].msgs_displayed=5;