diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 2aa9f3ea399b87fac705e293d62370d515c71032..ff2e7600e93cdf459183b8749c3ba33cf0319cc8 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -82,6 +82,10 @@ ulong echomail=0;	/* imported */
 ulong exported_netmail=0;
 ulong exported_echomail=0;
 ulong packed_netmail=0;
+ulong packets_sent=0;
+ulong packets_imported=0;
+ulong bundles_sent=0;
+ulong bundles_unpacked=0;
 
 int cur_smb=0;
 FILE *fidologfile=NULL;
@@ -943,7 +947,7 @@ void gen_notify_list(void)
 			,cfg.nodecfg[k].archive == SBBSECHO_ARCHIVE_NONE ? "None" : cfg.nodecfg[k].archive->name);
 		fprintf(tmpf,"Mail Status       %s\r\n", mailStatusStringList[cfg.nodecfg[k].status]);
 		fprintf(tmpf,"Direct            %s\r\n", cfg.nodecfg[k].direct ? "Yes":"No");
-		fprintf(tmpf,"Passive           %s\r\n", cfg.nodecfg[k].passive ? "Yes":"No");
+		fprintf(tmpf,"Passive (paused)  %s\r\n", cfg.nodecfg[k].passive ? "Yes":"No");
 		fprintf(tmpf,"Remote AreaMgr    %s\r\n\r\n"
 			,cfg.nodecfg[k].password[0] ? "Yes" : "No");
 
@@ -1461,8 +1465,9 @@ void areafix_command(char* instr, fidoaddr_t addr, const char* to)
 		return; 
 	}
 
-	if(strnicmp(instr, "COMPRESSION ", 12) == 0) {
-		char* p = instr + 12;
+	if(strnicmp(instr, "COMPRESSION ", 12) == 0 || strnicmp(instr, "COMPRESS ", 9) == 0) {
+		char* p = instr;
+		FIND_WHITESPACE(p);
 		SKIP_WHITESPACE(p);
 		if(!stricmp(p,"NONE"))
 			nodecfg->archive = SBBSECHO_ARCHIVE_NONE;
@@ -1491,25 +1496,49 @@ void areafix_command(char* instr, fidoaddr_t addr, const char* to)
 		return; 
 	}
 
-	if(strnicmp(instr, "PASSWORD ", 9) == 0) {
-		char password[FIDO_SUBJ_LEN];	/* Areafix password for this node */
-		char* p = instr + 9;
+	if(strnicmp(instr, "PASSWORD ", 9) == 0 || strnicmp(instr, "PWD ", 4) == 0) {
+		char password[FIDO_SUBJ_LEN];	/* AreaMgr password for this node */
+		char* p = instr;
+		FIND_WHITESPACE(p);
 		SKIP_WHITESPACE(p);
 		SAFECOPY(password, p);
 		if(!stricmp(password, nodecfg->password)) {
-			sprintf(str,"Your password was already set to '%s'."
+			sprintf(str,"Your AreaMgr password was already set to '%s'."
 				,nodecfg->password);
-			create_netmail(to,/* msg: */NULL,"Password Change Request",str,addr,/* attachment: */false);
+			create_netmail(to,/* msg: */NULL,"AreaMgr Password Change Request",str,addr,/* attachment: */false);
 			return; 
 		}
-		if(alter_config(addr,"areafix_pwd", password)) {
-			SAFEPRINTF2(str,"Your password has been changed from '%s' to '%s'."
+		if(alter_config(addr,"AreafixPwd", password)) {
+			SAFEPRINTF2(str,"Your AreaMgr password has been changed from '%s' to '%s'."
 				,nodecfg->password,password);
 			SAFECOPY(nodecfg->password, password);
 		} else {
-			SAFECOPY(str,"Error changing password");
+			SAFECOPY(str,"Error changing AreaMgr password");
+		}
+		create_netmail(to,/* msg: */NULL,"AreaMgr Password Change Request",str,addr,/* attachment: */false);
+		return; 
+	}
+
+	if(strnicmp(instr, "PKTPWD ", 7) == 0) {
+		char pktpwd[FIDO_PASS_LEN + 1];	/* Packet password for this node */
+		char* p = instr;
+		FIND_WHITESPACE(p);
+		SKIP_WHITESPACE(p);
+		SAFECOPY(pktpwd, p);
+		if(!stricmp(pktpwd, nodecfg->pktpwd)) {
+			sprintf(str,"Your packet password was already set to '%s'."
+				,nodecfg->pktpwd);
+			create_netmail(to,/* msg: */NULL,"Packet Password Change Request",str,addr,/* attachment: */false);
+			return; 
+		}
+		if(alter_config(addr,"PacketPwd", pktpwd)) {
+			SAFEPRINTF2(str,"Your packet password has been changed from '%s' to '%s'."
+				,nodecfg->pktpwd, pktpwd);
+			SAFECOPY(nodecfg->pktpwd, pktpwd);
+		} else {
+			SAFECOPY(str,"Error changing packet password");
 		}
-		create_netmail(to,/* msg: */NULL,"Password Change Request",str,addr,/* attachment: */false);
+		create_netmail(to,/* msg: */NULL,"Packet Password Change Request",str,addr,/* attachment: */false);
 		return; 
 	}
 
@@ -1522,7 +1551,8 @@ void areafix_command(char* instr, fidoaddr_t addr, const char* to)
 	}
 
 	if(strnicmp(instr, "RESCAN ", 7) == 0) {
-		char* p = instr + 7;
+		char* p = instr;
+		FIND_WHITESPACE(p);
 		SKIP_WHITESPACE(p);
 		int subnum = find_linked_area(p, addr);
 		if(subnum == SUB_NOT_FOUND)
@@ -1538,28 +1568,28 @@ void areafix_command(char* instr, fidoaddr_t addr, const char* to)
 		return; 
 	}
 
-	if(stricmp(instr, "ACTIVE") == 0) {
+	if(stricmp(instr, "ACTIVE") == 0 || stricmp(instr, "RESUME") == 0) {
 		if(!nodecfg->passive) {
-			create_netmail(to,/* msg: */NULL,"Reconnect Disconnected Areas"
+			create_netmail(to,/* msg: */NULL,"Reconnect Disconnected (paused) Areas"
 				,"Your areas are already connected.",addr,/* attachment: */false);
 			return; 
 		}
 		nodecfg->passive = false;
 		alter_config(addr,"passive","false");
-		create_netmail(to,/* msg: */NULL,"Reconnect Disconnected Areas"
+		create_netmail(to,/* msg: */NULL,"Reconnect Disconnected (paused) Areas"
 			,"Temporarily disconnected areas have been reconnected.",addr,/* attachment: */false);
 		return; 
 	}
 
-	if(stricmp(instr, "PASSIVE") == 0) {
+	if(stricmp(instr, "PASSIVE") == 0 || stricmp(instr, "PAUSE") == 0) {
 		if(nodecfg->passive) {
-			create_netmail(to,/* msg: */NULL,"Temporarily Disconnect Areas"
+			create_netmail(to,/* msg: */NULL,"Temporarily Disconnect (pause) Areas"
 				,"Your areas are already temporarily disconnected.",addr,/* attachment: */false);
 			return; 
 		}
 		nodecfg->passive = true;
 		alter_config(addr,"passive","true");
-		create_netmail(to,/* msg: */NULL,"Temporarily Disconnect Areas"
+		create_netmail(to,/* msg: */NULL,"Temporarily Disconnect (pause) Areas"
 			,"Your areas have been temporarily disconnected.",addr,/* attachment: */false);
 		return; 
 	}
@@ -1778,6 +1808,7 @@ enum attachment_mode {
 };
 
 /* bundlename is the full path to the attached bundle file */
+/* Returns 0 on succes */
 int attachment(const char *bundlename, fidoaddr_t dest, enum attachment_mode mode)
 {
 #if 1
@@ -1999,7 +2030,8 @@ bool pack_bundle(const char *tmp_pkt, fidoaddr_t orig, fidoaddr_t dest)
 		}
 		if(fexistcase(bundle)) {
 			if(i!='Z' && flength(bundle)>=(off_t)cfg.maxbdlsize) {
-				attachment(bundle,dest,ATTACHMENT_ADD);
+				if(attachment(bundle,dest,ATTACHMENT_ADD) == 0)
+					bundles_sent++;
 				continue;
 			}
 			file=sopen(bundle,O_WRONLY,SH_DENYRW);
@@ -2012,10 +2044,11 @@ bool pack_bundle(const char *tmp_pkt, fidoaddr_t orig, fidoaddr_t dest)
 	if(i > 'Z')
 		lprintf(LOG_WARNING,"All bundle files for %s already exist, adding to: %s"
 			,smb_faddrtoa(&dest,NULL), bundle);
-	if(pack(packet,bundle,dest))	/* Won't get here unless all bundles are full */
+	if(pack(packet,bundle,dest))
 		return false;
 	if(attachment(bundle,dest,ATTACHMENT_ADD))
 		return false;
+	bundles_sent++;
 	return delfile(packet, __LINE__);
 }
 
@@ -2111,6 +2144,7 @@ bool unpack_bundle(const char* inbound)
 				continue;
 			}
 			delfile(fname, __LINE__);	/* successful, so delete bundle */
+			bundles_unpacked++;
 			return(true); 
 		} 
 	}
@@ -2333,7 +2367,7 @@ void cleanup(void)
 			strListSortAlpha(bad_areas);
 			for(int i=0; bad_areas[i] != NULL; i++) {
 				p = bad_areas[i];
-				lprintf(LOG_DEBUG, "Writing '%s' (%p) to %s", p, p, cfg.badareafile);
+//				lprintf(LOG_DEBUG, "Writing '%s' (%p) to %s", p, p, cfg.badareafile);
 				fprintf(fp, "%-*s %s\n", FIDO_AREATAG_LEN, p, area_desc(p));
 			}
 			fclose(fp);
@@ -2352,21 +2386,35 @@ void cleanup(void)
 	}
 }
 
-void bail(int code)
+void bail(int error_level)
 {
 	cleanup();
 
-	if(code || netmail || exported_netmail || packed_netmail || echomail || exported_echomail)
-		lprintf(LOG_INFO
-			,"SBBSecho exiting with error level %d, "
-			"NetMail(%u imported, %u exported, %u packed), EchoMail(%u imported, %u exported)"
-			,code, netmail, exported_netmail, packed_netmail, echomail, exported_echomail);
-	if((code && pause_on_abend) || pause_on_exit) {
+	if(cfg.log_level == LOG_DEBUG
+		|| netmail || exported_netmail || packed_netmail 
+		|| echomail || exported_echomail 
+		|| packets_imported || packets_sent
+		|| bundles_unpacked || bundles_sent) {
+		char signoff[1024];
+		sprintf(signoff, "SBBSecho exiting with error level %d", error_level);
+		if(bundles_unpacked || bundles_sent)
+			sprintf(signoff+strlen(signoff), ", Bundles(%u unpacked, %u sent)", bundles_unpacked, bundles_sent);
+		if(packets_imported || packets_sent)
+			sprintf(signoff+strlen(signoff), ", Packets(%u imported, %u sent)", packets_imported, packets_sent);
+		if(netmail || exported_netmail || packed_netmail)
+			sprintf(signoff+strlen(signoff), ", NetMail(%u imported, %u exported, %u packed)"
+				,netmail, exported_netmail, packed_netmail);
+		if(echomail || exported_echomail)
+			sprintf(signoff+strlen(signoff), ", EchoMail(%u imported, %u exported)"
+				,echomail, exported_echomail);
+		lprintf(LOG_INFO, "%s", signoff);
+	}
+	if((error_level && pause_on_abend) || pause_on_exit) {
 		fprintf(stderr,"\nHit any key...");
 		getch();
 		fprintf(stderr,"\n");
 	}
-	exit(code);
+	exit(error_level);
 }
 
 void break_handler(int type)
@@ -3488,7 +3536,8 @@ void move_echomail_packets(void)
 		if(pkt->fp != NULL)
 			finalize_outpkt(pkt);
 
-		pack_bundle(pkt->filename, pkt->orig, pkt->dest);
+		if(pack_bundle(pkt->filename, pkt->orig, pkt->dest))
+			packets_sent++;
 
 		free(pkt->filename);
 		free(pkt);
@@ -4994,8 +5043,11 @@ void import_packets(const char* inbound, nodecfg_t* inbox, bool secure)
 
 		if(bad_packet)
 			rename_bad_packet(packet);
-		else if(cfg.delete_packets)
-			delfile(packet, __LINE__);
+		else {
+			packets_imported++;
+			if(cfg.delete_packets)
+				delfile(packet, __LINE__);
+		}
 	}
 	globfree(&g);
 }
@@ -5240,9 +5292,26 @@ int main(int argc, char **argv)
 		bail(1);
 	}
 	backslash(cfg.temp_dir);
+	char* inbound = FULLPATH(NULL, cfg.inbound, sizeof(cfg.inbound)-1);
+	if(inbound != NULL) {
+		SAFECOPY(cfg.inbound, inbound);
+		free(inbound);
+	}
 	backslash(cfg.inbound);
-	if(cfg.secure_inbound[0])
+	if(cfg.secure_inbound[0]) {
+		char* secure_inbound = FULLPATH(NULL, cfg.secure_inbound, sizeof(cfg.secure_inbound)-1);
+		if(secure_inbound != NULL) {
+			SAFECOPY(cfg.secure_inbound, secure_inbound);
+			free(secure_inbound);
+		}
 		backslash(cfg.secure_inbound);
+	}
+	backslash(cfg.temp_dir);
+	char* outbound = FULLPATH(NULL, cfg.outbound, sizeof(cfg.outbound)-1);
+	if(outbound != NULL) {
+		SAFECOPY(cfg.outbound, outbound);
+		free(outbound);
+	}
 	for(i=0; i<cfg.nodecfgs; i++) {
 		if(cfg.nodecfg[i].inbox[0])
 			backslash(cfg.nodecfg[i].inbox);
@@ -5250,7 +5319,10 @@ int main(int argc, char **argv)
 	
 	truncsp(cmdline);
 	lprintf(LOG_DEBUG,"%s invoked with options: %s", sbbsecho_pid(), cmdline);
-	lprintf(LOG_DEBUG, "%u packers, %u linked-nodes, %u echolists configured", cfg.arcdefs, cfg.nodecfgs, cfg.listcfgs);
+	lprintf(LOG_DEBUG,"Configured: %u archivers, %u linked-nodes, %u echolists", cfg.arcdefs, cfg.nodecfgs, cfg.listcfgs);
+	lprintf(LOG_DEBUG,"Secure Inbound directory: %s", cfg.secure_inbound);
+	lprintf(LOG_DEBUG,"Non-secure Inbound directory: %s", cfg.inbound);
+	lprintf(LOG_DEBUG,"Outbound (BSO root) directory: %s", cfg.outbound);
 	if(cfg.ignore_netmail_sent_attr && !cfg.delete_netmail)
 		lprintf(LOG_WARNING, "Ignore NetMail 'Sent' Attribute is enabled with Delete NetMail disabled: Duplicate NetMail msgs may be sent!");
 
@@ -5360,7 +5432,8 @@ int main(int argc, char **argv)
 	}
 	fclose(stream);
 
-	printf("\nRead %u areas from %s\n", cfg.areas, cfg.areafile);
+	printf("\n");
+	lprintf(LOG_DEBUG, "Read %u areas from %s", cfg.areas, cfg.areafile);
 
 	if(opt_dump_area_file) {
 		printf("Area file dump (%u areas):\n", cfg.areas);
@@ -5383,7 +5456,7 @@ int main(int argc, char **argv)
 		fp = fopen(cfg.badareafile,"r");
 		bad_areas = strListReadFile(fp, NULL, 0);
 		before = strListCount(bad_areas);
-		printf("Read %u areas from %s\n", before, cfg.badareafile);
+		lprintf(LOG_DEBUG, "Read %u areas from %s", before, cfg.badareafile);
 		if(fp!=NULL)
 			fclose(fp);
 		strListTruncateStrings(bad_areas, " \t\r\n");
@@ -5553,8 +5626,10 @@ int main(int argc, char **argv)
 	free(email);
 
 	if(cfg.outgoing_sem[0]) {
-		if (exported_netmail || exported_echomail || packed_netmail)
+		if (exported_netmail || exported_echomail || packed_netmail || packets_sent || bundles_sent) {
+			lprintf(LOG_DEBUG, "Touching outgoing semfile: %s\n", cfg.outgoing_sem);
 			ftouch(cfg.outgoing_sem);
+		}
 	}
 	bail(0);
 	return(0);