Index: protocols/jabber/jabber.c
===================================================================
--- protocols/jabber/jabber.c	(revision a014331db88702de88f3327a0b87f9b8258c8d43)
+++ protocols/jabber/jabber.c	(revision 192b80a1175690187be4bad30c36d286f8e63eb0)
@@ -1885,20 +1885,7 @@
 }
 
-static void jabber_set_idle(struct gaim_connection *gc, int idle) {
-	struct jabber_data *jd = (struct jabber_data *)gc->proto_data;
-   	jd->idle = idle ? time(NULL) - idle : idle;
-}
-
 static void jabber_keepalive(struct gaim_connection *gc) {
 	struct jabber_data *jd = (struct jabber_data *)gc->proto_data;
 	gjab_send_raw(jd->gjc, "  \t  ");
-}
-
-static void jabber_buddy_free(struct buddy *b)
-{
-	while (b->proto_data) {
-		g_free(((GSList *)b->proto_data)->data);
-		b->proto_data = g_slist_remove(b->proto_data, ((GSList *)b->proto_data)->data);
-	}
 }
 
@@ -2338,27 +2325,10 @@
 }
 
-
-static GList *jabber_actions()
-{
-	GList *m = NULL;
-
-	m = g_list_append(m, _("Set User Info"));
-	/*
-	m = g_list_append(m, _("Set Dir Info"));
-	m = g_list_append(m, _("Change Password"));
-	 */
-
-	return m;
-}
-
-
 void jabber_init()
 {
 	struct prpl *ret = g_new0(struct prpl, 1);
 
-	/* the NULL's aren't required but they're nice to have */
 	ret->name = "jabber";
 	ret->away_states = jabber_away_states;
-	ret->actions = jabber_actions;
 	ret->login = jabber_login;
 	ret->close = jabber_close;
@@ -2368,14 +2338,7 @@
 	ret->set_away = jabber_set_away;
 	ret->get_away = jabber_get_away_msg;
-	ret->set_idle = jabber_set_idle;
 	ret->add_buddy = jabber_add_buddy;
 	ret->remove_buddy = jabber_remove_buddy;
-	ret->add_permit = NULL;
-	ret->add_deny = NULL;
-	ret->rem_permit = NULL;
-	ret->rem_deny = NULL;
-	ret->set_permit_deny = NULL;
 	ret->keepalive = jabber_keepalive;
-	ret->buddy_free = jabber_buddy_free;
 	ret->alias_buddy = jabber_roster_update;
 	ret->group_buddy = jabber_group_change;
Index: protocols/nogaim.h
===================================================================
--- protocols/nogaim.h	(revision a014331db88702de88f3327a0b87f9b8258c8d43)
+++ protocols/nogaim.h	(revision 192b80a1175690187be4bad30c36d286f8e63eb0)
@@ -69,12 +69,15 @@
 
 /* ok. now the fun begins. first we create a connection structure */
-struct gaim_connection {
-	/* we need to do either oscar or TOC */
-	/* we make this as an int in case if we want to add more protocols later */
+struct gaim_connection
+{
 	struct prpl *prpl;
 	guint32 flags;
 	
+	/* each connection then can have its own protocol-specific data */
+	void *proto_data;
+	
 	/* all connections need an input watcher */
 	int inpa;
+	guint keepalive;
 	
 	/* buddy list stuff. there is still a global groups for the buddy list, but
@@ -84,10 +87,4 @@
 	int permdeny;
 	
-	/* all connections need a list of chats, even if they don't have chat */
-	GSList *buddy_chats;
-	
-	/* each connection then can have its own protocol-specific data */
-	void *proto_data;
-	
 	struct aim_user *user;
 	
@@ -95,13 +92,6 @@
 	char displayname[128];
 	char password[32];
-	guint keepalive;
-	/* stuff needed for per-connection idle times */
-	guint idle_timer;
-	time_t login_time;
-	time_t lastsent;
-	int is_idle;
 	
 	char *away;
-	int is_auto_away;
 	
 	int evil;
@@ -110,5 +100,4 @@
 	/* BitlBee */
 	irc_t *irc;
-	int lstitems;  /* added for msnP8 */
 	
 	struct conversation *conversations;
@@ -164,31 +153,15 @@
 	const char *name;
 
-	/* for ICQ and Yahoo, who have off/on per-conversation options */
-	/* char *checkbox; this should be per-connection */
-
-	GList *(* away_states)(struct gaim_connection *gc);
-	GList *(* actions)();
-	void   (* do_action)(struct gaim_connection *, char *);
-	/* user_opts returns a GList* of g_malloc'd struct proto_user_opts */
-	GList *(* user_opts)();
-	GList *(* chat_info)(struct gaim_connection *);
-
-	/* all the server-related functions */
-
-	/* a lot of these (like get_dir) are protocol-dependent and should be removed. ones like
-	 * set_dir (which is also protocol-dependent) can stay though because there's a dialog
-	 * (i.e. the prpl says you can set your dir info, the ui shows a dialog and needs to call
-	 * set_dir in order to set it) */
-
 	void (* login)		(struct aim_user *);
+	void (* keepalive)	(struct gaim_connection *);
 	void (* close)		(struct gaim_connection *);
+	
 	int  (* send_im)	(struct gaim_connection *, char *who, char *message, int len, int away);
-	int  (* send_typing)	(struct gaim_connection *, char *who, int typing);
-	void (* set_info)	(struct gaim_connection *, char *info);
-	void (* get_info)	(struct gaim_connection *, char *who);
 	void (* set_away)	(struct gaim_connection *, char *state, char *message);
 	void (* get_away)       (struct gaim_connection *, char *who);
-	void (* set_idle)	(struct gaim_connection *, int idletime);
+	int  (* send_typing)	(struct gaim_connection *, char *who, int typing);
+	
 	void (* add_buddy)	(struct gaim_connection *, char *name);
+	void (* group_buddy)	(struct gaim_connection *, char *who, char *old_group, char *new_group);
 	void (* remove_buddy)	(struct gaim_connection *, char *name, char *group);
 	void (* add_permit)	(struct gaim_connection *, char *name);
@@ -197,26 +170,22 @@
 	void (* rem_deny)	(struct gaim_connection *, char *name);
 	void (* set_permit_deny)(struct gaim_connection *);
+	
+	void (* set_info)	(struct gaim_connection *, char *info);
+	void (* get_info)	(struct gaim_connection *, char *who);
+	void (* alias_buddy)	(struct gaim_connection *, char *who);	/* save/store buddy's alias on server list/roster */
+	
+	/* Group chat stuff. */
 	void (* join_chat)	(struct gaim_connection *, GList *data);
 	void (* chat_invite)	(struct gaim_connection *, int id, char *who, char *message);
 	void (* chat_leave)	(struct gaim_connection *, int id);
-	void (* chat_whisper)	(struct gaim_connection *, int id, char *who, char *message);
 	int  (* chat_send)	(struct gaim_connection *, int id, char *message);
 	int  (* chat_open)	(struct gaim_connection *, char *who);
-	void (* keepalive)	(struct gaim_connection *);
-
-	/* get "chat buddy" info and away message */
-	void (* get_cb_info)	(struct gaim_connection *, int, char *who);
-	void (* get_cb_away)	(struct gaim_connection *, int, char *who);
-
-	/* save/store buddy's alias on server list/roster */
-	void (* alias_buddy)	(struct gaim_connection *, char *who);
-
-	/* change a buddy's group on a server list/roster */
-	void (* group_buddy)	(struct gaim_connection *, char *who, char *old_group, char *new_group);
-
-	void (* buddy_free)	(struct buddy *);
-
+	
+	/* DIE! */
 	char *(* get_status_string) (struct gaim_connection *gc, int stat);
-
+	
+	GList *(* away_states)(struct gaim_connection *gc);
+	
+	/* Mainly for AOL, since they think "Bung hole" == "Bu ngho le". *sigh* */
 	int (* cmp_buddynames) (const char *who1, const char *who2);
 };
@@ -307,4 +276,3 @@
 struct conversation *conv_findchannel( char *channel );
 
-
 #endif
Index: protocols/yahoo/yahoo.c
===================================================================
--- protocols/yahoo/yahoo.c	(revision a014331db88702de88f3327a0b87f9b8258c8d43)
+++ protocols/yahoo/yahoo.c	(revision 192b80a1175690187be4bad30c36d286f8e63eb0)
@@ -227,14 +227,9 @@
 		else if( g_strcasecmp( state, GAIM_AWAY_CUSTOM ) == 0 )
 		{
-			if (gc->is_idle)
-				yd->current_status = YAHOO_STATUS_IDLE;
-			else
-				yd->current_status = YAHOO_STATUS_AVAILABLE;
+			yd->current_status = YAHOO_STATUS_AVAILABLE;
 			
 			gc->away = NULL;
 		}
 	}
-	else if( gc->is_idle )
-		yd->current_status = YAHOO_STATUS_IDLE;
 	else
 		yd->current_status = YAHOO_STATUS_AVAILABLE;
