diff --git a/mail/importers/Makefile.am b/mail/importers/Makefile.am
index 4592de8..6d8ab1e 100644
--- a/mail/importers/Makefile.am
+++ b/mail/importers/Makefile.am
@@ -17,6 +17,7 @@ libevolution_mail_importers_la_SOURCES =	\
 	mail-importer.h				\
 	elm-importer.c				\
 	pine-importer.c				\
+	evolution-filter-importer.c		\
 	evolution-mbox-importer.c
 
 libevolution_mail_importers_la_LDFLAGS = $(NO_UNDEFINED)
diff --git a/mail/importers/evolution-filter-importer.c b/mail/importers/evolution-filter-importer.c
new file mode 100644
index 0000000..f2133f8
--- /dev/null
+++ b/mail/importers/evolution-filter-importer.c
@@ -0,0 +1,757 @@
+/*
+ * 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:
+ *		Vibha Yadav <yvibha@novell.com>
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <errno.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+
+#include <libedataserver/e-data-server-util.h>
+#include <camel/camel.h>
+
+#include "shell/e-shell.h"
+#include "shell/e-shell-window.h"
+#include "shell/e-shell-view.h"
+#include "shell/e-shell-sidebar.h"
+
+#include "mail/em-filter-rule.h"
+#include "mail/em-filter-context.h"
+#include "mail/mail-session.h"
+#include "mail/em-utils.h"
+#include "mail/em-filter-folder-element.h"
+#include "filter/e-filter-input.h"
+#include "filter/e-filter-option.h"
+
+#include "mail-importer.h"
+
+#include "e-util/e-import.h"
+#include "misc/e-web-view-preview.h"
+
+#define NOMAP -1
+
+typedef struct {
+	EImport *import;
+	EImportTarget *target;
+
+	guint idle_id;
+
+	gint state;
+	FILE *file;
+	gulong size;
+	GHashTable *fields_map; /* gint->gint, column index in the csv file to an index in the known fields array */
+
+	EMFilterContext *rc;
+	CamelURL *url;
+	GSList *rules;	
+} FilterImporter;
+
+typedef struct {
+	const gchar *thunderbird_field;
+	const gchar *evo_mapping;
+	const gchar *evo_option;
+}rule_cond;
+
+typedef struct {
+	const gchar *thunderbird_field;
+	const gchar *evo_mapping;
+	const gchar *evo_option;
+}rule_actions;
+
+typedef struct {
+	const gchar *rule_attribute;
+#define FLAG_VERSION  	   0x01
+#define FLAG_LOGGING  	   0x02
+#define FLAG_NAME	   0x04
+#define FLAG_ENABLED       0x08
+#define FLAG_TYPE          0x10
+#define FLAG_ACTION	   0x20
+#define FLAG_ACTIONVALUE   0x40
+#define FLAG_CONDITION     0x80
+#define FLAG_INVALID       0xff
+	gint flags;
+}import_filter_fields;
+
+static import_filter_fields rule_fields[] = {
+	{"version", FLAG_VERSION},
+	{"logging", FLAG_LOGGING},
+	{"name", FLAG_NAME},
+	{"enabled", FLAG_ENABLED},
+	{"type", FLAG_TYPE},
+	{"action", FLAG_ACTION},
+	{"actionValue", FLAG_ACTIONVALUE},
+	{"condition", FLAG_CONDITION},
+};
+
+static rule_actions action_fields[] = {
+	{"Move to Folder","move-to-folder"},
+	{"Copy to Folder", "copy-to-folder"},
+	{"Mark Read", "set-status", "Seen"},
+	{"Delete from Pop3 server", "delete"},
+	{"Delete", "delete"},
+	{"Forward","forward"},
+	{"AddTag","label"},
+	{"Mark flagged","set-status","Flagged"},
+	{"Change priority","score"},
+	{"Fetch body from Pop3Server","score"},
+	{"JunkScore","set-status","Junk"},
+	{"Stop execution","stop"}
+};
+
+static rule_cond condition_fields[] = {
+	{"from","sender","sender"},
+	{"to","to", "recipient"},
+	{"cc","cc", "recipient"},
+	{"status","status", "flag"},
+	{"all addresses","senderto", "recipient"},
+	{"subject","subject", "subject"},
+	{"priority","score","versus"},
+	{"date", "send-date","versus"},
+	{"tag","label", "versus"},
+	{"to or cc","to", "recipient"},
+	{"age in days","recv-date"},
+	{"size","size","versus"},
+	{"body","body","word"},
+};
+
+static GtkWidget *
+filter_getwidget(EImport *ei, EImportTarget *target, EImportImporter *im)
+{
+	GtkWidget *vbox, *selector;
+
+	vbox = gtk_vbox_new (FALSE, FALSE);
+	selector = gtk_label_new ("Please select Forward to import the Filter Rules");
+
+	gtk_box_pack_start (GTK_BOX (vbox), selector, FALSE, TRUE, 6);
+
+	gtk_widget_show_all (vbox);
+
+	return vbox;
+
+}
+
+static const gchar *supported_extensions[3] = {
+	".dat", ".txt", NULL
+};
+
+static gboolean
+filter_supported(EImport *ei, EImportTarget *target, EImportImporter *im)
+{
+	gchar *ext;
+	gint i;
+	EImportTargetURI *s;
+
+	if (target->type != E_IMPORT_TARGET_URI)
+		return FALSE;
+
+	s = (EImportTargetURI *)target;
+	if (s->uri_src == NULL)
+		return TRUE;
+
+	if (strncmp(s->uri_src, "file:///", 8) != 0)
+		return FALSE;
+
+	ext = strrchr(s->uri_src, '.');
+	if (ext == NULL)
+		return FALSE;
+
+	for (i = 0; supported_extensions[i] != NULL; i++) {
+		if (g_ascii_strcasecmp(supported_extensions[i], ext) == 0) {
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+static GString *
+parseNextValue (const gchar **pptr)
+{
+	GString *value;
+	const gchar *ptr = *pptr;
+
+	g_return_val_if_fail (pptr != NULL, NULL);
+	g_return_val_if_fail (*pptr != NULL, NULL);
+	
+	if (!*ptr || *ptr == '\n')
+		return NULL;
+
+	value = g_string_new ("");
+
+	while (1) {
+		if (*ptr == '\n' || *ptr == '=')
+			break;
+		if (*ptr != '"') {
+			g_string_append_unichar (value, g_utf8_get_char (ptr));
+		} else {
+			ptr = g_utf8_next_char (ptr);
+			while (*ptr && *ptr != '"') {
+				g_string_append_unichar (value, g_utf8_get_char (ptr));
+				ptr = g_utf8_next_char (ptr);
+			}
+
+			if (!*ptr)
+				break;
+		}
+
+		ptr = g_utf8_next_char (ptr);
+	}
+
+	if (*ptr != 0 && (*ptr != '\n' || *ptr != '='))
+		ptr = g_utf8_next_char (ptr);
+
+	*pptr = ptr;
+
+	return value;
+}
+
+static GString *
+parseConditionValue (const gchar **pptr)
+{
+	GString *value;
+	const gchar *ptr = *pptr;
+
+	g_return_val_if_fail (pptr != NULL, NULL);
+	g_return_val_if_fail (*pptr != NULL, NULL);
+	
+	if (!*ptr || *ptr == '\n')
+		return NULL;
+
+	value = g_string_new ("");
+
+	while (*ptr != NULL) {
+		if (*ptr == '\n' || *ptr == '(' || *ptr == ',' ||  *ptr == ')')
+			break;
+		if (*ptr != '"') {
+			g_string_append_unichar (value, g_utf8_get_char (ptr));
+		} else {
+			ptr = g_utf8_next_char (ptr);
+			while (*ptr && *ptr != '"') {
+				g_string_append_unichar (value, g_utf8_get_char (ptr));
+				ptr = g_utf8_next_char (ptr);
+			}
+
+			if (!*ptr)
+				break;
+		}
+
+		ptr = g_utf8_next_char (ptr);
+	}
+
+	if (*ptr != 0 && (*ptr != '\n' || *ptr != '='))
+		ptr = g_utf8_next_char (ptr);
+
+	*pptr = ptr;
+
+	return value;
+}
+
+static GHashTable *
+map_fields (const gchar *header_line, EMFilterContext *pimporter)
+{
+	import_filter_fields *fields_array = NULL;
+	gint n_fields = -1, idx, i = 0;
+	GString *value;
+	GHashTable *fmap;
+	const gchar *pptr = header_line;
+	gboolean any_found = FALSE;
+
+	fields_array = rule_fields;
+	n_fields = G_N_ELEMENTS (rule_fields);
+
+	g_return_val_if_fail (fields_array != NULL, NULL);
+	g_return_val_if_fail (n_fields > 0, NULL);
+
+	fmap = g_hash_table_new (g_direct_hash, g_direct_equal);
+	idx = 0;
+	g_print ("\n ... %s ...\n",header_line);
+	value = parseNextValue (&pptr);
+	if(value != NULL) {
+		for (i = 0; i < n_fields; i++) {
+			if (g_ascii_strcasecmp (fields_array[i].rule_attribute, value->str) == 0) {
+				g_hash_table_insert (fmap, GINT_TO_POINTER (idx), GINT_TO_POINTER (i + 1));
+				any_found = TRUE;
+				break;
+			}
+		}
+
+		if (i >= n_fields)
+			g_hash_table_insert (fmap, GINT_TO_POINTER (idx), GINT_TO_POINTER (-1));
+
+		g_string_free (value, TRUE);
+		idx++;
+	}
+
+	if (!any_found) {
+		/* column names not in English? */
+		g_hash_table_destroy (fmap);
+		fmap = NULL;
+	} else {
+		/* also add last index, to be always skipped */
+		g_hash_table_insert (fmap, GINT_TO_POINTER (idx), GINT_TO_POINTER (-1));
+	}
+
+	return fmap;
+}
+
+static gchar *
+flag_options(gchar *option)
+{
+	if(g_strcmp0(option,"read")==0)
+		return "Seen";
+	else if(g_strcmp0(option,"flagged")==0)
+		return "Flagged";
+	else 
+		return "Flagged";
+}
+
+static gboolean
+string_function(EFilterInput *element, gchar *buf)
+{
+	if(g_strcmp0(element->type,"string")==0 || g_strcmp0(element->type,"address") == 0)
+	{
+		e_filter_input_set_value(element,buf);
+		return FALSE;
+	}
+	else
+		return TRUE;
+}
+
+static gboolean
+parseLine (FilterImporter *importer, EFilterRule *rule, gchar *buf, EFilterPart *new) {
+
+	const gchar *pptr = buf, *field_text, *cptr, *uri;
+	gchar *do_free = NULL;
+	gint n_fields = -1, found =0;
+	gboolean skip_rule =FALSE, rule_done = FALSE;
+	GString *value, *condValue;
+	gint idx, ii = 0;
+	gint flags = 0;
+	GList *link,*l, *el;
+	rule_actions *actions_array = NULL;
+	rule_cond *cond_array = NULL;
+	EFilterElement *element = NULL;
+        EAccount *account;
+	CamelURL *url;
+	GtkWidget *dialog;
+	gint i = 0;
+
+	if (!g_utf8_validate (pptr, -1, NULL)) {
+		do_free = g_convert (pptr, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
+		pptr = do_free;
+	}
+
+	idx = ii;
+	value = parseNextValue (&pptr);
+	if( value != NULL) {
+		flags = FLAG_INVALID;
+		field_text = NULL;
+
+		if (importer->fields_map) {
+			gpointer found = g_hash_table_lookup (importer->fields_map, GINT_TO_POINTER (idx));
+
+			if (!found) {
+				g_warning ("%s: No map for index %d, skipping it", G_STRFUNC, idx);
+				idx = -1;
+			} else {
+				idx = GPOINTER_TO_INT (found) - 1;
+			}
+		}		
+
+		if (idx >= 0 && idx < G_N_ELEMENTS (rule_fields)) {
+			flags = rule_fields[idx].flags;
+			field_text = rule_fields[idx].rule_attribute;
+		}
+
+
+		if (*value->str) {
+			value = parseNextValue (&pptr);
+
+			switch (flags) {
+				default:
+					break;	
+				case FLAG_NAME:
+					g_print("Setting Rule Name \n");
+					e_filter_rule_set_name(rule,value->str);
+					break;
+				case FLAG_ENABLED:
+					g_print("Setting enabled flag \n");
+					rule->enabled = g_ascii_strcasecmp( value->str, "yes")? FALSE : TRUE;
+					break;
+				case FLAG_TYPE:
+					g_print("Setting flag type\n");
+					break;
+				case FLAG_ACTION:
+					g_print("Setting action \n");
+					actions_array= action_fields;
+					n_fields = G_N_ELEMENTS (action_fields);
+					for (i = 0; i < n_fields; i++) {
+						if (g_ascii_strcasecmp (actions_array[i].thunderbird_field, value->str) == 0) {
+							break;
+						}
+					}
+
+					if (i >= n_fields)
+					{
+						g_print("Please add code") ;
+					}
+					else
+					{
+						new = em_filter_context_create_action((EMFilterContext *)importer->rc,actions_array[i].evo_mapping);
+						element = e_filter_part_find_element(new, "flag");
+						if(element != NULL)
+						        e_filter_option_set_current((EFilterOption *)element, actions_array[i].evo_option);
+					}
+					if(new!=NULL)
+						em_filter_rule_add_action((EMFilterRule *)rule, new);
+					break;
+				case FLAG_ACTIONVALUE:
+					g_print("Setting action value \n");
+					l = EM_FILTER_RULE(rule)->actions;
+					if(l!=NULL)
+					{
+	                			while (l->next) {
+				                        EFilterPart *action = l->data;
+				                        el = action->elements;
+                        				while (el) {
+								el = el->next;
+							}
+							l = l->next;
+						}
+						new = l->data;
+					}
+					if (new) {
+						for (link = new->elements; link != NULL; link = g_list_next (link)) {
+							element = link->data;
+							if(g_strcmp0(element->name,"folder")==0){
+								url = camel_url_new (value->str, NULL);
+
+								if(g_strcmp0(g_utf8_strchr(url->host,-1,'.'),".googlemail.com") == 0)
+								{
+									gchar *username;
+									username = g_utf8_strchr(url->user,-1,'@');
+									*username = NULL;
+									value->str = g_strconcat(url->protocol,"://",url->user,"@",url->protocol,
+											".gmail.com",url->path,NULL);
+									g_print("\n %s .. %s\n",value->str,url->protocol);
+								}
+
+								if ((account = mail_config_get_account_by_source_url(value->str)) == NULL)
+								{
+									g_print(" %s not found %s for %s: error message n later remove code else condition ",value->str, url->user, url->host);
+									dialog = gtk_message_dialog_new (NULL , GTK_DIALOG_DESTROY_WITH_PARENT, 
+											GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, 
+											("Can't map the Rule: %s for the account %s for %s . As it is not created. Do you wish to continue adding up the Rule"),rule->name, url->host, url->user );
+									if(gtk_dialog_run((GtkDialog *)dialog) != GTK_RESPONSE_OK)
+										skip_rule = TRUE;
+									else
+										importer->url = url;
+									gtk_widget_destroy(dialog);
+								}
+								if(skip_rule)
+									em_filter_rule_remove_action((EMFilterRule *)rule, new);
+								else{
+								uri = em_uri_from_camel(value->str);
+								g_print("\n%s\n",uri);
+								em_filter_folder_element_set_value((EMFilterFolderElement *) element, uri);
+								}
+							}
+							else
+								e_filter_input_set_value((EFilterInput *)element,value->str);
+						}
+					}
+					break;
+				case FLAG_CONDITION:
+					g_print("Setting conditions \n");
+					cptr= value->str;
+					while(*cptr){
+						condValue = parseConditionValue(&cptr);
+						g_print("\n ... %s \n",condValue->str);
+						if( g_ascii_strcasecmp( condValue->str, "OR"))
+							rule->grouping = E_FILTER_GROUP_ALL;
+						else
+							rule->grouping = E_FILTER_GROUP_ANY;
+						if( g_ascii_strcasecmp( condValue->str, "ALL") != 0)
+						{
+							condValue = parseConditionValue (&cptr);
+							g_print("\n ... %s \n",condValue->str);
+
+							cond_array= condition_fields;
+							n_fields = G_N_ELEMENTS (condition_fields);
+							for (i = 0; i < n_fields; i++) {
+								if (g_ascii_strcasecmp (cond_array[i].thunderbird_field, condValue->str) == 0) {
+									break;
+								}
+							}
+
+							if (i >= n_fields)
+							{
+								g_print("Please add code") ;
+							}
+							else
+								new = e_rule_context_create_part((ERuleContext *)importer->rc, cond_array[i].evo_mapping);
+
+							condValue = parseConditionValue(&cptr);
+							g_print("\n ... %s \n",condValue->str);
+
+							element = e_filter_part_find_element(new, "match-type");
+							if(element!=NULL)
+								e_filter_option_set_current((EFilterOption *)element, condValue->str);
+
+							condValue = parseConditionValue(&cptr);
+							g_print("\n ... %s \n",condValue->str);
+
+							element = e_filter_part_find_element(new, cond_array[i].evo_option);
+							if(element != NULL)
+							{
+								if(string_function((EFilterInput *)element,condValue->str))
+								{
+									condValue->str= flag_options(condValue->str);
+									e_filter_option_set_current((EFilterOption *)element, condValue->str);
+								}
+							}
+							else
+								g_print(" Not found type : %s" ,cond_array[i].evo_option);
+						}
+						else
+							new = e_rule_context_create_part((ERuleContext *)importer->rc, "all");
+						if (new) {
+								new = e_filter_part_clone(new);
+								e_filter_rule_add_part((EFilterRule *)rule, new);
+						}
+					}
+					rule_done = TRUE;
+					break;
+				case FLAG_INVALID:
+					g_print("Invalid Flag\n");
+					break;
+				}
+			//}
+		}
+		ii++;
+		g_string_free(value, TRUE);
+	}
+
+	g_free (do_free);
+
+	return rule_done;
+}
+
+static EFilterRule *
+getNextFilterEntry(FilterImporter *importer, FILE *f) {
+	EFilterRule *rule = NULL;
+	EFilterPart *new =NULL;
+	GString  *line;
+	GString *str;
+	gchar *buf;
+	gchar c;
+
+	rule = e_filter_rule_new(); /*FIX ME*/
+
+	while (1){
+		line = g_string_new("");
+		while (1) {
+			c = fgetc (f);
+			if (c == EOF)
+				return NULL;
+			if (c == '\n') {
+				g_string_append_c (line, c);
+				break;
+			}
+			if (c == '"') {
+				g_string_append_c (line, c);
+				c = fgetc (f);
+				while (!feof (f) && c != '"') {
+					g_string_append_c (line, c);
+					c = fgetc (f);
+				}
+				g_string_append_c (line, c);
+			}
+			else
+				g_string_append_c (line, c);
+		}
+
+		importer->fields_map = map_fields (line->str, importer->rc);
+
+		str = g_string_new("");
+		str = g_string_append (str, line->str);
+
+		g_string_free (line, TRUE);
+
+		if (strlen(str->str) == 0) {
+			g_string_free(str, TRUE);
+			return NULL;
+		}
+
+
+		buf = str->str;
+
+
+		if (parseLine (importer, rule, buf, new)) {
+			break;
+		}
+
+		g_string_free(str, TRUE);
+	}
+	e_rule_context_add_rule((ERuleContext *)importer->rc,rule);
+
+	return rule;
+}
+
+/*Import Code from csv Importer to map filelds and parse line and entries*/
+
+static void
+filter_import_done(gpointer data)
+{
+	FilterImporter *importer = data;
+
+	e_import_complete(importer->import, importer->target);
+	g_free(importer);
+}
+
+static gboolean
+import_filter_rules(gpointer d) {
+        FilterImporter *importer = d;
+	GtkWidget *dialog = NULL;
+	const gchar *data_dir;
+	gchar *user, *system;
+	EFilterRule *rule;
+
+	importer->url = NULL;
+
+	data_dir = mail_session_get_data_dir ();
+	user = g_build_filename (data_dir, "filters.xml", NULL);
+	system = g_build_filename (EVOLUTION_PRIVDATADIR, "filtertypes.xml", NULL);
+
+	importer->rc = em_filter_context_new ();
+	e_rule_context_load ((ERuleContext *) importer->rc, system, user);
+
+        while ((rule = (EFilterRule * )getNextFilterEntry(importer, importer->file))) {
+		g_print("added rule ... %s\n", rule->name);
+		importer->rules = g_slist_prepend(importer->rules, rule);
+        }
+        if (rule == NULL) {
+                importer->state = 1;
+        }
+        if (importer->state == 1) {
+		if(importer->url)
+			dialog = gtk_message_dialog_new (NULL , GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, _("Please check. Some of filter rule may not work because we are not able to map them proper to account"));
+		if(!(importer->url) || gtk_dialog_run((GtkDialog *)dialog) == GTK_RESPONSE_OK)
+			e_rule_context_save ((ERuleContext *)importer->rc, user);
+		if(dialog)
+			gtk_widget_destroy(dialog);
+                filter_import_done(importer);
+		g_free(user);
+		g_free(system);
+                return FALSE;
+        }
+        else {
+                e_import_status (
+                        importer->import, importer->target, _("Importing..."),
+                        ftell (importer->file) * 100 / importer->size);
+		g_free(user);
+		g_free(system);
+                return TRUE;
+        }
+}
+
+static void
+filter_import(EImport *ei, EImportTarget *target, EImportImporter *im)
+{
+	FilterImporter *importer;
+	gchar *filename;
+	FILE *file;
+	EImportTargetURI *s = (EImportTargetURI *) target;
+
+	filename = g_filename_from_uri (s->uri_src, NULL, NULL);
+	if (filename == NULL) {
+		g_message (G_STRLOC ": Couldn't get filename from URI '%s'", s->uri_src);
+		return;
+	}
+
+	file = g_fopen (filename, "r");
+	g_free (filename);
+	if (file == NULL) {
+		g_message("Can't open .dat file");
+		e_import_complete(ei, target);
+		return;
+	}
+
+	importer = g_malloc0(sizeof(*importer));
+	g_datalist_set_data(&target->data, "csv-data", importer);
+	importer->import = g_object_ref(ei);
+	importer->target = target;
+	importer->file = file;
+	importer->fields_map = NULL;
+	fseek(file, 0, SEEK_END);
+	importer->size = ftell(file);
+	fseek(file, 0, SEEK_SET);
+
+	importer->idle_id = g_idle_add (import_filter_rules, importer);
+}
+
+static void
+filter_cancel(EImport *ei, EImportTarget *target, EImportImporter *im)
+{
+	FilterImporter *importer = g_datalist_get_data(&target->data, "filter-data");
+
+	if (importer)
+		importer->state=1;
+}
+
+static GtkWidget *
+filter_get_preview (EImport *ei, EImportTarget *target, EImportImporter *im)
+{
+	GtkWidget *vbox = NULL;
+
+	return vbox;
+}
+
+static EImportImporter evolution_filter_importer = {
+	E_IMPORT_TARGET_URI,
+	0,
+	filter_supported,
+	filter_getwidget,
+	filter_import,
+	filter_cancel,
+	filter_get_preview,
+};
+
+EImportImporter *
+evolution_filter_importer_peek(void)
+{
+	evolution_filter_importer.name = _("Thunderbird Filter (.dat)");
+	evolution_filter_importer.description = _("Importer Thunderbird Filter format");
+
+	return &evolution_filter_importer;
+}
diff --git a/mail/importers/mail-importer.h b/mail/importers/mail-importer.h
index 15de575..6f96505 100644
--- a/mail/importers/mail-importer.h
+++ b/mail/importers/mail-importer.h
@@ -27,6 +27,7 @@
 #include <e-util/e-import.h>
 #include <camel/camel.h>
 
+EImportImporter *evolution_filter_importer_peek(void);
 EImportImporter *mbox_importer_peek(void);
 
 typedef void (*MboxImporterCreatePreviewFunc)(GObject *preview, GtkWidget **preview_widget);
