diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-book-simple.c evolution-1.4.5/addressbook/backend/ebook/e-book-simple.c
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-book-simple.c	1970-01-01 12:00:00.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/e-book-simple.c	2003-12-06 15:22:11.000000000 +1300
@@ -0,0 +1,637 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+#include <config.h>
+#include <glib.h>
+#include <bonobo/bonobo-i18n.h>
+#include <bonobo/bonobo-main.h>
+#include <libgnome/gnome-init.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "e-book-simple.h"
+#include "e-book-util.h"
+#include "e-card-simple.h"
+
+typedef struct {
+	GMainContext *context;
+	GMainLoop    *loop;
+	EBookStatus   status;
+	ECardCursor  *cursor;
+} syncify_closure_t;
+
+#define TOXMLSTR(x) (x ? xml_quote (x, arena) : "")
+#define TOXMLINT(x) (x)
+#define TOXMLFLOAT(x) (x)
+#define TOXMLBOOL(x) (x ? "true" : "false")
+
+typedef struct {
+	char *buff;
+	size_t pos;
+	size_t size;
+} arena_t;
+
+static char *
+arena_malloc (size_t size, arena_t *arena)
+{
+	char *retval;
+
+	if (arena == NULL)
+		return NULL; 
+
+	if ((arena->pos + size) >= arena->size) {
+		arena->buff = g_realloc (arena->buff, arena->size + size * 5);
+		arena->size = arena->size + size * 5;
+	}
+
+	retval = & (arena->buff [arena->pos]);
+	arena->pos += size + 1;
+
+	return retval;
+}
+
+static arena_t *
+arena_new (size_t size)
+{
+	arena_t *arena;
+
+	arena = g_new0 (arena_t, 1);
+	arena->size = size;
+	arena->buff = g_malloc (size);
+	arena->pos  = 0;
+
+	return arena;
+}
+
+static void
+arena_free (arena_t *arena)
+{
+	g_free (arena->buff);
+	g_free (arena);
+}
+
+static char *
+xml_quote (const char *str, arena_t *arena)
+{
+	char *quoted;
+	char *buff;
+
+	if (str == NULL)
+		return "";
+
+	quoted = g_markup_escape_text (str, strlen (str));
+
+	buff = arena_malloc (strlen (quoted) + 1, arena);
+
+	snprintf (buff, 32768, "%s", quoted);
+
+	g_free (quoted);
+
+	return buff;
+}
+
+static char *
+e_card_name_to_xml (ECardName *name, arena_t *arena)
+{
+	char *buff;
+	
+	if (name == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "        <prefix>%s</prefix>\n"
+		  "        <given>%s</given>\n"
+		  "        <additional>%s</additional>\n"
+		  "        <family>%s</family>\n"
+		  "        <suffix>%s</suffix>\n",
+		  TOXMLSTR (name->prefix),
+		  TOXMLSTR (name->given),
+		  TOXMLSTR (name->additional),
+		  TOXMLSTR (name->family),
+		  TOXMLSTR (name->suffix));
+
+	return buff;
+}
+
+static char *
+e_card_address_to_xml (ECardDeliveryAddress *addr, arena_t *arena)
+{
+	char *buff;
+
+	if (addr == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "        <address>\n"
+		  "            <po>%s</po>\n"
+		  "            <ext>%s</ext>\n"
+		  "            <street>%s</street>\n"
+		  "            <city>%s</city>\n"
+		  "            <region>%s</region>\n"
+		  "            <code>%s</code>\n"
+		  "            <country>%s</country>\n"
+		  "            <flags>%d</flags>\n"
+		  "        </address>\n",
+		  TOXMLSTR (addr->po),
+		  TOXMLSTR (addr->ext),
+		  TOXMLSTR (addr->street),
+		  TOXMLSTR (addr->city),
+		  TOXMLSTR (addr->region),
+		  TOXMLSTR (addr->code),
+		  TOXMLSTR (addr->country),
+		  TOXMLINT (addr->flags)); // FIXME: Should serialize as non-int
+
+	return buff;
+}
+
+static char *
+e_card_addresses_to_xml (EList *addrs, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char    *buff;
+
+	if (addrs == NULL)
+		return "";
+
+	buff = arena_malloc (10000, arena);
+
+	s = g_string_new ("");
+
+	for (l = addrs->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_address_to_xml ((ECardDeliveryAddress *) (l->data), arena));
+
+	snprintf (buff, 10000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+
+static char *
+e_card_address_label_to_xml (ECardAddrLabel *label, arena_t *arena)
+{
+	char *buff;
+
+	if (label == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "        <label>\n"
+		  "            <flags>%d</flags>\n"
+		  "            <data>%s</data>\n"
+		  "        </label>\n",
+		  TOXMLINT (label->flags), // FIXME: Should serialize as non-int
+		  TOXMLSTR (label->data));
+
+	return buff;
+}
+
+static char *
+e_card_address_labels_to_xml (EList *labels, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char *buff;
+
+	if (labels == NULL)
+		return "";
+
+	buff = arena_malloc (10000, arena);
+
+	s = g_string_new ("");
+
+	for (l = labels->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_address_label_to_xml ((ECardAddrLabel *) (l->data), arena));
+
+	snprintf (buff, 10000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+static char *
+e_card_phone_to_xml (ECardPhone *phone, arena_t *arena)
+{
+	char *buff;
+
+	if (phone == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "        <phone>\n"
+		  "            <flags>%d</flags>\n"
+		  "            <number>%s</number>\n"
+		  "        </phone>\n",
+		  TOXMLINT (phone->flags), // FIXME: Should serialize as non-int
+		  TOXMLSTR (phone->number));
+
+	return buff;
+}
+
+static char *
+e_card_phones_to_xml (EList *phones, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char    *buff;
+
+	if (phones == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	s = g_string_new ("");
+
+	for (l = phones->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_phone_to_xml ((ECardPhone *) (l->data), arena));
+
+	snprintf (buff, 3000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+
+static char *
+e_card_email_to_xml (char *email, arena_t *arena)
+{
+	char *buff;
+
+	if (email == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "            <email>%s</email>\n",
+		  TOXMLSTR (email));
+
+	return buff;
+}
+
+static char *
+e_card_emails_to_xml (EList *emails, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char    *buff;
+
+	if (emails == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	s = g_string_new ("");
+
+	for (l = emails->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_email_to_xml ((char *) (l->data), arena));
+
+	snprintf (buff, 3000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+static char *
+e_card_category_to_xml (char *category, arena_t *arena)
+{
+	char *buff;
+
+	if (category == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "            <category>%s</category>\n",
+		  TOXMLSTR (category));
+
+	return buff;
+}
+
+static char *
+e_card_categories_to_xml (EList *categories, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char    *buff;
+
+	if (categories == NULL)
+		return "";
+
+	buff = arena_malloc (10000, arena);
+
+	s = g_string_new ("");
+
+	for (l = categories->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_category_to_xml ((char *) (l->data), arena));
+
+	snprintf (buff, 10000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+static char *
+e_card_arbitrary_to_xml (ECardArbitrary *arbitrary, arena_t *arena)
+{
+	char *buff;
+
+	if (arbitrary == NULL)
+		return "";
+
+	buff = arena_malloc (3000, arena);
+
+	snprintf (buff, 3000,
+		  "            <arbitrary>\n"
+		  "                <key>%s</key>\n"
+		  "                <value>%s</value>\n"
+		  "                <type>%s</type>\n"
+		  "            </arbitrary>\n",
+		  TOXMLSTR (arbitrary->key),
+		  TOXMLSTR (arbitrary->value),
+		  TOXMLSTR (arbitrary->type));
+
+	return buff;
+}
+
+static char *
+e_card_arbitraries_to_xml (EList *arbitraries, arena_t *arena)
+{
+	GList   *l;
+	GString *s;
+	char    *buff;
+
+	if (arbitraries == NULL)
+		return "";
+
+	buff = arena_malloc (10000, arena);
+
+	s = g_string_new ("");
+
+	for (l = arbitraries->list; l != NULL; l = l->next)
+		g_string_append (s, e_card_arbitrary_to_xml ((ECardArbitrary *) (l->data), arena));
+
+	snprintf (buff, 10000, "%s", s->str);
+
+	g_string_free (s, TRUE);
+
+	return buff;
+}
+
+static char *
+e_card_date_to_xml (ECardDate *date, arena_t *arena)
+{
+	char *buff;
+
+	if (date == NULL)
+		return "";
+
+	buff = arena_malloc (500, arena);
+
+	snprintf (buff, 3000,
+		  "            <year>%d</year>\n"
+		  "            <month>%d</month>\n"
+		  "            <day>%d</day>\n",
+		  TOXMLINT (date->year),
+		  TOXMLINT (date->month),
+		  TOXMLINT (date->day));
+
+	return buff;
+}
+
+static char *
+e_card_to_xml (ECard *card)
+{
+	arena_t *arena;
+	char    *xml;
+
+	ECardSimple *s;
+
+	s = e_card_simple_new (card);
+
+	fprintf (stderr, "\n\nAIM: %s\n\n", e_card_simple_get (s, E_CARD_SIMPLE_FIELD_AIM_NAME));
+
+	arena = arena_new (65536);
+
+	xml = g_strdup_printf (
+		"<card>\n"
+		"    <id>%s</id>\n"
+		"    <file_as>%s</file_as>\n"
+		"    <fname>%s</fname>\n"
+		"    <name>\n%s    </name>\n"
+		"    <addresses>\n%s    </addresses>\n"
+		"    <addresslabels>\n%s    </addresslabels>\n"
+		"    <phones>\n%s    </phones>\n"
+		"    <emails>\n%s    </emails>\n"
+		"    <url>%s</url>\n"
+		"    <rss>%s</rss>\n"
+		"    <bday>%s</bday>\n"
+		"    <note>%s</note>\n"
+		"    <org>%s</org>\n"
+		"    <org_unit>%s</org_unit>\n"
+		"    <office>%s</office>\n"
+		"    <role>%s</role>\n"
+		"    <title>%s</title>\n"
+		"    <manager>%s</manager>\n"
+		"    <assistant>%s</assistant>\n"
+		"    <nickname>%s</nickname>\n"
+		"    <spouse>%s</spouse>\n"
+		"    <anniversary>\n%s    </anniversary>\n"
+		"    <mailer>%s</mailer>\n"
+		"    <caluri>%s</caluri>\n"
+		"    <fburl>%s</fburl>\n"
+		"    <icscalendar>%s</icscalendar>\n"
+		"    <aim>%s</aim>\n"
+		"    <jabber>%s</jabber>\n"
+		"    <yahoo>%s</yahoo>\n"
+		"    <msn>%s</msn>\n"
+		"    <icq>%s</icq>\n"
+		"    <timezone>%d</timezone>\n"
+		"    <last_use>\n%s    </last_use>\n"
+		"    <raw_use_score>%g</raw_use_score>\n"
+		"    <related_contacts>%s</related_contacts>\n"
+		"    <categories>\n%s    </categories>\n"
+		"    <arbitraries>\n%s    </arbitraries>\n"
+		"    <wants_html>%s</wants_html>\n"
+		"    <wants_html_set>%s</wants_html_set>\n"
+		"    <list>%s</list>\n"
+		"    <list_show_addresses>%s</list_show_addresses>\n"
+		"</card>\n",
+		TOXMLSTR                     (card->id),
+		TOXMLSTR                     (card->file_as),
+		TOXMLSTR                     (card->fname),
+		e_card_name_to_xml           (card->name,                arena),
+		e_card_addresses_to_xml      (card->address,             arena),
+		e_card_address_labels_to_xml (card->address_label,       arena),
+		e_card_phones_to_xml         (card->phone,               arena),
+		e_card_emails_to_xml         (card->email,               arena),
+		TOXMLSTR                     (card->url),
+		TOXMLSTR                     (card->rss),
+		e_card_date_to_xml           (card->bday,                arena),
+		TOXMLSTR                     (card->note),
+		TOXMLSTR                     (card->org),
+		TOXMLSTR                     (card->org_unit),
+		TOXMLSTR                     (card->office),
+		TOXMLSTR                     (card->role),
+		TOXMLSTR                     (card->title),
+		TOXMLSTR                     (card->manager),
+		TOXMLSTR                     (card->assistant),
+		TOXMLSTR                     (card->nickname),
+		TOXMLSTR                     (card->spouse),
+		e_card_date_to_xml           (card->anniversary,         arena),
+		TOXMLSTR                     (card->mailer),
+		TOXMLSTR                     (card->caluri),
+		TOXMLSTR                     (card->fburl),
+		TOXMLSTR                     (card->icscalendar),
+		TOXMLSTR                     (card->aim_name),
+		TOXMLSTR                     (card->jabber_name),
+		TOXMLSTR                     (card->yahoo_name),
+		TOXMLSTR                     (card->msn_name),
+		TOXMLSTR                     (card->icq_name),
+		TOXMLINT                     (card->timezone),
+		e_card_date_to_xml           (card->last_use,            arena),
+		TOXMLFLOAT                   (card->raw_use_score),
+		TOXMLSTR                     (card->related_contacts),
+		e_card_categories_to_xml     (card->categories,          arena),
+		e_card_arbitraries_to_xml    (card->arbitrary,           arena),
+		TOXMLBOOL                    (card->wants_html),
+		TOXMLBOOL                    (card->wants_html_set),
+		TOXMLBOOL                    (card->list),
+		TOXMLBOOL                    (card->list_show_addresses));
+
+	arena_free (arena); 
+
+	return xml;
+}
+
+static void
+get_cursor_cb (EBook *book, EBookStatus status, ECardCursor *cursor, gpointer closure)
+{
+	syncify_closure_t *sclosure = closure;
+
+	sclosure->status = status;
+	sclosure->cursor = cursor;
+
+	g_object_ref (G_OBJECT (cursor));
+
+	g_main_loop_quit (sclosure->loop);
+
+}
+
+static void
+book_open_cb (EBook *book, EBookStatus status, gpointer closure)
+{
+	syncify_closure_t *sclosure = closure;
+
+	sclosure->status = status;
+
+	g_main_loop_quit (sclosure->loop);
+}
+
+static GList *
+cursor_to_glist (ECardCursor *cursor)
+{
+	long   length;
+	long   i;
+	GList *l;
+
+
+	length = e_card_cursor_get_length (cursor);
+
+	printf ("\n%s: %s(): Number of cards is %ld\n",
+		__FILE__, G_GNUC_FUNCTION, length);
+	
+	if (length < 1)
+		return NULL;
+
+	l = NULL;
+	for (i = 0; i < length; i++) {
+		ECard *card = e_card_cursor_get_nth (cursor, i);
+		char  *xml = e_card_to_xml (card);
+		l = g_list_prepend (l, xml);
+		g_object_unref (card);
+	}
+
+	return l;
+}
+
+GList *
+e_book_simple_find (char *field, char *needle, char *how)
+{
+	EBook              *book;
+	syncify_closure_t  *sclosure;
+	char               *query;
+	GList              *list;
+
+	sclosure = g_new0 (syncify_closure_t, 1);
+
+	book = e_book_new ();
+
+	/*
+	 * Create a main loop.  If you don't create the context, you hang,
+	 * since we're running in a thread right now.
+	 */
+	sclosure->context = g_main_context_new ();
+	sclosure->loop = g_main_loop_new (sclosure->context, FALSE);
+
+	/* Get the default addressbook */
+
+	e_book_load_default_book (book, book_open_cb, sclosure);
+	g_main_loop_run (sclosure->loop);
+
+	if (sclosure->status != E_BOOK_STATUS_SUCCESS)
+		goto fail;
+
+	/* Get the cursor */
+	query = g_strdup_printf ("(%s \"%s\" \"%s\")", how, field, needle);
+	e_book_get_cursor (book, query, get_cursor_cb, sclosure);	
+	g_main_loop_run (sclosure->loop);
+
+	g_free (query);
+
+	if (sclosure->status != E_BOOK_STATUS_SUCCESS)
+		goto fail;
+
+	/* Get the cards, stuff them into the GList */
+	list = cursor_to_glist (sclosure->cursor);
+	
+	g_object_unref (G_OBJECT (book));
+	g_main_loop_unref (sclosure->loop);
+	g_main_context_unref (sclosure->context);
+	g_object_unref (G_OBJECT (sclosure->cursor));
+	g_free (sclosure);
+
+	return list;
+
+ fail:
+	g_main_loop_unref (sclosure->loop);
+	g_object_unref (G_OBJECT (book));
+	g_free (sclosure);
+	return NULL;
+}
+
+GList *
+e_book_simple_find_exact (char *field, char *needle)
+{
+	return e_book_simple_find (field, needle, "is");
+}
+
+GList *
+e_book_simple_find_substring (char *field, char *needle)
+{
+
+	return e_book_simple_find (field, needle, "contains");
+}
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-book-simple.h evolution-1.4.5/addressbook/backend/ebook/e-book-simple.h
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-book-simple.h	1970-01-01 12:00:00.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/e-book-simple.h	2003-12-06 15:22:11.000000000 +1300
@@ -0,0 +1,17 @@
+#ifndef __E_BOOK_SIMPLE_H__
+#define __E_BOOK_SIMPLE_H__
+
+#include <glib.h>
+#include <ebook/e-book.h>
+
+GList *e_book_simple_find               (char *field,
+					 char *needle,
+					 char *how);
+
+GList *e_book_simple_find_exact         (char *field,
+				         char *needle);
+
+GList *e_book_simple_find_substring     (char *field,
+				         char *needle);
+
+#endif /* ! __E_BOOK_SIMPLE_H__ */
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-card.c evolution-1.4.5/addressbook/backend/ebook/e-card.c
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-card.c	2003-06-24 01:59:44.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/e-card.c	2003-12-06 15:22:11.000000000 +1300
@@ -33,6 +33,12 @@
 #define str_val(obj) (the_str = (vObjectValueType (obj))? fakeCString (vObjectUStringZValue (obj)) : calloc (1, 1))
 #define has(obj,prop) (vo = isAPropertyOf ((obj), (prop)))
 
+#define XEV_RSS "X-RSS"
+#define XEV_AIM_NAME "X-AIM"
+#define XEV_JABBER_NAME "X-JABBER"
+#define XEV_YAHOO_NAME "X-YAHOO"
+#define XEV_MSN_NAME "X-MSN"
+#define XEV_ICQ_NAME "X-ICQ"
 #define XEV_WANTS_HTML "X-MOZILLA-HTML"
 #define XEV_ARBITRARY "X-EVOLUTION-ARBITRARY"
 #define XEV_LIST "X-EVOLUTION-LIST"
@@ -65,6 +71,12 @@
 	PROP_CALURI,
 	PROP_FBURL,
 	PROP_ICSCALENDAR,
+	PROP_RSS,
+	PROP_AIM_NAME,
+	PROP_JABBER_NAME,
+	PROP_YAHOO_NAME,
+	PROP_MSN_NAME,
+	PROP_ICQ_NAME,
 	PROP_NOTE,
 	PROP_RELATED_CONTACTS,
 	PROP_CATEGORIES,
@@ -125,6 +137,12 @@
 static void parse_id(ECard *card, VObject *object, char *default_charset);
 static void parse_last_use(ECard *card, VObject *object, char *default_charset);
 static void parse_use_score(ECard *card, VObject *object, char *default_charset);
+static void parse_rss(ECard *card, VObject *object, char *default_charset);
+static void parse_aim_name(ECard *card, VObject *object, char *default_charset);
+static void parse_jabber_name(ECard *card, VObject *object, char *default_charset);
+static void parse_yahoo_name(ECard *card, VObject *object, char *default_charset);
+static void parse_msn_name(ECard *card, VObject *object, char *default_charset);
+static void parse_icq_name(ECard *card, VObject *object, char *default_charset);
 
 static ECardPhoneFlags get_phone_flags (VObject *vobj);
 static void set_phone_flags (VObject *vobj, ECardPhoneFlags flags);
@@ -170,7 +188,13 @@
 	{ "X-EVOLUTION-USE-SCORE",   parse_use_score },
 	{ XEV_LIST,                  parse_list },
 	{ XEV_LIST_SHOW_ADDRESSES,   parse_list_show_addresses },
-	{ VCUniqueStringProp,        parse_id }
+	{ VCUniqueStringProp,        parse_id },
+	{ XEV_RSS,                   parse_rss},
+	{ XEV_AIM_NAME,              parse_aim_name},
+	{ XEV_JABBER_NAME,           parse_jabber_name},
+	{ XEV_YAHOO_NAME,            parse_yahoo_name},
+	{ XEV_MSN_NAME,              parse_msn_name},
+	{ XEV_ICQ_NAME,              parse_icq_name},
 };
 
 /**
@@ -710,6 +734,24 @@
 		ADD_PROP_VALUE (vobj, XEV_LIST_SHOW_ADDRESSES, card->list_show_addresses ? "TRUE" : "FALSE");
 	}
 
+	if (card->rss)
+		ADD_PROP_VALUE (vobj, XEV_RSS, card->rss);
+
+	if (card->aim_name)
+		ADD_PROP_VALUE (vobj, XEV_AIM_NAME, card->aim_name);
+
+	if (card->jabber_name)
+		ADD_PROP_VALUE (vobj, XEV_JABBER_NAME, card->jabber_name);
+
+	if (card->yahoo_name)
+		ADD_PROP_VALUE (vobj, XEV_YAHOO_NAME, card->yahoo_name);
+
+	if (card->msn_name)
+		ADD_PROP_VALUE (vobj, XEV_MSN_NAME, card->msn_name);
+
+	if (card->icq_name)
+		ADD_PROP_VALUE (vobj, XEV_ICQ_NAME, card->icq_name);
+
 	if (card->arbitrary) {
 		EIterator *iterator;
 		for (iterator = e_list_get_iterator(card->arbitrary); e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
@@ -1028,6 +1070,49 @@
 }
 
 static void
+parse_rss(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->rss);
+	assign_string(vobj, default_charset, &(card->rss));
+}
+
+static void
+parse_aim_name(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->aim_name);
+	assign_string(vobj, default_charset, &(card->aim_name));
+}
+
+static void
+parse_jabber_name(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->jabber_name);
+	assign_string(vobj, default_charset, &(card->jabber_name));
+}
+
+static void
+parse_yahoo_name(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->yahoo_name);
+	assign_string(vobj, default_charset, &(card->yahoo_name));
+}
+
+static void
+parse_msn_name(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->msn_name);
+	assign_string(vobj, default_charset, &(card->msn_name));
+}
+
+static void
+parse_icq_name(ECard *card, VObject *vobj, char *default_charset)
+{
+	g_free(card->icq_name);
+	assign_string(vobj, default_charset, &(card->icq_name));
+}
+
+
+static void
 parse_icscalendar(ECard *card, VObject *vobj, char *default_charset)
 {
 	g_free(card->icscalendar);
@@ -1548,6 +1633,49 @@
 							     0.0,
 							     0.0,
 							     G_PARAM_READWRITE | G_PARAM_LAX_VALIDATION));
+
+	g_object_class_install_property (object_class, PROP_RSS, 
+					 g_param_spec_string ("rss",
+							      _("Weblog RSS URL"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class, PROP_AIM_NAME, 
+					 g_param_spec_string ("aim_name",
+							      _("AIM"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class, PROP_JABBER_NAME, 
+					 g_param_spec_string ("jabber_name",
+							      _("Jabber"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class, PROP_YAHOO_NAME, 
+					 g_param_spec_string ("yahoo_name",
+							      _("Yahoo"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class, PROP_MSN_NAME, 
+					 g_param_spec_string ("msn_name",
+							      _("MSN"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class, PROP_ICQ_NAME, 
+					 g_param_spec_string ("icq_name",
+							      _("ICQ"),
+							      /*_( */"XXX blurb" /*)*/,
+							      NULL,
+							      G_PARAM_READWRITE));
+
 }
 
 ECardPhone *
@@ -2052,6 +2180,12 @@
 	FREE_IF(card->last_use);
 	FREE_IF(card->note);
 	FREE_IF(card->related_contacts);
+	FREE_IF(card->rss);
+	FREE_IF(card->aim_name);
+	FREE_IF(card->jabber_name);
+	FREE_IF(card->yahoo_name);
+	FREE_IF(card->msn_name);
+	FREE_IF(card->icq_name);
 
 	UNREF_IF (card->categories);
 	UNREF_IF (card->email);
@@ -2245,6 +2379,30 @@
 	case PROP_EVOLUTION_LIST_SHOW_ADDRESSES:
 		card->list_show_addresses = g_value_get_boolean (value);
 		break;
+	case PROP_RSS:
+		g_free (card->rss);
+		card->rss = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_AIM_NAME:
+		g_free (card->aim_name);
+		card->aim_name = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_JABBER_NAME:
+		g_free (card->jabber_name);
+		card->jabber_name = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_YAHOO_NAME:
+		g_free (card->yahoo_name);
+		card->yahoo_name = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_MSN_NAME:
+		g_free (card->msn_name);
+		card->msn_name = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_ICQ_NAME:
+		g_free (card->icq_name);
+		card->icq_name = g_strdup (g_value_get_string (value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -2410,6 +2568,24 @@
 	case PROP_EVOLUTION_LIST_SHOW_ADDRESSES:
 		g_value_set_boolean (value, card->list_show_addresses);
 		break;
+	case PROP_RSS:
+		g_value_set_string (value, card->rss);
+		break;
+	case PROP_AIM_NAME:
+		g_value_set_string (value, card->aim_name);
+		break;
+	case PROP_JABBER_NAME:
+		g_value_set_string (value, card->jabber_name);
+		break;
+	case PROP_YAHOO_NAME:
+		g_value_set_string (value, card->yahoo_name);
+		break;
+	case PROP_MSN_NAME:
+		g_value_set_string (value, card->msn_name);
+		break;
+	case PROP_ICQ_NAME:
+		g_value_set_string (value, card->icq_name);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -2458,6 +2634,12 @@
 	card->arbitrary           = NULL;
 	card->last_use            = NULL;
 	card->raw_use_score       = 0;
+	card->rss                 = NULL;
+	card->aim_name            = NULL;
+	card->jabber_name         = NULL;
+	card->yahoo_name          = NULL;
+	card->msn_name            = NULL;
+	card->icq_name            = NULL;
 }
 
 GList *
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-card.h evolution-1.4.5/addressbook/backend/ebook/e-card.h
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-card.h	2003-03-06 03:48:42.000000000 +1300
+++ evolution-1.4.5/addressbook/backend/ebook/e-card.h	2003-12-06 15:22:11.000000000 +1300
@@ -72,6 +72,14 @@
 	char            *fburl;         /* Free Busy URL                    */
 	char            *icscalendar;   /* Default server calendar          */
 
+	char            *rss;           /* URL for weblog RSS feed */
+
+	char            *aim_name;      /* AOL IM buddy name */
+	char            *jabber_name;   /* Jabber buddy name */
+	char            *yahoo_name;    /* Yahoo Messenger buddy name */
+	char            *msn_name;      /* MSN Messenger buddy name */
+	char            *icq_name;      /* ICQ buddy number */
+
 	gint             timezone;      /* number of minutes from UTC as an int */
 
 	ECardDate       *last_use;
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-card-simple.c evolution-1.4.5/addressbook/backend/ebook/e-card-simple.c
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-card-simple.c	2003-06-24 01:59:44.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/e-card-simple.c	2003-12-06 15:22:11.000000000 +1300
@@ -97,7 +97,13 @@
 	{ E_CARD_SIMPLE_FIELD_NOTE,               "note",            N_("Note"),          N_("Note"),     0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
  	{ E_CARD_SIMPLE_FIELD_CALURI,             "caluri",          N_("Calendar URI"),  N_("CALUri"),   0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
 	{ E_CARD_SIMPLE_FIELD_FBURL,              "fburl",           N_("Free-busy URL"), N_("FBUrl"),    0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
-	{ E_CARD_SIMPLE_FIELD_ICSCALENDAR,        "icscalendar",     N_("Default server calendar"), N_("icsCalendar"),    0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_ICSCALENDAR,        "icscalendar",     N_("Default server calendar"), N_("icsCalendar"),    0,                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_RSS,                "rss",             N_("Weblog RSS URL"), N_("RSS"),    0,                                    E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_AIM_NAME,           "aim_name",        N_("AOL Instant Messenger Buddy Name"), N_("AIM"),    0,              E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_JABBER_NAME,        "jabber_name",     N_("Jabber Buddy Name"), N_("Jabber"),    0,                              E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_YAHOO_NAME,         "yahoo_name",    N_("Yahoo Messenger Buddy Name"), N_("Yahoo"),    0,                      E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_MSN_NAME,           "msn_name",        N_("MSN Messenger Buddy Name"), N_("MSN"),    0,                          E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
+	{ E_CARD_SIMPLE_FIELD_ICQ_NAME,           "icq_name",        N_("ICQ Buddy Number"), N_("ICQ"),    0,                                  E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
 	{ E_CARD_SIMPLE_FIELD_ANNIVERSARY,        "anniversary",     N_("Anniversary"),   N_("Anniv"),    0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_DATE },
 	{ E_CARD_SIMPLE_FIELD_BIRTH_DATE,         "birth_date",      N_("Birth Date"),    "",             0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_DATE },
 	{ E_CARD_SIMPLE_FIELD_MAILER,             "mailer",          "",                  "",             0,                                   E_CARD_SIMPLE_INTERNAL_TYPE_STRING },
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-card-simple.h evolution-1.4.5/addressbook/backend/ebook/e-card-simple.h
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-card-simple.h	2003-03-06 03:48:42.000000000 +1300
+++ evolution-1.4.5/addressbook/backend/ebook/e-card-simple.h	2003-12-06 15:22:11.000000000 +1300
@@ -119,8 +119,14 @@
         E_CARD_SIMPLE_FIELD_CALURI,
         E_CARD_SIMPLE_FIELD_FBURL,
         E_CARD_SIMPLE_FIELD_ICSCALENDAR,
-	/* If you add after icscalendar, make sure to move LAST_SIMPLE_STRING */
-	E_CARD_SIMPLE_FIELD_LAST_SIMPLE_STRING = E_CARD_SIMPLE_FIELD_ICSCALENDAR,
+        E_CARD_SIMPLE_FIELD_RSS,
+        E_CARD_SIMPLE_FIELD_AIM_NAME,
+        E_CARD_SIMPLE_FIELD_JABBER_NAME,
+        E_CARD_SIMPLE_FIELD_YAHOO_NAME,
+        E_CARD_SIMPLE_FIELD_MSN_NAME,
+        E_CARD_SIMPLE_FIELD_ICQ_NAME,
+	/* If you add after ICQ_NAME, make sure to move LAST_SIMPLE_STRING */
+	E_CARD_SIMPLE_FIELD_LAST_SIMPLE_STRING = E_CARD_SIMPLE_FIELD_ICQ_NAME,
         E_CARD_SIMPLE_FIELD_ANNIVERSARY,
         E_CARD_SIMPLE_FIELD_BIRTH_DATE,
 	E_CARD_SIMPLE_FIELD_MAILER,
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/e-card-types.h evolution-1.4.5/addressbook/backend/ebook/e-card-types.h
--- evolution-1.4.5.orig/addressbook/backend/ebook/e-card-types.h	2002-02-02 07:41:40.000000000 +1300
+++ evolution-1.4.5/addressbook/backend/ebook/e-card-types.h	2003-12-06 15:22:11.000000000 +1300
@@ -73,7 +73,6 @@
 typedef struct {
 	gint ref_count;
 	ECardAddressFlags  flags;
-
 	char     	  *po;
 	char     	  *ext;
 	char     	  *street;
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/Makefile.am evolution-1.4.5/addressbook/backend/ebook/Makefile.am
--- evolution-1.4.5.orig/addressbook/backend/ebook/Makefile.am	2003-06-13 05:02:46.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/Makefile.am	2003-12-06 15:22:11.000000000 +1300
@@ -62,6 +62,7 @@
 	e-book-view-listener.c				\
 	e-book-view.c					\
 	e-book.c					\
+	e-book-simple.c					\
 	e-book-util.c					\
 	e-card-cursor.c					\
 	e-card-simple.c					\
@@ -83,6 +84,7 @@
 	e-book-view-listener.h				\
 	e-book-view.h					\
 	e-book.h					\
+	e-book-simple.h					\
 	e-book-util.h					\
 	e-card-cursor.h					\
 	e-card-simple.h					\
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/test-card.c evolution-1.4.5/addressbook/backend/ebook/test-card.c
--- evolution-1.4.5.orig/addressbook/backend/ebook/test-card.c	2003-06-24 01:59:44.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/ebook/test-card.c	2003-12-06 15:22:11.000000000 +1300
@@ -58,6 +58,12 @@
 	char *role;
 	char *nickname;
 	char *fburl;
+	char *rss;
+	char *aim_name;
+	char *jabber_name;
+	char *yahoo_name;
+	char *msn_name;
+	char *icq_name;
 	ECardName *name;
 	EList *address;
 	EList *phone;
@@ -97,6 +103,12 @@
 		     "role",       &role,
 		     "nickname",   &nickname,
 		     "fburl",      &fburl,
+		     "rss",        &rss,
+		     "aim_name",   &aim_name,
+		     "jabber_name",&jabber_name,
+		     "yahoo_name", &yahoo_name,
+		     "msn_name",   &msn_name,
+		     "icq_name",   &icq_name,
 		     "arbitrary",  &arbitrary,
 		     "birth_date", &bday,
 		     NULL);
@@ -135,6 +147,24 @@
 	if ( fburl ) {
 	  printf("Free Busy URL : %s\n", fburl);
 	}
+	if ( rss ) {
+	  printf("RSS URL : %s\n", rss);
+        }
+	if ( aim_name ) {
+	  printf("AIM Name : %s\n", aim_name);
+        }
+	if ( jabber_name ) {
+	  printf("Jabber Name : %s\n", jabber_name);
+        }
+	if ( yahoo_name ) {
+	  printf("Yahoo Name : %s\n", yahoo_name);
+        }
+	if ( msn_name ) {
+	  printf("MSN Name : %s\n", msn_name);
+        }
+	if ( icq_name ) {
+	  printf("ICQ Account : %s\n", icq_name);
+        }
 	if ( arbitrary ) {
 	  iterator = e_list_get_iterator(arbitrary);
 	  for (; e_iterator_is_valid(iterator); e_iterator_next(iterator)) {
diff -urN evolution-1.4.5.orig/addressbook/backend/ebook/test-client.c evolution-1.4.5/addressbook/backend/ebook/test-client.c
--- evolution-1.4.5.orig/addressbook/backend/ebook/test-client.c	2003-03-14 06:47:46.000000000 +1300
+++ evolution-1.4.5/addressbook/backend/ebook/test-client.c	2003-12-06 15:22:11.000000000 +1300
@@ -67,7 +67,7 @@
 	g_free(vcard);
 
 	printf ("Getting cards..\n");
-	e_book_get_cursor(book, "(contains \"x-evolution-any-field\" \"\")", get_cursor_cb, NULL);
+	e_book_get_cursor(book, "(is \"email\" \"jacob@assbarn.com\")", get_cursor_cb, NULL);
 	printf ("Done getting all cards.\n");	
 }
 
diff -urN evolution-1.4.5.orig/addressbook/backend/pas/pas-backend-card-sexp.c evolution-1.4.5/addressbook/backend/pas/pas-backend-card-sexp.c
--- evolution-1.4.5.orig/addressbook/backend/pas/pas-backend-card-sexp.c	2003-06-24 01:59:44.000000000 +1200
+++ evolution-1.4.5/addressbook/backend/pas/pas-backend-card-sexp.c	2003-12-06 15:22:11.000000000 +1300
@@ -191,6 +191,12 @@
 	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_NICKNAME, "nickname", "nickname"),
 	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_SPOUSE, "spouse", "spouse" ),
 	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_NOTE, "note", "note"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_AIM_NAME, "aim_name", "aim_name"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_JABBER_NAME, "jabber_name", "jabber_name"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_YAHOO_NAME, "yahoo_name", "yahoo_name"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_MSN_NAME, "msn_name", "msn_name"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_ICQ_NAME, "icq_name", "icq_name"),
+	NORMAL_PROP ( E_CARD_SIMPLE_FIELD_RSS, "rss", "rss"),
 	ID_PROP,
 	LIST_PROP ( "email", "email", compare_email ),
 	LIST_PROP ( "phone", "phone", compare_phone ),
@@ -230,6 +236,7 @@
 					   maps directly to an ecard property */
 					
 					prop = e_card_simple_get (ctx->card, info->field_id);
+					fprintf (stderr, "Got for compare: %s/%s\n", prop, propname);
 
 					if (prop && compare(prop, argv[1]->value.string)) {
 						truth = TRUE;
diff -urN evolution-1.4.5.orig/addressbook/gui/contact-editor/contact-editor.glade evolution-1.4.5/addressbook/gui/contact-editor/contact-editor.glade
--- evolution-1.4.5.orig/addressbook/gui/contact-editor/contact-editor.glade	2003-05-17 04:22:44.000000000 +1200
+++ evolution-1.4.5/addressbook/gui/contact-editor/contact-editor.glade	2003-12-06 15:22:11.000000000 +1300
@@ -1326,7 +1326,7 @@
 		  <property name="label" translatable="yes">_Web page address:</property>
 		  <property name="use_underline">True</property>
 		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_CENTER</property>
+		  <property name="justify">GTK_JUSTIFY_RIGHT</property>
 		  <property name="wrap">False</property>
 		  <property name="selectable">False</property>
 		  <property name="xalign">1</property>
@@ -1478,6 +1478,48 @@
 		  <property name="y_options">fill</property>
 		</packing>
 	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="accellabel-rss">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Weblog _RSS address:</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_CENTER</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">1</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">3</property>
+		  <property name="top_attach">9</property>
+		  <property name="bottom_attach">10</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="Custom" id="entry-rss">
+		  <property name="visible">True</property>
+		  <property name="creation_function">e_contact_editor_create_web</property>
+		  <property name="int1">0</property>
+		  <property name="int2">0</property>
+		  <property name="last_modification_time">Fri, 04 Jul 2003 07:26:16 GMT</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">3</property>
+		  <property name="right_attach">4</property>
+		  <property name="top_attach">9</property>
+		  <property name="bottom_attach">10</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options">fill</property>
+		</packing>
+	      </child>
 	    </widget>
 	    <packing>
 	      <property name="tab_expand">False</property>
@@ -2095,6 +2137,347 @@
 	  </child>
 
 	  <child>
+	    <widget class="GtkVBox" id="vbox4">
+	      <property name="border_width">6</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox2">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="Custom" id="custom13">
+		      <property name="visible">True</property>
+		      <property name="creation_function">e_create_image_widget</property>
+		      <property name="string1">im.png</property>
+		      <property name="string2"></property>
+		      <property name="int1">0</property>
+		      <property name="int2">0</property>
+		      <property name="last_modification_time">Thu, 18 May 2000 12:20:13 GMT</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label26">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Enter this person's instant messenger accounts here.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.04</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">2</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment20">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.16</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">0</property>
+		  <property name="yscale">0.96</property>
+
+		  <child>
+		    <widget class="GtkTable" id="table3">
+		      <property name="border_width">3</property>
+		      <property name="visible">True</property>
+		      <property name="n_rows">5</property>
+		      <property name="n_columns">2</property>
+		      <property name="homogeneous">False</property>
+		      <property name="row_spacing">6</property>
+		      <property name="column_spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label-aim">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_AOL Instant Messenger:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_CENTER</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">entry-aim</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="entry-aim">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label-yahoo">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Yahoo Messenger:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_CENTER</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">entry-yahoo</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="entry-yahoo">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label-msn">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_MSN Messenger:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_CENTER</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">entry-msn</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="entry-msn">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label-icq">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_ICQ:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_CENTER</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">entry-icq</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="entry-icq">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label-jabber">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Jabber:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_CENTER</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">entry-jabber</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">4</property>
+			  <property name="bottom_attach">5</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkEntry" id="entry-jabber">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">4</property>
+			  <property name="bottom_attach">5</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label25">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Instant Messaging</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
 	    <widget class="GtkVBox" id="vbox3">
 	      <property name="border_width">6</property>
 	      <property name="visible">True</property>
diff -urN evolution-1.4.5.orig/addressbook/gui/contact-editor/e-contact-editor.c evolution-1.4.5/addressbook/gui/contact-editor/e-contact-editor.c
--- evolution-1.4.5.orig/addressbook/gui/contact-editor/e-contact-editor.c	2003-06-26 04:45:20.000000000 +1200
+++ evolution-1.4.5/addressbook/gui/contact-editor/e-contact-editor.c	2003-12-06 15:22:11.000000000 +1300
@@ -680,9 +680,16 @@
 	}
 
 	set_urlentry_changed_signal_field (editor, "entry-web");
+	set_urlentry_changed_signal_field (editor, "entry-rss");
 	set_urlentry_changed_signal_field (editor, "entry-caluri");
 	set_urlentry_changed_signal_field (editor, "entry-fburl");
 
+	set_entry_changed_signal_field (editor, "entry-aim");
+	set_entry_changed_signal_field (editor, "entry-jabber");
+	set_entry_changed_signal_field (editor, "entry-yahoo");
+	set_entry_changed_signal_field (editor, "entry-msn");
+	set_entry_changed_signal_field (editor, "entry-icq");
+
 	set_entry_changed_signal_field(editor, "entry-categories");
 	set_entry_changed_signal_field(editor, "entry-jobtitle");
 	set_entry_changed_signal_field(editor, "entry-file-as");
@@ -1244,6 +1251,7 @@
 		list = add_to_tab_order(list, gui, "entry-email1");
 		list = add_to_tab_order(list, gui, "alignment-htmlmail");
 		list = add_to_tab_order(list, gui, "entry-web");
+		list = add_to_tab_order(list, gui, "entry-rss");
 		list = add_to_tab_order(list, gui, "button-fulladdr");
 		list = add_to_tab_order(list, gui, "text-address");
 		list = g_list_reverse(list);
@@ -2074,6 +2082,7 @@
 	static const char *builtins[] = {
 		"entry-fullname",
 		"entry-web",
+		"entry-rss",
 		"entry-company",
 		"entry-department",
 		"entry-office",
@@ -2098,6 +2107,11 @@
 		"checkbutton-htmlmail",
 		"entry-caluri",
 		"entry-fburl",
+		"entry-aim",
+		"entry-jabber",
+		"entry-yahoo",
+		"entry-msn",
+		"entry-icq",
 		NULL
 	};
 	name = glade_get_widget_name(widget);
@@ -2118,6 +2132,7 @@
 } field_mapping [] = {
 	{ "entry-fullname", "full_name" },
 	{ "entry-web", "url" },
+	{ "entry-rss", "rss" },
 	{ "entry-company", "org" },
 	{ "entry-department", "org_unit" },
 	{ "entry-office", "office" },
@@ -2131,6 +2146,11 @@
 	{ "entry-categories", "categories" },
 	{ "entry-caluri", "caluri" },
 	{ "entry-fburl", "fburl" },
+	{ "entry-aim", "aim_name" },
+	{ "entry-jabber", "jabber_name" },
+	{ "entry-yahoo", "yahoo_name" },
+	{ "entry-msn", "msn_name" },
+	{ "entry-icq", "icq_name" },
 };
 
 static void
@@ -2202,6 +2222,9 @@
 	{ "entry-web", E_CARD_SIMPLE_FIELD_URL, TRUE },
 	{ "accellabel-web", E_CARD_SIMPLE_FIELD_URL },
 
+	{ "entry-rss", E_CARD_SIMPLE_FIELD_RSS, TRUE },
+	{ "accellabel-rss", E_CARD_SIMPLE_FIELD_RSS },
+
 	{ "entry-jobtitle", E_CARD_SIMPLE_FIELD_TITLE, TRUE },
 	{ "label-jobtitle", E_CARD_SIMPLE_FIELD_TITLE },
 
@@ -2251,7 +2274,22 @@
 	{ "entry-caluri", E_CARD_SIMPLE_FIELD_CALURI, TRUE },
 
 	{ "label-fburl", E_CARD_SIMPLE_FIELD_FBURL },
-	{ "entry-fburl", E_CARD_SIMPLE_FIELD_FBURL, TRUE }
+	{ "entry-fburl", E_CARD_SIMPLE_FIELD_FBURL, TRUE },
+
+	{ "label-aim", E_CARD_SIMPLE_FIELD_AIM_NAME },
+	{ "entry-aim", E_CARD_SIMPLE_FIELD_AIM_NAME, TRUE },
+
+	{ "label-jabber", E_CARD_SIMPLE_FIELD_JABBER_NAME },
+	{ "entry-jabber", E_CARD_SIMPLE_FIELD_JABBER_NAME, TRUE },
+
+	{ "label-yahoo", E_CARD_SIMPLE_FIELD_YAHOO_NAME },
+	{ "entry-yahoo", E_CARD_SIMPLE_FIELD_YAHOO_NAME, TRUE },
+
+	{ "label-msn", E_CARD_SIMPLE_FIELD_MSN_NAME },
+	{ "entry-msn", E_CARD_SIMPLE_FIELD_MSN_NAME, TRUE },
+
+	{ "label-icq", E_CARD_SIMPLE_FIELD_ICQ_NAME },
+	{ "entry-icq", E_CARD_SIMPLE_FIELD_ICQ_NAME, TRUE },
 };
 static int num_widget_field_mappings = sizeof(widget_field_mappings) / sizeof (widget_field_mappings[0]);
 
diff -urN evolution-1.4.5.orig/addressbook/gui/widgets/e-addressbook-view.etspec evolution-1.4.5/addressbook/gui/widgets/e-addressbook-view.etspec
--- evolution-1.4.5.orig/addressbook/gui/widgets/e-addressbook-view.etspec	2002-10-10 12:03:04.000000000 +1300
+++ evolution-1.4.5/addressbook/gui/widgets/e-addressbook-view.etspec	2003-12-06 15:22:11.000000000 +1300
@@ -37,7 +37,15 @@
   <ETableColumn model_col="35" _title="Nickname"         expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
   <ETableColumn model_col="36" _title="Spouse"           expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
   <ETableColumn model_col="37" _title="Note"             expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
-  <ETableColumn model_col="38" _title="Free-busy URL"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="38" _title="Public Calendar URL"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="39" _title="Free-busy URL"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="40" _title="Server Calendar"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="41" _title="RSS"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="42" _title="AIM"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="43" _title="Jabber"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="44" _title="Yahoo"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="45" _title="MSN"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
+  <ETableColumn model_col="46" _title="ICQ"    expansion="1.0" minimum_width="75" resizable="true" cell="string" compare="string"/>
   <ETableState>
     <column source="0"/>
     <column source="1"/>
diff -urN evolution-1.4.5.orig/art/Makefile.am evolution-1.4.5/art/Makefile.am
--- evolution-1.4.5.orig/art/Makefile.am	2003-06-10 08:07:15.000000000 +1200
+++ evolution-1.4.5/art/Makefile.am	2003-12-06 15:22:11.000000000 +1300
@@ -60,6 +60,7 @@
 	font.png			\
 	forward.xpm			\
 	globe.png           		\
+	im.png           		\
 	goto-16.png			\
 	hide_deleted_messages.xpm	\
 	hide_read_messages.xpm		\
