Index: irc_user.c
===================================================================
--- irc_user.c	(revision 003a12bd2361cd1ce4d83eeaa1b81d95101ea778)
+++ irc_user.c	(revision 4c3519a8e9f8733577b0ca060a80606955f92cce)
@@ -145,6 +145,15 @@
 			return "Offline";
 		else if( bu->flags & BEE_USER_AWAY )
-			/* TODO: status msgs, etc. */
-			return bu->status;
+		{
+			if( bu->status_msg )
+			{
+				static char ret[MAX_STRING];
+				g_snprintf( ret, MAX_STRING - 1, "%s (%s)",
+				            bu->status ? : "Away", bu->status_msg );
+				return ret;
+			}
+			else
+				return bu->status ? : "Away";
+		}
 	}
 	
Index: root_commands.c
===================================================================
--- root_commands.c	(revision 003a12bd2361cd1ce4d83eeaa1b81d95101ea778)
+++ root_commands.c	(revision 4c3519a8e9f8733577b0ca060a80606955f92cce)
@@ -881,9 +881,8 @@
 }
 
-#if 0
 static void cmd_blist( irc_t *irc, char **cmd )
 {
 	int online = 0, away = 0, offline = 0;
-	user_t *u;
+	GSList *l;
 	char s[256];
 	char *format;
@@ -906,17 +905,23 @@
 		format = "%-16.16s  %-40.40s  %s";
 	
-	irc_usermsg( irc, format, "Nick", "User/Host/Network", "Status" );
-	
-	for( u = irc->users; u; u = u->next ) if( u->ic && u->online && !u->away )
-	{
+	irc_usermsg( irc, format, "Nick", "Handle/Account", "Status" );
+	
+	for( l = irc->users; l; l = l->next )
+	{
+		irc_user_t *iu = l->data;
+		bee_user_t *bu = iu->bu;
+		
+		if( !bu || ( bu->flags & ( BEE_USER_ONLINE | BEE_USER_AWAY ) ) != BEE_USER_ONLINE )
+			continue;
+		
 		if( online == 1 )
 		{
 			char st[256] = "Online";
 			
-			if( u->status_msg )
-				g_snprintf( st, sizeof( st ) - 1, "Online (%s)", u->status_msg );
+			if( bu->status_msg )
+				g_snprintf( st, sizeof( st ) - 1, "Online (%s)", bu->status_msg );
 			
-			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user );
-			irc_usermsg( irc, format, u->nick, s, st );
+			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user );
+			irc_usermsg( irc, format, iu->nick, s, st );
 		}
 		
@@ -924,20 +929,32 @@
 	}
 
-	for( u = irc->users; u; u = u->next ) if( u->ic && u->online && u->away )
-	{
+	for( l = irc->users; l; l = l->next )
+	{
+		irc_user_t *iu = l->data;
+		bee_user_t *bu = iu->bu;
+		
+		if( !bu || !( bu->flags & BEE_USER_ONLINE ) || !( bu->flags & BEE_USER_AWAY ) )
+			continue;
+		
 		if( away == 1 )
 		{
-			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user );
-			irc_usermsg( irc, format, u->nick, s, u->away );
+			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user );
+			irc_usermsg( irc, format, iu->nick, s, irc_user_get_away( iu ) );
 		}
 		n_away ++;
 	}
 	
-	for( u = irc->users; u; u = u->next ) if( u->ic && !u->online )
-	{
+	for( l = irc->users; l; l = l->next )
+	{
+		irc_user_t *iu = l->data;
+		bee_user_t *bu = iu->bu;
+		
+		if( !bu || bu->flags & BEE_USER_ONLINE )
+			continue;
+		
 		if( offline == 1 )
 		{
-			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user );
-			irc_usermsg( irc, format, u->nick, s, "Offline" );
+			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user );
+			irc_usermsg( irc, format, iu->nick, s, "Offline" );
 		}
 		n_offline ++;
@@ -947,4 +964,5 @@
 }
 
+#if 0
 static void cmd_qlist( irc_t *irc, char **cmd )
 {
@@ -1146,4 +1164,5 @@
 	{ "account",        1, cmd_account,        0 },
 	{ "add",            2, cmd_add,            0 },
+	{ "blist",          0, cmd_blist,          0 },
 	{ "drop",           1, cmd_drop,           0 },
 	{ "help",           0, cmd_help,           0 }, 
@@ -1159,9 +1178,7 @@
 #if 0
 	{ "allow",          1, cmd_allow,          0 },
-	{ "blist",          0, cmd_blist,          0 },
 	{ "block",          1, cmd_block,          0 },
 	{ "chat",           1, cmd_chat,           0 },
 	{ "ft",             0, cmd_transfer,       0 },
-	{ "join_chat",      2, cmd_join_chat,      0 },
 	{ "qlist",          0, cmd_qlist,          0 },
 	{ "transfer",       0, cmd_transfer,       0 },
