diff --git a/src/sbbs3/data_ovl.cpp b/src/sbbs3/data_ovl.cpp
index 3875cf2be39a5c26bcf9ce1378c60819f280dc97..d7ed9e2e7c3f9ca4bccc11db6cb97fa980429556 100644
--- a/src/sbbs3/data_ovl.cpp
+++ b/src/sbbs3/data_ovl.cpp
@@ -37,42 +37,6 @@
 
 #include "sbbs.h"
 
-/****************************************************************************/
-/* Puts 'name' into slot 'number' in user/name.dat							*/
-/****************************************************************************/
-void sbbs_t::putusername(int number, char *name)
-{
-	char str[256];
-	int file;
-	long length;
-
-	if (number<1) {
-		errormsg(WHERE,ERR_CHK,"user number",number);
-		return; }
-
-	sprintf(str,"%suser/name.dat", cfg.data_dir);
-	if((file=nopen(str,O_RDWR|O_CREAT))==-1) {
-		errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_CREAT);
-		return; }
-	length=filelength(file);
-	if(length && length%(LEN_ALIAS+2)) {
-		close(file);
-		errormsg(WHERE,ERR_LEN,str,length);
-		return; }
-	if(length<(((long)number-1)*(LEN_ALIAS+2))) {
-		sprintf(str,"%*s",LEN_ALIAS,nulstr);
-		memset(str,ETX,LEN_ALIAS);
-		strcat(str,crlf);
-		lseek(file,0L,SEEK_END);
-		while(filelength(file)<((long)number*(LEN_ALIAS+2)))
-			write(file,str,(LEN_ALIAS+2)); }
-	lseek(file,(long)(((long)number-1)*(LEN_ALIAS+2)),SEEK_SET);
-	putrec(str,0,LEN_ALIAS,name);
-	putrec(str,LEN_ALIAS,2,crlf);
-	write(file,str,LEN_ALIAS+2);
-	close(file);
-}
-
 /****************************************************************************/
 /* Fills the 'ptr' element of the each element of the cfg.sub[] array of sub_t  */
 /* and the sub_cfg and sub_ptr global variables                            */
diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp
index 9e91ea6c4b28f1c609e0693187d045b47caf8697..9e9f04d6e84b516ea1a20b146af8f0c12e81c4e7 100644
--- a/src/sbbs3/exec.cpp
+++ b/src/sbbs3/exec.cpp
@@ -1411,7 +1411,7 @@ int sbbs_t::exec(csi_t *csi)
 							break;
 						sprintf(useron.alias,"%.*s",LEN_ALIAS,csi->str);
 						putuserrec(&cfg,useron.number,U_ALIAS,LEN_ALIAS,useron.alias);
-						putusername(useron.number,useron.alias);
+						putusername(&cfg,useron.number,useron.alias);
 						csi->logic=LOGIC_TRUE;
 						break;
 					case USER_STRING_REALNAME:
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index f70f16f7ad58966e050a88502fc46f3a7291896c..b6e87b8e00c8d0c7b7352429c881ad2fc104818a 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2606,11 +2606,11 @@ void node_thread(void* arg)
 			username(&sbbs->cfg,i,uname);
 			if(user.misc&DELETED) {
 				if(strcmp(uname,"DELETED USER"))
-					sbbs->putusername(i,nulstr);
+					putusername(&sbbs->cfg,i,nulstr);
 				continue; }
 
 			if(strcmp(user.alias,uname))
-				sbbs->putusername(i,user.alias);
+				putusername(&sbbs->cfg,i,user.alias);
 
 			if(!(user.misc&(DELETED|INACTIVE))
 				&& user.expire && (ulong)user.expire<=(ulong)now) {
@@ -2668,7 +2668,7 @@ void node_thread(void* arg)
 				sprintf(str,"Auto-Deleted %s #%u",user.alias,user.number);
 				sbbs->logentry("!*",str);
 				sbbs->delallmail(i);
-				sbbs->putusername(i,nulstr);
+				putusername(&sbbs->cfg,i,nulstr);
 				putuserrec(&sbbs->cfg,i,U_MISC,8,ultoa(user.misc|DELETED,str,16)); }
 		}
 
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index b7d7b892be362d94f33be9ab7c83f62da4b27c3d..04285f2ec9e417e5841d10782ec9286036f381f5 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -398,7 +398,7 @@ void sbbs_t::newuser()
 
 	useron.number=i;
 	putuserdat(&cfg,&useron);
-	putusername(useron.number,useron.alias);
+	putusername(&cfg,useron.number,useron.alias);
 	logline(nulstr,"Wrote user data");
 	if(cfg.new_sif[0]) {
 		sprintf(str,"%suser/%4.4u.dat",cfg.data_dir,useron.number);
@@ -428,7 +428,7 @@ void sbbs_t::newuser()
 				putuserrec(&cfg,useron.number,U_COMMENT,60,"Didn't leave feedback");
 				putuserrec(&cfg,useron.number,U_MISC,8
 					,ultoa(useron.misc|DELETED,tmp,16));
-				putusername(useron.number,nulstr);
+				putusername(&cfg,useron.number,nulstr);
 				return; } } }
 
 	sprintf(str,"%sfile/%04u.IN",cfg.data_dir,useron.number);  /* delete any files */
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 1ee5acb223fd5384310541de35c0c868908ce277..8bb34164a7e838a7fd2b9958af8f8779523019e3 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -357,7 +357,6 @@ public:
 	void	putnodeext(uint number, char * str);
 	void	getnodedat(uint number, node_t * node, bool lock);
 	void	putnodedat(uint number, node_t * node);
-	void	putusername(int number, char * name);
 	void	nodesync(void);
 	user_t	nodesync_user;
 	bool	nodesync_inside;
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 2f5f78dabd8c52ad3bf5bda08c84c776d1b942af..621244f5a7c283cada9f1ccee632a11922ead3e4 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -154,10 +154,9 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
 
 	unlock(file,(long)((long)(user->number-1)*U_LEN),U_LEN);
 	close(file);
+	/* order of these function calls is irrelevant */
 	getrec(userdat,U_ALIAS,LEN_ALIAS,user->alias);
-	/* order of these function	*/
 	getrec(userdat,U_NAME,LEN_NAME,user->name);
-	/* calls is irrelevant */
 	getrec(userdat,U_HANDLE,LEN_HANDLE,user->handle);
 	getrec(userdat,U_NOTE,LEN_NOTE,user->note);
 	getrec(userdat,U_COMP,LEN_COMP,user->comp);
@@ -197,8 +196,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
 	getrec(userdat,U_CDT,10,str); user->cdt=atol(str);
 	getrec(userdat,U_MIN,10,str); user->min=atol(str);
 	getrec(userdat,U_LEVEL,2,str); user->level=atoi(str);
-	getrec(userdat,U_FLAGS1,8,str); user->flags1=ahtoul(str); /***
-	getrec(userdat,U_TL,2,str); user->tl=atoi(str); ***/
+	getrec(userdat,U_FLAGS1,8,str); user->flags1=ahtoul(str);
 	getrec(userdat,U_FLAGS2,8,str); user->flags2=ahtoul(str);
 	getrec(userdat,U_FLAGS3,8,str); user->flags3=ahtoul(str);
 	getrec(userdat,U_FLAGS4,8,str); user->flags4=ahtoul(str);
@@ -471,6 +469,43 @@ char* DLLCALL username(scfg_t* cfg, int usernumber,char *strin)
 	return(strin);
 }
 
+/****************************************************************************/
+/* Puts 'name' into slot 'number' in user/name.dat							*/
+/****************************************************************************/
+int putusername(scfg_t* cfg, int number, char *name)
+{
+	char str[256];
+	int file;
+	long length;
+
+	if (number<1) 
+		return(-1);
+
+	sprintf(str,"%suser/name.dat", cfg->data_dir);
+	if((file=nopen(str,O_RDWR|O_CREAT))==-1) 
+		return(-2); 
+	length=filelength(file);
+	if(length && length%(LEN_ALIAS+2)) {
+		close(file);
+		return(-3); 
+	}
+	if(length<(((long)number-1)*(LEN_ALIAS+2))) {
+		sprintf(str,"%*s",LEN_ALIAS,nulstr);
+		memset(str,ETX,LEN_ALIAS);
+		strcat(str,crlf);
+		lseek(file,0L,SEEK_END);
+		while(filelength(file)<((long)number*(LEN_ALIAS+2)))
+			write(file,str,(LEN_ALIAS+2)); 
+	}
+	lseek(file,(long)(((long)number-1)*(LEN_ALIAS+2)),SEEK_SET);
+	putrec(str,0,LEN_ALIAS,name);
+	putrec(str,LEN_ALIAS,2,crlf);
+	write(file,str,LEN_ALIAS+2);
+	close(file);
+
+	return(0);
+}
+
 /****************************************************************************/
 /* Places into 'strout' CR or ETX terminated string starting at             */
 /* 'start' and ending at 'start'+'length' or terminator from 'strin'        */
diff --git a/src/sbbs3/userdat.h b/src/sbbs3/userdat.h
index dc2a4bea0d689c94a531bfab621cf191ec7e52c3..954b9386e77ff9ef65bdef72e3f77bf3af7a3d27 100644
--- a/src/sbbs3/userdat.h
+++ b/src/sbbs3/userdat.h
@@ -75,6 +75,7 @@ DLLEXPORT int	DLLCALL putuserdat(scfg_t* cfg, user_t* user);	/* Put userdat stru
 DLLEXPORT void	DLLCALL getrec(char *instr,int start,int length,char *outstr); /* Retrieve a record from a string */
 DLLEXPORT void	DLLCALL putrec(char *outstr,int start,int length,char *instr); /* Place a record into a string */
 DLLEXPORT uint	DLLCALL matchuser(scfg_t* cfg, char *str); /* Checks for a username match */
+DLLEXPORT int	DLLCALL putusername(scfg_t* cfg, int number, char * name);
 DLLEXPORT uint	DLLCALL lastuser(scfg_t* cfg);
 DLLEXPORT char	DLLCALL getage(scfg_t* cfg, char *birthdate);
 DLLEXPORT char*	DLLCALL username(scfg_t* cfg, int usernumber, char * str);
diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index f3634f86388859a08606e93c1cf1e05ee417d0f4..07f0bf38f81914df2bbae24293e4aa0688051245 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -174,7 +174,7 @@ void sbbs_t::useredit(int usernumber)
 				getstr(user.alias,LEN_ALIAS,K_LINE|K_EDIT|K_AUTODEL);
 				putuserrec(&cfg,user.number,U_ALIAS,LEN_ALIAS,user.alias);
 				if(!(user.misc&DELETED))
-					putusername(user.number,user.alias);
+					putusername(&cfg,user.number,user.alias);
 				bputs(text[EnterYourHandle]);
 				getstr(user.handle,LEN_HANDLE,K_LINE|K_EDIT|K_AUTODEL);
 				putuserrec(&cfg,user.number,U_HANDLE,LEN_HANDLE,user.handle);
@@ -194,7 +194,7 @@ void sbbs_t::useredit(int usernumber)
 					if(!noyes(text[UeditRestoreQ])) {
 						putuserrec(&cfg,user.number,U_MISC,8
 							,ultoa(user.misc&~DELETED,str,16));
-						putusername(user.number,user.alias); }
+						putusername(&cfg,user.number,user.alias); }
 					break; }
 				if(user.misc&INACTIVE) {
 					if(!noyes(text[UeditActivateQ]))
@@ -211,7 +211,7 @@ void sbbs_t::useredit(int usernumber)
 							readmail(user.number,MAIL_SENT); }
 					putuserrec(&cfg,user.number,U_MISC,8
 						,ultoa(user.misc|DELETED,str,16));
-					putusername(user.number,nulstr);
+					putusername(&cfg,user.number,nulstr);
 					break; }
 				if(!noyes(text[UeditDeactivateUserQ])) {
 					if(getmail(&cfg,user.number,0)) {
@@ -496,7 +496,7 @@ void sbbs_t::useredit(int usernumber)
 					i=getnum(lastuser(&cfg));
 					if(i>0) {
 						user.number=i;
-						putusername(user.number,user.alias);
+						putusername(&cfg,user.number,user.alias);
 						putuserdat(&cfg,&user); } }
 				break;
 			case 'Z':
@@ -1019,6 +1019,6 @@ void sbbs_t::purgeuser(int usernumber)
 	sprintf(str,"Purged %s #%u",user.alias,usernumber);
 	logentry("!*",str);
 	delallmail(usernumber);
-	putusername(usernumber,nulstr);
+	putusername(&cfg,usernumber,nulstr);
 	putuserrec(&cfg,usernumber,U_MISC,8,ultoa(user.misc|DELETED,str,16));
 }