diff --git a/configure.ac b/configure.ac
index 826ac56..0686a0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1367,7 +1367,7 @@ plugins_base_always="calendar-file calendar-http itip-formatter plugin-manager d
 plugins_base="$plugins_base_always $SA_JUNK_PLUGIN $BF_JUNK_PLUGIN"
 dist_plugins_base="$plugins_base_always calendar-weather sa-junk-plugin bogo-junk-plugin"
 
-plugins_standard_always="bbdb subject-thread save-calendar mail-to-task mailing-list-actions default-mailer prefer-plain mail-notification attachment-reminder backup-restore email-custom-header templates vcard-inline"
+plugins_standard_always="bbdb subject-thread save-calendar mail-to-task mailing-list-actions default-mailer prefer-plain mail-notification evo-aqua attachment-reminder backup-restore email-custom-header templates vcard-inline"
 
 plugins_standard="$plugins_standard_always"
 dist_plugins_standard="$plugins_standard audio-inline image-inline pst-import"
@@ -1716,6 +1716,7 @@ plugins/image-inline/Makefile
 plugins/imap-features/Makefile
 plugins/itip-formatter/Makefile
 plugins/mail-notification/Makefile
+plugins/evo-aqua/Makefile
 plugins/mail-to-task/Makefile
 plugins/mailing-list-actions/Makefile
 plugins/mark-all-read/Makefile
diff --git a/plugins/evo-aqua/Makefile.am b/plugins/evo-aqua/Makefile.am
new file mode 100644
index 0000000..28d8f5a
--- /dev/null
+++ b/plugins/evo-aqua/Makefile.am
@@ -0,0 +1,68 @@
+if OS_WIN32
+NO_UNDEFINED_REQUIRED_LIBS =				\
+	$(top_builddir)/mail/libevolution-mail.la	\
+	$(top_builddir)/e-util/libeutil.la		\
+	$(GNOME_PLATFORM_LIBS)
+endif
+
+@EVO_PLUGIN_RULE@
+
+plugin_DATA = org-gnome-evo-aqua.eplug
+
+plugin_LTLIBRARIES = liborg-gnome-evo-aqua.la
+
+liborg_gnome_evo_aqua_la_CPPFLAGS =	\
+	$(AM_CPPFLAGS)				\
+	-I$(top_srcdir)				\
+	-I$(top_srcdir)/widgets			\
+	$(GNOME_PLATFORM_CFLAGS)		\
+	$(EVOLUTION_MAIL_CFLAGS)
+
+liborg_gnome_evo_aqua_la_SOURCES = evo-aqua.c
+
+liborg_gnome_evo_aqua_la_LDFLAGS = -lspeechd -module -avoid-version $(NO_UNDEFINED)
+
+liborg_gnome_evo_aqua_la_LIBADD = 		\
+	$(top_builddir)/e-util/libeutil.la 		\
+	$(top_builddir)/mail/libevolution-mail.la	\
+	$(top_builddir)/shell/libeshell.la		\
+	$(EVOLUTION_MAIL_LIBS)				\
+	$(GNOME_PLATFORM_LIBS)
+
+schemadir       = $(GCONF_SCHEMA_FILE_DIR)
+schema_in_files = apps-evolution-evo-aqua.schemas.in
+schema_DATA     = $(schema_in_files:.schemas.in=.schemas)
+
+@INTLTOOL_SCHEMAS_RULE@
+
+if OS_WIN32
+install-data-local:
+	if test -z "$(DESTDIR)" ; then							\
+		for p in $(schema_DATA) ; do						\
+			(echo set GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE);	\
+			 echo $(GCONFTOOL) --makefile-install-rule $$p) >_temp.bat;	\
+			cmd /c _temp.bat; 						\
+			rm _temp.bat;							\
+		done									\
+	fi
+else
+install-data-local:
+	if test -z "$(DESTDIR)" ; then							\
+		for p in $(schema_DATA) ; do						\
+			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) 		\
+				$(GCONFTOOL) --makefile-install-rule $$p;		\
+		done									\
+	fi
+endif
+
+BUILT_SOURCES = $(plugin_DATA)
+
+CLEANFILES = $(BUILT_SOURCES)
+
+DISTCLEANFILES = $(schema_DATA)
+
+EXTRA_DIST = 					\
+	org-gnome-evo-aqua.eplug.xml	\
+	$(schema_in_files)
+
+-include $(top_srcdir)/git.mk
diff --git a/plugins/evo-aqua/apps-evolution-evo-aqua.schemas.in b/plugins/evo-aqua/apps-evolution-evo-aqua.schemas.in
new file mode 100644
index 0000000..c63a0d8
--- /dev/null
+++ b/plugins/evo-aqua/apps-evolution-evo-aqua.schemas.in
@@ -0,0 +1,56 @@
+<gconfschemafile>
+  <schemalist>
+    <schema>
+      <key>/schemas/apps/evolution/eplugin/evo-aqua/say_sender</key>
+      <applyto>/apps/evolution/eplugin/evo-aqua/say_sender</applyto>
+      <owner>evolution-mail</owner>
+      <type>bool</type>
+      <default>true</default>
+      <gettext_domain>evolution-2.30</gettext_domain>
+      <locale name="C">
+        <short>Say sender's name.</short>
+        <long>Say the name of the sender when announcing new messages.</long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/evolution/eplugin/evo-aqua/say_subject</key>
+      <applyto>/apps/evolution/eplugin/evo-aqua/say_subject</applyto>
+      <owner>evolution-mail</owner>
+      <type>bool</type>
+      <default>true</default>
+      <gettext_domain>evolution-2.30</gettext_domain>
+      <locale name="C">
+        <short>Say subject.</short>
+        <long>Say the subject of the e-mailwhen announcing new messages.</long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/evolution/eplugin/evo-aqua/voice</key>
+      <applyto>/apps/evolution/eplugin/evo-aqua/voice</applyto>
+      <owner>evolution-mail</owner>
+      <type>string</type>
+      <default>default</default>
+      <gettext_domain>evolution-2.30</gettext_domain>
+      <locale name="C">
+        <short>Set voice.</short>
+        <long>Set which voice to announce new messages in.</long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/evolution/eplugin/evo-aqua/_voice_idx</key>
+      <applyto>/apps/evolution/eplugin/evo-aqua/_voice_idx</applyto>
+      <owner>evolution-mail</owner>
+      <type>int</type>
+      <default>0</default>
+      <gettext_domain>evolution-2.30</gettext_domain>
+      <locale name="C">
+        <short>Remembers index for combo box.</short>
+        <long>Does not directly affect voice selection, just simplifies voice combo box's memory.</long>
+      </locale>
+    </schema>
+  </schemalist>
+</gconfschemafile>
+
diff --git a/plugins/evo-aqua/evo-aqua.c b/plugins/evo-aqua/evo-aqua.c
new file mode 100644
index 0000000..d34a165
--- /dev/null
+++ b/plugins/evo-aqua/evo-aqua.c
@@ -0,0 +1,252 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ *
+ * Authors:
+ *		Richard Schwarting <aquarichy@gmail.com>
+ *
+ * Copyright (C) 2010 Richard Schwarting
+ */
+
+#include <glib.h>
+#include <mail/em-event.h>
+#include <e-util/e-plugin.h>
+#include <libspeechd.h>
+#include <glib/gi18n.h>
+#include <e-util/gconf-bridge.h>
+
+#define GCONF_KEY_ROOT      "/apps/evolution/eplugin/evo-aqua/"
+#define GCONF_KEY_VOICE     GCONF_KEY_ROOT "voice"
+#define GCONF_KEY_VOICE_IDX GCONF_KEY_ROOT "_voice_idx"
+#define GCONF_KEY_SENDER    GCONF_KEY_ROOT "say_sender"
+#define GCONF_KEY_SUBJECT   GCONF_KEY_ROOT "say_subject"
+
+/* TODO: the 5 other plugins I looked at didn't attached
+         there data to the EPlugin; why? */
+static SPDConnection *connection = NULL;
+
+void org_gnome_evo_aqua_new_notify (EPlugin *ep, EMEventTargetFolder *t);
+gint e_plugin_lib_enable (EPlugin *ep, gint enable);
+GtkWidget *e_plugin_lib_get_configure_widget (EPlugin *ep);
+
+static void
+voice_changed_cb (GtkComboBox *voices_combo, gpointer data) {
+	GtkTreeIter iter;
+	gchar *voice;
+	GConfClient *client;
+	GtkTreeModel *model;
+	GError *error = NULL;
+
+	model = gtk_combo_box_get_model (voices_combo);
+	gtk_combo_box_get_active_iter (voices_combo, &iter);
+
+	gtk_tree_model_get (model, &iter, 1, &voice, -1);
+
+	client = gconf_client_get_default ();
+	gconf_client_set_string (client, GCONF_KEY_VOICE, voice, &error);
+	if (error != NULL) {
+		g_warning ("Evo Aqua: Failed to set voice to '%s'.  %s", voice, error->message);
+		g_clear_error (&error);
+	}
+
+	g_free (voice);
+}
+
+static void
+transform_voice (GtkCellLayout *combo, GtkCellRenderer *cell, GtkTreeModel *model,
+		 GtkTreeIter *iter, gpointer data) {
+	gchar *lang = NULL;
+	gchar *voice = NULL;
+	gchar *variant = NULL;
+	gchar *string;
+	GValue val = {0};
+
+	gtk_tree_model_get (model, iter, 0, &lang, 1, &voice, 2, &variant, -1);
+
+	if (g_strcmp0 (variant, "none") != 0)
+		string = g_strdup_printf ("%s - %s (%s)", lang, voice, variant);
+	else
+		string = g_strdup_printf ("%s - %s", lang, voice);
+	g_free (lang);
+	g_free (voice);
+	g_free (variant);
+
+	g_value_init (&val, G_TYPE_STRING);
+	g_value_set_string (&val, string);
+	g_free (string);
+
+	g_object_set_property (G_OBJECT (cell), "text", &val);
+}
+
+void
+org_gnome_evo_aqua_new_notify (EPlugin *ep, EMEventTargetFolder *t)
+{
+	GConfClient *client;
+	gboolean say_sender;
+	gboolean say_subject;
+	gchar *voice = NULL;
+	gchar *sender = NULL;
+	GError *error = NULL;
+	int len;
+	int i;
+
+	client = gconf_client_get_default ();
+
+	/* check config for saying sender's name */
+	say_sender = gconf_client_get_bool (client, GCONF_KEY_SENDER, &error);
+	if (error) {
+		g_warning ("Evo Aqua: Error retrieving GConf value for say_sender: %s", error->message);
+		g_clear_error (&error);
+		say_sender = TRUE;
+	}
+
+	/* check config for saying subject */
+	say_subject = gconf_client_get_bool (client, GCONF_KEY_SUBJECT, &error);
+	if (error) {
+		g_warning ("Evo Aqua: Error retrieving GConf value for say_subject: %s", error->message);
+		g_clear_error (&error);
+		say_subject = TRUE;
+	}
+
+	/* check config for voice to use */
+	voice = gconf_client_get_string (client, GCONF_KEY_VOICE, &error);
+	if (error) {
+		g_warning ("Evo Aqua: Error retrieving GConf value for voice: %s", error->message);
+		g_clear_error (&error);
+
+		if (voice != NULL)
+			g_free (voice);
+		voice = g_strdup ("default");
+	}
+
+	if (connection != NULL) {
+		spd_set_synthesis_voice (connection, voice);
+
+		if ((say_sender || say_subject) && (t->msg_sender != NULL && t->msg_subject != NULL)) {
+			/* strip the e-mail address and only keep the sender if there's a sender name of any notable length */
+			if (say_sender) {
+				len = strlen (t->msg_sender);
+				for (i = 0; i < len; i++) {
+					if (t->msg_sender[i] == '<')
+						break;
+				}
+				if (i == len || i <= 2) {
+					sender = g_strdup (t->msg_sender);
+				} else {
+					sender = g_strndup (t->msg_sender, i);
+				}
+			}
+
+			if (say_sender && say_subject) {
+				/* Translator example: "New mail from: Mary Poppins.  Titled: Subject of importance" */
+				spd_sayf (connection, SPD_MESSAGE, _("New mail from: %s. Titled: %s"),
+					  sender, t->msg_subject);
+			} else if (say_sender) {
+				spd_sayf (connection, SPD_MESSAGE, _("New mail from: %s."),
+					  sender);
+			} else if (say_subject) {
+				spd_sayf (connection, SPD_MESSAGE, _("New mail titled: %s"),
+					  t->msg_subject);
+			}
+
+			if (sender != NULL) {
+				g_free (sender);
+			}
+		} else if (t->new == 1) {
+			spd_say (connection, SPD_MESSAGE, _("You have a new message"));
+		} else {
+			/* Translator example: "You have 4 new e-mails.", where the number should be 2 or greater */
+			spd_sayf (connection, SPD_MESSAGE, _("You have %u new e-mails."), t->new);
+		}
+	}
+
+	g_free (voice);
+}
+
+gint
+e_plugin_lib_enable (EPlugin *ep, gint enable)
+{
+	if (enable == 1) {
+		connection = spd_open ("Evolution", "main", NULL, SPD_MODE_THREADED);
+		if (connection == NULL) {
+			g_warning ("Evo Aqua: Could not connect to Speech Dispatcher daemon.  Disabling plugin.");
+			e_plugin_enable (ep, 0);
+		}
+	} else if (connection != NULL) {
+		spd_close (connection);
+		connection = NULL;
+	}
+
+	return 0;
+}
+
+GtkWidget *
+e_plugin_lib_get_configure_widget (EPlugin *ep)
+{
+	GConfBridge *bridge;
+	GtkWidget *container;
+	GtkWidget *say_sender;
+	GtkWidget *say_subject;
+	GtkWidget *voices_combo;
+
+	int i;
+	SPDVoice **synth_voices;
+	GtkListStore *voice_store;
+	GtkTreeIter iter;
+	GtkCellRenderer *cell;
+
+	bridge = gconf_bridge_get ();
+	container = gtk_vbox_new (FALSE, 12);
+
+	/* Say Sender option */
+	say_sender = gtk_check_button_new_with_mnemonic (_("Say s_ender."));
+	gtk_box_pack_start (GTK_BOX (container), say_sender, FALSE, FALSE, 0);
+	gconf_bridge_bind_property (bridge, GCONF_KEY_SENDER, G_OBJECT (say_sender), "active");
+
+	/* Say Subject option */
+	say_subject = gtk_check_button_new_with_mnemonic (_("Say s_ubject."));
+	gtk_box_pack_start (GTK_BOX (container), say_subject, FALSE, FALSE, 0);
+	gconf_bridge_bind_property (bridge, GCONF_KEY_SENDER, G_OBJECT (say_subject), "active");
+
+	/* Voice option */
+	if (connection != NULL) {
+		/* We will only show the widget if we can get the voices. */
+		synth_voices = spd_list_synthesis_voices (connection);
+		voice_store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+		voices_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (voice_store));
+		cell = gtk_cell_renderer_text_new ();
+		gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (voices_combo), cell, FALSE);
+		gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (voices_combo),
+						    cell, transform_voice, NULL, NULL);
+
+		for (i = 0; synth_voices != NULL && synth_voices[i] != NULL; i++) {
+			gtk_list_store_append (voice_store, &iter);
+			gtk_list_store_set (voice_store, &iter,
+					    0, synth_voices[i]->language,
+					    1, synth_voices[i]->name,
+					    2, synth_voices[i]->variant,
+					    -1);
+		}
+		gtk_box_pack_start (GTK_BOX (container), voices_combo, FALSE, FALSE, 0);
+		g_signal_connect (G_OBJECT (voices_combo), "changed", G_CALLBACK (voice_changed_cb), NULL);
+		gconf_bridge_bind_property (bridge, GCONF_KEY_VOICE_IDX, G_OBJECT (voices_combo), "active");
+	}
+
+	/* Show options */
+	gtk_widget_show_all (container);
+
+	return container;
+}
+
diff --git a/plugins/evo-aqua/org-gnome-evo-aqua.eplug.xml b/plugins/evo-aqua/org-gnome-evo-aqua.eplug.xml
new file mode 100644
index 0000000..089a02c
--- /dev/null
+++ b/plugins/evo-aqua/org-gnome-evo-aqua.eplug.xml
@@ -0,0 +1,19 @@
+<e-plugin-list>
+  <e-plugin
+     id="org.gnome.evolution.evo_aqua"
+     type="shlib"
+     _name="Evo Aqua"
+     location="@PLUGINDIR@/liborg-gnome-evo-aqua@SOEXT@">
+
+    <_description>Announces new messages by author and subject.</_description>
+    <author name="Richard Schwarting" email="aquarichy@gmail.com"/>
+
+    <hook class="org.gnome.evolution.mail.events:1.0">
+      <event target="folder"
+	     id="folder.changed"
+	     enable="newmail"
+	     handle="org_gnome_evo_aqua_new_notify"
+	     />
+    </hook>
+  </e-plugin>
+</e-plugin-list>
