diff --git a/web/root/members/editprofile.ssjs b/web/root/members/editprofile.ssjs
index 7b19dd5c644da8fb6860c0d14d480d0c3d9e12d7..f021715812207bd10d27ba3ca995926225a113d8 100644
--- a/web/root/members/editprofile.ssjs
+++ b/web/root/members/editprofile.ssjs
@@ -4,6 +4,13 @@ load("../web/lib/template.ssjs");
 
 var sub = '';
 
+var is_sysop=false;
+
+if(user.number==1 || user.security.level>=90)
+	disabled="";
+else
+	disabled='disabled="disabled"';
+
 template.title=system.name +" - Edit Your Profile";
 
 usr = new Object;
@@ -54,9 +61,9 @@ template.profile = new Array;
 	template.profile.push({html: '<form action="/members/updateprofile.ssjs" method="post">' });
 	template.profile.push({html: '<table class="newuser" cellpadding="0" cellspacing="2">' });
 	if(system.newuser_questions & UQ_REALNAME)
-		template.profile.push({html: '<tr><td class="newuser" align="right">Real Name:</td><td class="newuser" align="left"><input type="text" name="name" size="25" maxlength="25" value="' + usr.name + '" /></td></tr>' });
+		template.profile.push({html: '<tr><td class="newuser" align="right">Real Name:</td><td class="newuser" align="left"><input type="text" name="name" size="25" maxlength="25" value="' + usr.name +  '" ' + disabled + ' /></td></tr>' });
 	if(system.newuser_questions & UQ_ALIASES)
-		template.profile.push({html: '<tr><td class="newuser" align="right">Alias:</td><td class="newuser" align="left"><input type="text" name="alias" size="25" maxlength="25" value="' + usr.alias + '" /></td></tr>' });
+		template.profile.push({html: '<tr><td class="newuser" align="right">Alias:</td><td class="newuser" align="left"><input type="text" name="alias" size="25" maxlength="25" value="' + usr.alias + '" ' + disabled + ' /></td></tr>' });
 	if(system.newuser_questions & UQ_HANDLE)
 		template.profile.push({html: '<tr><td class="newuser" align="right">Chat Handle:</td><td class="newuser" align="left"><input type="text" name="handle" size="8" maxlength="8" value="' + usr.handle + '" /></td></tr>' });
 	template.profile.push({html: '<tr><td class="newuser" align="right">E-Mail Address:</td><td class="newuser" align="left"><input type="text" name="email" size="50" maxlength="60" value="' + usr.netmail + '" /></td></tr>' });
diff --git a/web/root/members/updateprofile.ssjs b/web/root/members/updateprofile.ssjs
index bb9fefb1f9838e5860b232c03fccdf3dc4a0e9d4..fabe632fcf0f3ca83c1fff0800e7eccb21f6a0e8 100644
--- a/web/root/members/updateprofile.ssjs
+++ b/web/root/members/updateprofile.ssjs
@@ -2,21 +2,34 @@
 
 load("../web/lib/template.ssjs");
 
+var is_sysop=false;
+
+if(user.number==1 || user.security.level>=90)
+	is_sysop=true;
+
 var sub = '';
 
 template.title=system.name + " - Profile Updated";
 
-if(http_request.query["handle"]!=user.handle)
-	user.handle=http_request.query["handle"];
+if(is_sysop) {
+
+var usr = new User(http_request.query.edituser[0]);
 
-if(http_request.query["email"]!=user.netmail)
-	user.netmail=http_request.query["email"];
+	if(http_request.query["name"]!=usr.name)
+		usr.name=http_request.query["name"];
+	if(http_request.query["alias"]!=usr.alias)
+		usr.alias=http_request.query["alias"];
+	if(http_request.query["handle"]!=usr.handle)
+	usr.handle=http_request.query["handle"];
+
+if(http_request.query["email"]!=usr.netmail)
+	usr.netmail=http_request.query["email"];
 	
-if(http_request.query["location"]!=user.location)
-	user.location=http_request.query["location"];
+if(http_request.query["location"]!=usr.location)
+	usr.location=http_request.query["location"];
 	
-if(file_exists(prefs_dir +format("%04d.html_prefs",user.number))) {
-	prefsfile=new File(prefs_dir + format("%04d.html_prefs",user.number));
+if(file_exists(prefs_dir +format("%04d.html_prefs",usr.number))) {
+	prefsfile=new File(prefs_dir + format("%04d.html_prefs",usr.number));
 	if(prefsfile.open("r+",false)) {
 			if(http_request.query["icq"]!=prefsfile.iniGetValue('Profile', 'ICQ'));
 				prefsfile.iniSetValue('Profile', 'ICQ', http_request.query["icq"]);
@@ -38,9 +51,44 @@ if(file_exists(prefs_dir +format("%04d.html_prefs",user.number))) {
 	}
 }
 
-var backurl=http_request.header.referer;
+} else {
+
+	if(http_request.query["handle"]!=user.handle)
+		user.handle=http_request.query["handle"];
+
+	if(http_request.query["email"]!=user.netmail)
+		user.netmail=http_request.query["email"];
+	
+	if(http_request.query["location"]!=user.location)
+		user.location=http_request.query["location"];
+	
+	if(file_exists(prefs_dir +format("%04d.html_prefs",user.number))) {
+		prefsfile=new File(prefs_dir + format("%04d.html_prefs",user.number));
+		if(prefsfile.open("r+",false)) {
+				if(http_request.query["icq"]!=prefsfile.iniGetValue('Profile', 'ICQ'));
+					prefsfile.iniSetValue('Profile', 'ICQ', http_request.query["icq"]);
+				if(http_request.query["msn"]!=prefsfile.iniGetValue('Profile', 'MSN'));
+					prefsfile.iniSetValue('Profile', 'MSN', http_request.query["msn"]);
+				if(http_request.query["yahoo"]!=prefsfile.iniGetValue('Profile', 'Yahoo'));
+					prefsfile.iniSetValue('Profile', 'Yahoo', http_request.query["yahoo"]);
+				if(http_request.query["aim"]!=prefsfile.iniGetValue('Profile', 'AIM'));
+					prefsfile.iniSetValue('Profile', 'AIM', http_request.query["aim"]);
+				if(http_request.query["homepage"]!=prefsfile.iniGetValue('Profile', 'Homepage'));
+					prefsfile.iniSetValue('Profile', 'Homepage', http_request.query["homepage"]);
+				if(http_request.query["hobbies"]!=prefsfile.iniGetValue('Profile', 'Hobbies'));
+					prefsfile.iniSetValue('Profile', 'Hobbies', http_request.query["hobbies"]);
+				if(http_request.query["picture"]!=prefsfile.iniGetValue('Profile', 'Picture'));
+					prefsfile.iniSetValue('Profile', 'Picture', http_request.query["picture"]);
+				if(http_request.query["avatar"]!=prefsfile.iniGetValue('Profile', 'Avatar'));
+					prefsfile.iniSetValue('Profile', 'Avatar', http_request.query["avatar"]);
+			prefsfile.close();
+		}
+	}
+}
+
+template.backurl='<a href="/members/userlist.ssjs">Back to Userlist</a>';
 
-template.update_message="Your Profile has been Updated."
+template.update_message="Profile has been Updated."
 
 write_template("header.inc");
 load("../web/lib/topnav_html.ssjs");
diff --git a/web/root/members/viewprofile.ssjs b/web/root/members/viewprofile.ssjs
index 165b9ace21f2982eab470d9214f9a30020adfcda..46066b6cc17183bdd25883f7c1d0b218aed3a9d3 100644
--- a/web/root/members/viewprofile.ssjs
+++ b/web/root/members/viewprofile.ssjs
@@ -6,7 +6,7 @@ var sub = '';
 
 var is_sysop=false;
 
-if(user.number==1 && user.security.level>=90)
+if(user.number==1 || user.security.level>=90)
 	is_sysop=true;
 
 var u = new User(http_request.query.showuser[0]);
@@ -22,7 +22,6 @@ if(system.newuser_questions & UQ_HANDLE)
 if(system.newuser_questions & UQ_LOCATION)	
 	usr.location=u.location.toString();
 	usr.netmail=u.netmail.toString();
-
 //	usr.connection=u.connection.toString();
 	usr.logon=strftime("%b-%d-%y",u.stats.laston_date);
 	usr.laston=0-u.stats.laston_date;
@@ -68,7 +67,7 @@ if(file_exists(prefs_dir +format("%04d.html_prefs",u.number))) {
 if(is_sysop) {
 	template.profile.push({html: '<h1>View Profile</h1>' });
 	template.profile.push({html: '<p>Changes here mainly affect the Telnet side of the BBS</p>' });
-	template.profile.push({html: '<form action="/members/updateprofile.ssjs" method="post">' });
+	template.profile.push({html: '<form action="/members/updateprofile.ssjs?edituser=' + u.number + '" method="post">' });
 	template.profile.push({html: '<table class="newuser" cellpadding="0" cellspacing="2">' });
 	if(system.newuser_questions & UQ_REALNAME)
 		template.profile.push({html: '<tr><td class="newuser" align="right">Real Name:</td><td class="newuser" align="left"><input type="text" name="name" size="25" maxlength="25" value="' + usr.name + '" /></td></tr>' });
diff --git a/web/templates/default/updateprofile.inc b/web/templates/default/updateprofile.inc
index 708cfafb39ec8b056c84ae1dfcc085215d684a7e..352b187b5d3c5bcc4c54dfb6111edf8bf615b7f7 100644
--- a/web/templates/default/updateprofile.inc
+++ b/web/templates/default/updateprofile.inc
@@ -5,6 +5,6 @@
 
     <td class="main" valign="top"><br />
     
-      <h1>@@update_message@@</h1>
+      <h3>@@update_message@@</h3>
         @@backurl@@
       <br />