diff --git a/.gitignore b/.gitignore
index abede828db08dcfdab3ebba6ab6dbf18b160336d..2cda42f0781223809a806411763ff8169f0000de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,7 @@ compile
 autom4te*
 INSTALL
 xfce4-dict-*.tar.bz2
+lib/resources.c
+lib/resources.h
+lib/dbus.c
+lib/dbus.h
diff --git a/Makefile.am b/Makefile.am
index 01cc3f2b28db4a5e4ad0f67b05f3c90dc8a34614..669024afd75a868a6c1402928bc7a80a39e01d0a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,7 +19,7 @@ EXTRA_DIST =													\
 	intltool-extract.in											\
 	intltool-merge.in											\
 	intltool-update.in											\
-	xfce4-dict.svg
+	pixmaps/xfce4-dict.svg
 
 DISTCLEANFILES =												\
 	intltool-extract											\
@@ -27,7 +27,7 @@ DISTCLEANFILES =												\
 	intltool-update
 
 hicolor48dir = $(datadir)/icons/hicolor/scalable/apps
-hicolor48_DATA = xfce4-dict.svg
+hicolor48_DATA = pixmaps/xfce4-dict.svg
 
 gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
 
diff --git a/configure.ac.in b/configure.ac.in
index 7061c2d14825b5e5f8a23c124075ddb091b967cb..e8fef795096a74dcb6f24dd8920e5a5f89adc2d7 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -11,7 +11,7 @@ m4_define([xfce4_dict_version], [xfce4_dict_version_major().xfce4_dict_version_m
 dnl ***************************
 dnl *** Initialize autoconf ***
 dnl ***************************
-AC_COPYRIGHT([Copyright (c) 2006-2015 Xfce Development Team. All rights reserved.])
+AC_COPYRIGHT([Copyright (c) 2006-2016 Xfce Development Team. All rights reserved.])
 AC_INIT([xfce4-dict], [xfce4_dict_version], [http://bugzilla.xfce.org/], [xfce4-dict])
 AC_PREREQ([2.60])
 AC_CONFIG_MACRO_DIR([m4])
@@ -54,12 +54,17 @@ dnl ***********************************
 dnl *** Check for required packages ***
 dnl ***********************************
 XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.24.0])
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.20.0])
-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.10.0])
+XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0])
+XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.12.0])
 XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0])
-XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.10.0])
+XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-2.0], [4.10.0])
 XDT_CHECK_PACKAGE([X11], [x11])
 
+dnl ***********************************
+dnl *** Check for gdbus-codegen     ***
+dnl ***********************************
+AC_CHECK_PROG([GDBUS_CODEGEN],[gdbus-codegen],[gdbus-codegen])
+
 dnl ***********************************
 dnl *** Check for debugging support ***
 dnl ***********************************
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 874f38641d540047007ff5434f2f57a941fe9998..44f9c4ec2000ea9b9821cacdb37fb3dc0cfd7480 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -2,6 +2,8 @@ noinst_LTLIBRARIES = 							\
 	libdict.la
 
 libdict_la_SOURCES =							\
+	dbus.c										\
+	dbus.h										\
 	common.c									\
 	common.h									\
 	dictd.c										\
@@ -11,6 +13,8 @@ libdict_la_SOURCES =							\
 	libdict.h									\
 	prefs.c										\
 	prefs.h										\
+	resources.c									\
+	resources.h									\
 	speedreader.c								\
 	speedreader.h								\
 	spell.c										\
@@ -30,19 +34,19 @@ libdict_la_LIBADD =								\
 	$(LIBXFCE4UI_LIBS)							\
 	@GTHREAD_LIBS@
 
+DISTCLEANFILES =								\
+	resources.c										\
+	resources.h										\
+	dbus.c												\
+	dbus.h
 
-noinst_DATA = 									\
-	inline-icon.h
+gui.c: resources.c dbus.c
 
-EXTRA_DIST = 									\
-	inline-icon.h
+resources.c: resources.h
+	glib-compile-resources resources.xml --sourcedir=../pixmaps --generate-source --c-name dict
 
-if MAINTAINER_MODE
-# the target isn't named as the header file on
-# purpose to avoid automatic creation of the file
-# while building
-inline-icon: $(top_srcdir)/xfce4-dict.svg
-	gdk-pixbuf-csource --raw					\
-	--name=dict_icon_data						\
-	$(top_srcdir)/xfce4-dict.svg > $(srcdir)/inline-icon.h
-endif
+resources.h:
+	glib-compile-resources resources.xml --sourcedir=../pixmaps --generate-header --c-name dict
+
+dbus.c:
+	gdbus-codegen --interface-prefix org.xfce --generate-c-code dbus dbus.xml
diff --git a/lib/common.c b/lib/common.c
index e80b05124aa74cd4831b1e45d15f529933ba101d..cfad1f0189bc310f124fa2531cec1cc14c6c925d 100644
--- a/lib/common.c
+++ b/lib/common.c
@@ -38,6 +38,7 @@
 #include "spell.h"
 #include "dictd.h"
 #include "gui.h"
+#include "dbus.h"
 
 
 
@@ -144,8 +145,7 @@ static gboolean open_browser(DictData *dd, const gchar *uri)
 	argv[1] = (gchar*) uri;
 	argv[2] = NULL;
 
-	result = gdk_spawn_on_screen(gtk_widget_get_screen(dd->window), NULL, argv, NULL,
-				G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
+	result = g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
 
 	g_free(browser_path);
 
@@ -218,7 +218,8 @@ void dict_search_word(DictData *dd, const gchar *word)
 	/* sanity checks */
 	if (! NZV(word))
 	{
-		dict_gui_status_add(dd, _("Invalid input"));
+		/* just show the main window */
+		dict_gui_show_main_window(dd);
 		return;
 	}
 
@@ -233,16 +234,18 @@ void dict_search_word(DictData *dd, const gchar *word)
 			dict_gui_set_panel_entry_text(dd, "");
 			return;
 		}
-		gtk_entry_set_text(GTK_ENTRY(dd->main_entry), dd->searched_word);
-		dict_gui_set_panel_entry_text(dd, dd->searched_word);
 	}
 	else
 	{
 		dd->searched_word = g_strdup(word);
 	}
+
+	/* Set the main entry text */
+	gtk_entry_set_text(GTK_ENTRY(dd->main_entry), dd->searched_word);
+
 	/* remove leading and trailing spaces */
 	g_strstrip(dd->searched_word);
-	gtk_combo_box_prepend_text(GTK_COMBO_BOX(dd->main_combo), dd->searched_word);
+	gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(dd->main_combo), dd->searched_word);
 
 	dict_gui_clear_text_buffer(dd);
 
@@ -303,32 +306,6 @@ static void parse_geometry(DictData *dd, const gchar *str)
 }
 
 
-static gdouble scale_round(gdouble val, gdouble factor)
-{
-	/*val = floor(val * factor + 0.5);*/
-	val = floor(val);
-	val = MAX(val, 0);
-	val = MIN(val, factor);
-
-	return val;
-}
-
-
-static gchar *get_hex_from_color(GdkColor *color)
-{
-	gchar *buffer = g_malloc0(9);
-
-	g_return_val_if_fail(color != NULL, NULL);
-
-	g_snprintf(buffer, 8, "#%02X%02X%02X",
-	      (guint) (scale_round(color->red / 256, 255)),
-	      (guint) (scale_round(color->green / 256, 255)),
-	      (guint) (scale_round(color->blue / 256, 255)));
-
-	return buffer;
-}
-
-
 static gchar *get_spell_program(void)
 {
 	gchar *path;
@@ -450,14 +427,14 @@ void dict_read_rc_file(DictData *dd)
 	else
 		dd->spell_dictionary = spell_dictionary_default;
 
-	dd->color_link = g_new0(GdkColor, 1);
-	gdk_color_parse(link_color_str, dd->color_link);
-	dd->color_phonetic = g_new0(GdkColor, 1);
-	gdk_color_parse(phon_color_str, dd->color_phonetic);
-	dd->color_incorrect = g_new0(GdkColor, 1);
-	gdk_color_parse(error_color_str, dd->color_incorrect);
-	dd->color_correct = g_new0(GdkColor, 1);
-	gdk_color_parse(success_color_str, dd->color_correct);
+	dd->color_link = g_new0(GdkRGBA, 1);
+	gdk_rgba_parse(dd->color_link, link_color_str);
+	dd->color_phonetic = g_new0(GdkRGBA, 1);
+	gdk_rgba_parse(dd->color_phonetic, phon_color_str);
+	dd->color_incorrect = g_new0(GdkRGBA, 1);
+	gdk_rgba_parse(dd->color_incorrect, error_color_str);
+	dd->color_correct = g_new0(GdkRGBA, 1);
+	gdk_rgba_parse(dd->color_correct, success_color_str);
 
 	dd->speedreader_mark_paragraphs = mark_paragraphs;
 	dd->speedreader_wpm = wpm;
@@ -489,10 +466,10 @@ void dict_write_rc_file(DictData *dd)
 		xfce_rc_write_entry(rc, "spell_bin", dd->spell_bin);
 		xfce_rc_write_entry(rc, "spell_dictionary", dd->spell_dictionary);
 
-		link_color_str = get_hex_from_color(dd->color_link);
-		phon_color_str = get_hex_from_color(dd->color_phonetic);
-		error_color_str = get_hex_from_color(dd->color_incorrect);
-		success_color_str = get_hex_from_color(dd->color_correct);
+		link_color_str = gdk_rgba_to_string(dd->color_link);
+		phon_color_str = gdk_rgba_to_string(dd->color_phonetic);
+		error_color_str = gdk_rgba_to_string(dd->color_incorrect);
+		success_color_str = gdk_rgba_to_string(dd->color_correct);
 		xfce_rc_write_entry(rc, "link_color", link_color_str);
 		xfce_rc_write_entry(rc, "phonetic_color", phon_color_str);
 		xfce_rc_write_entry(rc, "error_color", error_color_str);
@@ -545,27 +522,13 @@ void dict_free_data(DictData *dd)
 }
 
 
-void dict_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y,
+void dict_drag_data_received(GtkWidget *widget, GdkDragContext *context, gint x, gint y,
 							 GtkSelectionData *data, guint info, guint ltime, DictData *dd)
 {
-	if ((data != NULL) && (data->length >= 0) && (data->format == 8))
+	if ((data != NULL) && (gtk_selection_data_get_length(data) >= 0) && (gtk_selection_data_get_format(data) == 8))
 	{
-/*
-		GtkWidget *source = gtk_drag_get_source_widget(drag_context);
-
-		if (widget == dd->main_entry &&
-			source != NULL &&
-			gtk_widget_get_toplevel(source) == dd->window)
-		{
-			gtk_entry_set_text(GTK_ENTRY(dd->main_entry), "");
-		}
-		else
-*/		{
-			dict_search_word(dd, (const gchar*) data->data);
-		}
-
-		drag_context->action = GDK_ACTION_COPY;
-		gtk_drag_finish(drag_context, TRUE, FALSE, ltime);
+		dict_search_word(dd, (const gchar*) gtk_selection_data_get_data (data));
+		gtk_drag_finish(context, TRUE, FALSE, ltime);
 	}
 }
 
@@ -632,3 +595,35 @@ gchar *dict_get_clipboard_contents(void)
 
 	return text;
 }
+
+
+static gboolean on_handle_search(Dict *skeleton, GDBusMethodInvocation *invocation,
+	const gchar *arg_phrase, gpointer user_data)
+{
+	dict_search_word((DictData *) user_data, arg_phrase);
+	dict_complete_search(skeleton, invocation);
+	return TRUE;
+}
+
+
+static void on_name_acquired(GDBusConnection *connection, const gchar *name,
+	gpointer user_data)
+{
+	Dict *skeleton = dict_skeleton_new();
+	g_signal_connect (skeleton, "handle-search", G_CALLBACK(on_handle_search), user_data);
+	g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (skeleton),
+		connection, "/org/xfce/Dict", NULL);
+}
+
+
+void dict_acquire_dbus_name(DictData *dd)
+{
+	g_bus_own_name(G_BUS_TYPE_SESSION,
+      "org.xfce.Dict",
+      G_BUS_NAME_OWNER_FLAGS_NONE,
+      NULL,
+      on_name_acquired,
+      NULL,
+      dd,
+      NULL);
+}
diff --git a/lib/common.h b/lib/common.h
index 2525b6679b468802f09f8d2b9bf2219dc36e95b3..ab57d514c705ea2569a0ceae6bb018675d41a4f6 100644
--- a/lib/common.h
+++ b/lib/common.h
@@ -110,10 +110,10 @@ typedef struct
 	GtkTextMark *mark_click;
 	GdkPixbuf *icon;
 
-	GdkColor *color_link;
-	GdkColor *color_phonetic;
-	GdkColor *color_correct;
-	GdkColor *color_incorrect;
+	GdkRGBA *color_link;
+	GdkRGBA *color_phonetic;
+	GdkRGBA *color_correct;
+	GdkRGBA *color_incorrect;
 
 	/* speed reader */
 	gint speedreader_wpm;
@@ -132,9 +132,10 @@ void dict_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gi
 							 GtkSelectionData *data, guint info, guint ltime, DictData *dd);
 
 DictData *dict_create_dictdata(void);
-gboolean dict_start_web_query(DictData *dd, const gchar *word);
-gchar *dict_get_web_query_uri(DictData *dd, const gchar *word);
-gchar *dict_get_clipboard_contents(void);
+gboolean  dict_start_web_query(DictData *dd, const gchar *word);
+gchar    *dict_get_web_query_uri(DictData *dd, const gchar *word);
+gchar    *dict_get_clipboard_contents(void);
+void      dict_acquire_dbus_name(DictData *dd);
 
 void dict_show_msgbox(DictData *dd, gint type, const gchar *text, ...) G_GNUC_PRINTF (3, 4);
 
diff --git a/lib/dbus.xml b/lib/dbus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c72d0d2382870ffeaa3adc64b0d3a39de0e0e14
--- /dev/null
+++ b/lib/dbus.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+  <interface name="org.xfce.Dict">
+    <method name="Search">
+      <arg name="phrase" type="s" direction="in"/>
+    </method>
+  </interface>
+</node>
diff --git a/lib/dictd.c b/lib/dictd.c
index f2e9781310480897458461e0307902f53a402084..7664e0ca7f8b050a6fd43e821db0b375bfc80edc 100644
--- a/lib/dictd.c
+++ b/lib/dictd.c
@@ -650,7 +650,7 @@ static void signal_cb(gint sig)
 }
 
 
-static void dictd_init()
+static void dictd_init(void)
 {
 #ifdef SIGALRM
 	static gboolean initialized = FALSE;
@@ -679,7 +679,7 @@ void dict_dictd_start_query(DictData *dd, const gchar *word)
 		dictd_init();
 
 		/* start the thread to query the server */
-		g_thread_create((GThreadFunc) ask_server, dd, FALSE, NULL);
+		g_thread_new(NULL, (GThreadFunc) ask_server, dd);
 	}
 }
 
@@ -750,25 +750,26 @@ void dict_dictd_get_information(GtkWidget *button, DictData *dd)
 	dialog = gtk_dialog_new_with_buttons(text,
 				GTK_WINDOW(dd->window),
 				GTK_DIALOG_DESTROY_WITH_PARENT,
-				GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
-	vbox = gtk_vbox_new(FALSE, 12);
+				"gtk-close", GTK_RESPONSE_CLOSE, NULL);
+	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
-	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox);
+	gtk_container_add(GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), vbox);
 	gtk_box_set_spacing(GTK_BOX(vbox), 6);
 	g_free(text);
 
-	gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 400);
+	gtk_window_set_default_size(GTK_WINDOW(dialog), 550, 400);
 	gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
 
 	text = g_strconcat("<tt>", buffer, "</tt>", NULL);
 	label = gtk_label_new(text);
 	gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+	gtk_widget_set_vexpand(label, TRUE);
 	g_free(text);
 
 	swin = gtk_scrolled_window_new(NULL, NULL);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),
 		GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(swin), label);
+	gtk_container_add(GTK_CONTAINER(swin), label);
 
 	gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0);
 
@@ -847,7 +848,7 @@ void dict_dictd_get_list(GtkWidget *button, DictData *dd)
 	i = gtk_tree_model_iter_n_children(gtk_combo_box_get_model(GTK_COMBO_BOX(dict_combo)), NULL);
 	for (i -= 1; i > 2; i--)  /* first three entries (*, ! and ----) should always exist */
 	{
-		gtk_combo_box_remove_text(GTK_COMBO_BOX(dict_combo), i);
+		gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(dict_combo), i);
 	}
 
 	/* parse output */
@@ -859,7 +860,7 @@ void dict_dictd_get_list(GtkWidget *button, DictData *dd)
 	i = 0;
 	while (i < max_lines && lines[i][0] != '.')
 	{
-		gtk_combo_box_append_text(GTK_COMBO_BOX(dict_combo), lines[i]);
+		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dict_combo), lines[i]);
 		i++;
 	}
 
@@ -870,4 +871,3 @@ void dict_dictd_get_list(GtkWidget *button, DictData *dd)
 	 * the list and we also don't know whether it exists at all, and I don't walk through the list */
 	gtk_combo_box_set_active(GTK_COMBO_BOX(dict_combo), 0);
 }
-
diff --git a/lib/gui.c b/lib/gui.c
index 971af694b6b6890670d0605b13b6d8fd449e4acf..1f453cc88215feca59817d56801519e69f41c06e 100644
--- a/lib/gui.c
+++ b/lib/gui.c
@@ -32,7 +32,7 @@
 
 #include "common.h"
 #include "gui.h"
-#include "inline-icon.h"
+#include "resources.h"
 #include "speedreader.h"
 
 
@@ -120,8 +120,8 @@ static gboolean textview_key_press_event(GtkWidget *text_view, GdkEventKey *even
 
 	switch (event->keyval)
 	{
-		case GDK_Return:
-		case GDK_KP_Enter:
+		case GDK_KEY_Return:
+		case GDK_KEY_KP_Enter:
 		{
 			gtk_text_buffer_get_iter_at_mark(dd->main_textbuffer, &iter,
 				gtk_text_buffer_get_insert(dd->main_textbuffer));
@@ -226,8 +226,14 @@ static gboolean textview_motion_notify_event(GtkWidget *text_view, GdkEventMotio
 static gboolean textview_visibility_notify_event(GtkWidget *text_view, GdkEventVisibility *event)
 {
 	gint wx, wy, bx, by;
+	GdkDevice *pointer;
+	GdkSeat *seat;
 
-	gdk_window_get_pointer(text_view->window, &wx, &wy, NULL);
+	seat = gdk_display_get_default_seat (gdk_display_get_default ());
+	pointer = gdk_seat_get_pointer (seat);
+
+	gdk_window_get_device_position(gtk_widget_get_window (text_view),
+								   pointer, &wx, &wy, NULL);
 
 	gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(text_view),
 		GTK_TEXT_WINDOW_WIDGET, wx, wy, &bx, &by);
@@ -246,8 +252,14 @@ static gchar *textview_get_text_at_cursor(DictData *dd)
 	if (! gtk_text_buffer_get_selection_bounds(dd->main_textbuffer, &start, &end))
 	{
 		gint wx, wy, bx, by;
+		GdkDevice *pointer;
+		GdkSeat *seat;
+
+		seat = gdk_display_get_default_seat (gdk_display_get_default ());
+		pointer = gdk_seat_get_pointer (seat);
 
-		gdk_window_get_pointer(dd->main_textview->window, &wx, &wy, NULL);
+		gdk_window_get_device_position(gtk_widget_get_window (dd->main_textview),
+									   pointer, &wx, &wy, NULL);
 
 		gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(dd->main_textview),
 			GTK_TEXT_WINDOW_WIDGET, wx, wy, &bx, &by);
@@ -336,20 +348,36 @@ static gboolean textview_is_hyperlink_at_cursor(DictData *dd)
 
 static void textview_populate_popup_cb(GtkTextView *textview, GtkMenu *menu, DictData *dd)
 {
-	GtkWidget *search = gtk_image_menu_item_new_from_stock(GTK_STOCK_FIND, NULL);
-	GtkWidget *copy_link = gtk_image_menu_item_new_with_label(_("Copy Link"));
+	GtkWidget *box, *icon, *label;
+
+	GtkWidget *search = gtk_menu_item_new ();
+	GtkWidget *copy_link = gtk_menu_item_new ();
 	GtkWidget *sep = gtk_separator_menu_item_new();
-	GtkWidget *copy_link_image = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
 
 	gtk_widget_show(sep);
 	gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), sep);
 
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(copy_link), copy_link_image);
-	gtk_widget_show(copy_link);
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ("gtk-copy", GTK_ICON_SIZE_MENU);
+	label = gtk_label_new (_("Copy Link"));
+
+	gtk_container_add (GTK_CONTAINER (box), icon);
+	gtk_container_add (GTK_CONTAINER (box), label);
+	gtk_container_add (GTK_CONTAINER (copy_link), box);
+
+	gtk_widget_show_all(copy_link);
 	gtk_widget_set_sensitive(GTK_WIDGET(copy_link), textview_is_hyperlink_at_cursor(dd));
 	gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), copy_link);
 
-	gtk_widget_show(search);
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ("gtk-find", GTK_ICON_SIZE_MENU);
+	label = gtk_label_new (_("Search"));
+
+	gtk_container_add (GTK_CONTAINER (box), icon);
+	gtk_container_add (GTK_CONTAINER (box), label);
+	gtk_container_add (GTK_CONTAINER (search), box);
+
+	gtk_widget_show_all(search);
 	gtk_widget_set_sensitive(GTK_WIDGET(search), textview_is_text_at_cursor(dd));
 	gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), search);
 
@@ -376,7 +404,6 @@ static gboolean textview_button_press_cb(GtkTextView *view, GdkEventButton *even
 }
 
 
-#if GTK_CHECK_VERSION(2, 12, 0)
 static gboolean textview_query_tooltip_cb(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode,
 										  GtkTooltip *tooltip, DictData *dd)
 {
@@ -408,7 +435,6 @@ static gboolean textview_query_tooltip_cb(GtkWidget *widget, gint x, gint y, gbo
 	}
 	return FALSE;
 }
-#endif
 
 
 static void textview_apply_or_remove_tags(GtkTextBuffer *buffer, const gchar *tag,
@@ -522,7 +548,7 @@ static void combo_changed_cb(GtkComboBox *combo, DictData *dd)
 
 	if (gtk_combo_box_get_active_iter(combo, &iter))
 	{
-		gchar *text = gtk_combo_box_get_active_text(combo);
+		gchar *text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo));
 		dict_search_word(dd, text);
 		g_free(text);
 	}
@@ -577,7 +603,9 @@ static void update_search_button(DictData *dd, GtkWidget *box)
 
 	if (button == NULL)
 	{
-		button = gtk_button_new_from_stock(GTK_STOCK_FIND);
+		button = gtk_button_new_with_mnemonic (_("F_ind"));
+		gtk_button_set_image(GTK_BUTTON(button),
+			gtk_image_new_from_icon_name("gtk-find", GTK_ICON_SIZE_BUTTON));
 		gtk_widget_show(button);
 		gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
 		g_signal_connect(button, "clicked", G_CALLBACK(entry_button_clicked_cb), dd);
@@ -590,7 +618,7 @@ static void update_search_button(DictData *dd, GtkWidget *box)
 	{
 		case DICTMODE_DICT:
 		{
-			image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_BUTTON);
+			image = gtk_image_new_from_icon_name("gtk-find", GTK_ICON_SIZE_BUTTON);
 			break;
 		}
 		case DICTMODE_WEB:
@@ -600,7 +628,7 @@ static void update_search_button(DictData *dd, GtkWidget *box)
 		}
 		case DICTMODE_SPELL:
 		{
-			image = gtk_image_new_from_stock(GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_BUTTON);
+			image = gtk_image_new_from_icon_name("gtk-spell-check", GTK_ICON_SIZE_BUTTON);
 			break;
 		}
 		default:
@@ -646,12 +674,6 @@ static void search_mode_spell_toggled(GtkToggleButton *togglebutton, DictData *d
 }
 
 
-const guint8 *dict_gui_get_icon_data(void)
-{
-	return dict_icon_data;
-}
-
-
 static void speedreader_clicked_cb(GtkButton *button, DictData *dd)
 {
 	GtkWidget *dialog = xfd_speed_reader_new(GTK_WINDOW(dd->window), dd);
@@ -661,46 +683,95 @@ static void speedreader_clicked_cb(GtkButton *button, DictData *dd)
 
 static GtkWidget *create_file_menu(DictData *dd)
 {
+	GtkWidget *box, *icon, *label;
 	GtkWidget *menubar, *file, *file_menu, *help, *help_menu, *menu_item;
-	GtkAccelGroup *accel_group;
 
-	accel_group = gtk_accel_group_new();
+	GtkAccelGroup *accel_group = gtk_accel_group_new();
 	gtk_window_add_accel_group(GTK_WINDOW(dd->window), accel_group);
 
 	menubar = gtk_menu_bar_new();
 
+	/* File Menu */
 	file = gtk_menu_item_new_with_mnemonic(_("_File"));
 
 	file_menu = gtk_menu_new();
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), file_menu);
 
-	menu_item = gtk_image_menu_item_new_with_mnemonic(_("Speed _Reader"));
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),
-		gtk_image_new_from_stock(GTK_STOCK_JUSTIFY_CENTER, GTK_ICON_SIZE_MENU));
-	gtk_widget_add_accelerator(menu_item, "activate", accel_group,
-			GDK_r, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+	/* Speed Reader */
+	menu_item = gtk_menu_item_new();
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ("gtk-justify-center", GTK_ICON_SIZE_MENU);
+	label = gtk_accel_label_new (_("Speed _Reader"));
+
+	gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+	gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+	gtk_widget_add_accelerator (menu_item, "activate", accel_group,
+                                GDK_KEY_r, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+	gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), menu_item);
+
+	gtk_box_pack_start (GTK_BOX (box), icon, FALSE, FALSE , 0);
+	gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (menu_item), box);
+
 	g_signal_connect(menu_item, "activate", G_CALLBACK(speedreader_clicked_cb), dd);
 	gtk_container_add(GTK_CONTAINER(file_menu), menu_item);
 
+	/* Separator */
 	gtk_container_add(GTK_CONTAINER(file_menu), gtk_separator_menu_item_new());
 
-	dd->pref_menu_item = gtk_image_menu_item_new_from_stock("gtk-preferences", accel_group);
-	gtk_widget_add_accelerator(dd->pref_menu_item, "activate", accel_group,
-			GDK_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+	/* Preferences */
+	dd->pref_menu_item = gtk_menu_item_new();
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ("gtk-preferences", GTK_ICON_SIZE_MENU);
+	label = gtk_accel_label_new (_("_Preferences"));
+
+	gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+	gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+	gtk_widget_add_accelerator (dd->pref_menu_item, "activate", accel_group,
+                                GDK_KEY_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+	gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), dd->pref_menu_item);
+
+	gtk_box_pack_start (GTK_BOX (box), icon, FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (dd->pref_menu_item), box);
 	gtk_container_add(GTK_CONTAINER(file_menu), dd->pref_menu_item);
 
+	/* Separator */
 	gtk_container_add(GTK_CONTAINER(file_menu), gtk_separator_menu_item_new());
 
-	dd->close_menu_item = gtk_image_menu_item_new_from_stock(
-			(dd->is_plugin) ? "gtk-close" : "gtk-quit", accel_group);
+	/* Close */
+	dd->close_menu_item = gtk_menu_item_new();
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ((dd->is_plugin) ? "gtk-close" : "gtk-quit", GTK_ICON_SIZE_MENU);
+	label = gtk_accel_label_new (_("_Quit"));
+
+	gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+	gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+	gtk_widget_add_accelerator (dd->close_menu_item, "activate", accel_group,
+                                GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+	gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), dd->close_menu_item);
+
+	gtk_box_pack_start (GTK_BOX (box), icon, FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (dd->close_menu_item), box);
 	gtk_container_add(GTK_CONTAINER(file_menu), dd->close_menu_item);
 
+	/* Help Menu*/
 	help = gtk_menu_item_new_with_mnemonic(_("_Help"));
 
 	help_menu = gtk_menu_new();
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), help_menu);
 
-	menu_item = gtk_image_menu_item_new_from_stock("gtk-about", accel_group);
+	/* About */
+	menu_item = gtk_menu_item_new();
+	box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+	icon = gtk_image_new_from_icon_name ("gtk-about", GTK_ICON_SIZE_MENU);
+	label = gtk_label_new (_("About"));
+
+	gtk_box_pack_start (GTK_BOX (box), icon, FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (menu_item), box);
+
 	gtk_container_add(GTK_CONTAINER(help_menu), menu_item);
 	g_signal_connect(menu_item, "activate", G_CALLBACK(dict_gui_about_dialog), dd);
 
@@ -716,16 +787,16 @@ static GtkWidget *create_file_menu(DictData *dd)
 void dict_gui_finalize(DictData *dd)
 {
 	if (hand_cursor)
-		gdk_cursor_unref(hand_cursor);
+		g_object_unref (hand_cursor);
 	if (regular_cursor)
-		gdk_cursor_unref(regular_cursor);
+		g_object_unref (regular_cursor);
 }
 
 
 void dict_gui_create_main_window(DictData *dd)
 {
 	GtkWidget *main_box, *entry_box, *label_box;
-	GtkWidget *sep, *align, *scrolledwindow_results;
+	GtkWidget *sep, *scrolledwindow_results;
 	GdkPixbuf *icon;
 	GtkWidget *method_chooser, *radio, *label, *button;
 	GtkAccelGroup *accel_group = gtk_accel_group_new();
@@ -735,35 +806,36 @@ void dict_gui_create_main_window(DictData *dd)
 	gtk_window_set_default_size(GTK_WINDOW(dd->window), 580, 360);
 	gtk_widget_set_name(dd->window, "Xfce4Dict");
 
-	icon = gdk_pixbuf_new_from_inline(-1, dict_icon_data, FALSE, NULL);
+	dict_get_resource();
+	icon = gdk_pixbuf_new_from_resource("/org/xfce/dict/icon", NULL);
 	gtk_window_set_icon(GTK_WINDOW(dd->window), icon);
 	g_object_unref(icon);
 
-	main_box = gtk_vbox_new(FALSE, 0);
+	main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
 	gtk_widget_show(main_box);
 	gtk_container_add(GTK_CONTAINER(dd->window), main_box);
 
 	gtk_box_pack_start(GTK_BOX(main_box), create_file_menu(dd), FALSE, TRUE, 0);
 
 	/* entry box (label, entry, buttons) */
-	entry_box = gtk_hbox_new(FALSE, 5);
+	entry_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
 	gtk_widget_show(entry_box);
 	gtk_container_set_border_width(GTK_CONTAINER(entry_box), 2);
 	gtk_box_pack_start(GTK_BOX(main_box), entry_box, FALSE, TRUE, 5);
 
-	label_box = gtk_hbox_new(FALSE, 5);
+	label_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
 	gtk_widget_show(label_box);
 	gtk_box_pack_start(GTK_BOX(entry_box), label_box, TRUE, TRUE, 5);
 
-	dd->main_combo = gtk_combo_box_entry_new_text();
+	dd->main_combo = gtk_combo_box_text_new_with_entry();
 	gtk_widget_show(dd->main_combo);
 	gtk_box_pack_start(GTK_BOX(label_box), dd->main_combo, TRUE, TRUE, 0);
 	g_signal_connect(dd->main_combo, "changed", G_CALLBACK(combo_changed_cb), dd);
 
 	dd->main_entry = gtk_bin_get_child(GTK_BIN(dd->main_combo));
-	gtk_entry_set_text(GTK_ENTRY(dd->main_entry), _("Search term"));
-	gtk_entry_set_icon_from_stock(GTK_ENTRY(dd->main_entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND);
-	gtk_entry_set_icon_from_stock(GTK_ENTRY(dd->main_entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
+	gtk_entry_set_placeholder_text(GTK_ENTRY(dd->main_entry), _("Search term"));
+	gtk_entry_set_icon_from_icon_name(GTK_ENTRY(dd->main_entry), GTK_ENTRY_ICON_PRIMARY, "gtk-find");
+	gtk_entry_set_icon_from_icon_name(GTK_ENTRY(dd->main_entry), GTK_ENTRY_ICON_SECONDARY, "gtk-clear");
 	g_signal_connect(dd->main_entry, "changed", G_CALLBACK(entry_changed_cb), dd);
 	g_signal_connect(dd->main_entry, "activate", G_CALLBACK(entry_activate_cb), dd);
 	g_signal_connect(dd->main_entry, "icon-release", G_CALLBACK(entry_icon_release_cb), dd);
@@ -771,35 +843,31 @@ void dict_gui_create_main_window(DictData *dd)
 
 	update_search_button(dd, entry_box);
 
-	/* just make some space */
-	align = gtk_alignment_new(1, 0.5, 0, 0);
-	gtk_alignment_set_padding(GTK_ALIGNMENT(align), 0, 0, 10, 0);
-	gtk_widget_show(align);
-	gtk_container_add(GTK_CONTAINER(align), gtk_label_new(""));
-	gtk_box_pack_start(GTK_BOX(entry_box), align, FALSE, FALSE, 5);
-
-	sep = gtk_vseparator_new();
+	sep = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
 	gtk_widget_show(sep);
 	gtk_box_pack_start(GTK_BOX(entry_box), sep, FALSE, FALSE, 2);
 
 	button = gtk_button_new_with_mnemonic(_("Speed _Reader"));
 	gtk_button_set_image(GTK_BUTTON(button),
-		gtk_image_new_from_stock(GTK_STOCK_JUSTIFY_CENTER, GTK_ICON_SIZE_MENU));
+		gtk_image_new_from_icon_name("gtk-justify-center", GTK_ICON_SIZE_MENU));
 	g_signal_connect(button, "clicked", G_CALLBACK(speedreader_clicked_cb), dd);
 	gtk_widget_show(button);
 	gtk_box_pack_start(GTK_BOX(entry_box), button, FALSE, FALSE, 2);
 
-	sep = gtk_vseparator_new();
+	sep = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
 	gtk_widget_show(sep);
 	gtk_box_pack_start(GTK_BOX(entry_box), sep, FALSE, FALSE, 2);
 
-	dd->close_button = gtk_button_new_from_stock(
-		(dd->is_plugin) ? GTK_STOCK_CLOSE : GTK_STOCK_QUIT);
+	dd->close_button = gtk_button_new_with_mnemonic ((dd->is_plugin) ?
+		_("_Close") : _("_Quit"));
+	gtk_button_set_image(GTK_BUTTON(dd->close_button),
+		gtk_image_new_from_icon_name((dd->is_plugin) ?
+			"gtk-close" : "gtk-quit", GTK_ICON_SIZE_BUTTON));
 	gtk_widget_show(dd->close_button);
 	gtk_box_pack_end(GTK_BOX(entry_box), dd->close_button, FALSE, FALSE, 0);
 
 	/* search method chooser */
-	method_chooser = gtk_hbox_new(FALSE, 0);
+	method_chooser = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 	gtk_widget_show(method_chooser);
 	gtk_box_pack_start(GTK_BOX(main_box), method_chooser, FALSE, FALSE, 0);
 
@@ -873,8 +941,8 @@ void dict_gui_create_main_window(DictData *dd)
 
 	/* support for links (cross-references) for dictd responses */
 	{
-		hand_cursor = gdk_cursor_new(GDK_HAND2);
-		regular_cursor = gdk_cursor_new(GDK_XTERM);
+		hand_cursor = gdk_cursor_new_from_name(gdk_display_get_default(), "pointer");
+		regular_cursor = gdk_cursor_new_from_name(gdk_display_get_default(), "default");
 
 		g_signal_connect(dd->main_textview, "key-press-event",
 			G_CALLBACK(textview_key_press_event), dd);
@@ -897,10 +965,8 @@ void dict_gui_create_main_window(DictData *dd)
 			G_CALLBACK(textview_populate_popup_cb), dd);
 	}
 	/* tooltips */
-#if GTK_CHECK_VERSION(2, 12, 0)
 	gtk_widget_set_has_tooltip(dd->main_textview, TRUE);
 	g_signal_connect(dd->main_textview, "query-tooltip", G_CALLBACK(textview_query_tooltip_cb), dd);
-#endif
 
 	gtk_widget_show(dd->main_textview);
 	gtk_container_add(GTK_CONTAINER(scrolledwindow_results), dd->main_textview);
@@ -925,7 +991,7 @@ void dict_gui_create_main_window(DictData *dd)
 			gtk_window_maximize(GTK_WINDOW(dd->window));
 	}
 	/* quit on Escape */
-	gtk_widget_add_accelerator(dd->close_button, "clicked", accel_group, GDK_Escape, 0, 0);
+	gtk_widget_add_accelerator(dd->close_button, "clicked", accel_group, GDK_KEY_Escape, 0, 0);
 	gtk_window_add_accel_group(GTK_WINDOW(dd->window), accel_group);
 }
 
@@ -938,39 +1004,26 @@ void dict_gui_show_main_window(DictData *dd)
 }
 
 
-static void about_activate_link(GtkAboutDialog *about, const gchar *ref, gpointer data)
-{
-	gchar *cmd = g_strconcat("xdg-open ", ref, NULL);
-	g_spawn_command_line_async(cmd, NULL);
-	g_free(cmd);
-}
-
-
 void dict_gui_about_dialog(GtkWidget *widget, DictData *dd)
 {
 	const gchar *authors[]= { "Enrico Tröger <enrico@xfce.org>",
-                              "Harald Judt <hjudt@xfce.org>",
-                              NULL };
-	const gchar *title = _("Xfce4 Dictionary");
-	GdkPixbuf *logo = gdk_pixbuf_new_from_inline(-1, dict_icon_data, FALSE, NULL);
+                            "Harald Judt <hjudt@xfce.org>",
+                            "André Miranda <andre42m@gmail.com>",
+                            NULL };
+
+	GdkPixbuf *logo = gdk_pixbuf_new_from_resource("/org/xfce/dict/icon", NULL);
 
-	gtk_about_dialog_set_email_hook(about_activate_link, NULL, NULL);
-	gtk_about_dialog_set_url_hook(about_activate_link, NULL, NULL);
 	gtk_show_about_dialog(GTK_WINDOW(dd->window),
 		"destroy-with-parent", TRUE,
 		"authors", authors,
 		"comments", _("A client program to query different dictionaries."),
-		"copyright", _("Copyright \302\251 2006-2015 Xfce Development Team"),
+		"copyright", _("Copyright \302\251 2006-2016 Xfce Development Team"),
 		"website", "http://goodies.xfce.org/projects/applications/xfce4-dict",
 		"logo", logo,
 		"translator-credits", _("translator-credits"),
 		"license", XFCE_LICENSE_GPL,
 		"version", PACKAGE_VERSION,
-#if GTK_CHECK_VERSION(2,11,0)
-		"program-name", title,
-#else
-		"name", title,
-#endif
+		"program-name", _("Xfce4 Dictionary"),
 		  NULL);
 
 	if (logo != NULL)
@@ -983,7 +1036,7 @@ void dict_gui_query_geometry(DictData *dd)
 	gtk_window_get_position(GTK_WINDOW(dd->window),	&dd->geometry[0], &dd->geometry[1]);
 	gtk_window_get_size(GTK_WINDOW(dd->window),	&dd->geometry[2], &dd->geometry[3]);
 
-	if (gdk_window_get_state(dd->window->window) & GDK_WINDOW_STATE_MAXIMIZED)
+	if (gdk_window_get_state(gtk_widget_get_window(dd->window)) & GDK_WINDOW_STATE_MAXIMIZED)
 		dd->geometry[4] = 1;
 	else
 		dd->geometry[4] = 0;
diff --git a/lib/gui.h b/lib/gui.h
index 556699c7598772e5172c45e619e1ccf2c75a676e..e6305b5cd79f9c2afd0babd87868bec148a02742 100644
--- a/lib/gui.h
+++ b/lib/gui.h
@@ -28,7 +28,6 @@ void dict_gui_set_panel_entry_text(DictData *dd, const gchar *text);
 void dict_gui_show_main_window(DictData *dd);
 void dict_gui_query_geometry(DictData *dd);
 void dict_gui_finalize(DictData *dd);
-const guint8 *dict_gui_get_icon_data(void);
 
 void dict_gui_textview_apply_tag_to_word(GtkTextBuffer *buffer, const gchar *word,
 										 GtkTextIter *pos, const gchar *first_tag,
diff --git a/lib/inline-icon.h b/lib/inline-icon.h
deleted file mode 100644
index 96a61415511c16ef3768f5d0667d1f31a3a4183f..0000000000000000000000000000000000000000
--- a/lib/inline-icon.h
+++ /dev/null
@@ -1,420 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump */
-
-#ifdef __SUNPRO_C
-#pragma align 4 (dict_icon_data)
-#endif
-#ifdef __GNUC__
-static const guint8 dict_icon_data[] __attribute__ ((__aligned__ (4))) = 
-#else
-static const guint8 dict_icon_data[] = 
-#endif
-{ ""
-  /* Pixbuf magic (0x47646b50) */
-  "GdkP"
-  /* length: header (24) + pixel_data (9216) */
-  "\0\0$\30"
-  /* pixdata_type (0x1010002) */
-  "\1\1\0\2"
-  /* rowstride (192) */
-  "\0\0\0\300"
-  /* width (48) */
-  "\0\0\0""0"
-  /* height (48) */
-  "\0\0\0""0"
-  /* pixel_data: */
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\252\252"
-  "\3\312\312\3125\313\313\313l\317\317\317\243\320\320\320\324\320\320"
-  "\320\351\322\322\322\367\324\324\324\367\323\323\323\361\321\321\321"
-  "\337\317\317\317\241\313\313\313S\377\377\377\2\306\306\306\11\315\315"
-  "\315\\\320\320\320\251\321\321\321\341\323\323\323\356\324\324\324\364"
-  "\322\322\322\366\317\317\317\351\313\313\313\330\311\311\311\257\306"
-  "\306\306y\306\306\306G\304\304\304\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\317\317\317\20\315"
-  "\315\315`\317\317\317\300\315\315\315\366\326\326\326\362\350\350\350"
-  "\371\363\363\363\377\372\372\372\377\374\374\374\377\373\373\372\377"
-  "\367\370\367\377\364\365\363\377\361\362\360\377\351\352\350\377\333"
-  "\333\332\370\312\307\307\360y\0\0\377\330\331\327\370\352\353\352\377"
-  "\366\366\366\377\370\370\370\377\367\367\367\377\367\367\367\377\366"
-  "\366\366\377\364\364\364\377\355\355\355\377\341\341\341\374\320\320"
-  "\320\361\300\300\300\370\300\300\300\330\276\276\276\205\274\274\274"
-  ".\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\310\16\313\313\313]\317"
-  "\317\317\300\316\316\316\370\333\333\333\364\362\362\362\377\375\375"
-  "\375\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\375\375\375\377\366\366\365\377\357\360\355\377\346\347\344\377"
-  "\335\337\333\377\334\335\331\377\345\346\344\377\344\345\343\377y\0\0"
-  "\377\326\315\314\377\337\340\336\377\352\353\352\377\360\360\360\377"
-  "\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353\377\355"
-  "\355\355\377\360\360\360\377\364\364\364\377\363\363\363\377\345\345"
-  "\345\377\320\320\320\371\274\274\274\363\271\271\271\343\266\266\266"
-  "t\270\270\270\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\314\314\314\5\314\314\314\377\326\326\326\365\352"
-  "\352\352\377\375\375\375\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\375\375\375\377\366\366\365\377\356\357\354\377\346\347\344\377"
-  "\335\337\333\377\324\326\321\377\311\314\306\377\313\315\307\377z\1\1"
-  "\377\256\223\220\377\331\332\327\377\352\353\352\377\357\357\357\377"
-  "\356\356\356\377\355\355\355\377\353\353\353\377\352\352\352\377\351"
-  "\351\351\377\350\350\350\377\346\346\346\377\351\351\351\377\357\357"
-  "\357\377\365\365\365\377\356\356\356\377\330\330\330\377\303\303\303"
-  "\365\261\261\261\377\231\231\231\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0""333\5Q<N\377\311\310\311\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\375\375\374\377\366\366\365\377\356\357\354\377\346\347\344"
-  "\377\335\337\333\377\324\326\321\377\311\314\306\377\277\302\273\377"
-  "}\4\4\377\230SR\377\331\333\330\377\353\353\352\377\357\357\357\377\356"
-  "\356\356\377\355\355\355\377\353\353\353\377\352\352\352\377\351\351"
-  "\351\377\347\347\347\377\346\346\346\377\345\345\345\377\343\343\343"
-  "\377\346\346\346\377\363\363\363\377\343\343\343\377\343\343\343\377"
-  "\254\253\254\377M8J\377333\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0;';'iZh\365\320\316\320\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\375\375\374"
-  "\377\364\365\364\377\355\357\354\377\345\347\344\377\334\336\332\377"
-  "\324\326\321\377\311\314\306\377\277\302\273\377\201\14\14\377\200\7"
-  "\7\377\332\333\330\377\352\352\351\377\357\357\357\377\356\356\356\377"
-  "\354\354\354\377\353\353\353\377\352\352\352\377\350\350\350\377\347"
-  "\347\347\377\346\346\346\377\344\344\344\377\343\343\343\377\343\343"
-  "\343\377\364\364\364\377\344\344\344\377\343\343\343\377\261\257\261"
-  "\377`O_\365;';'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<%<L\201"
-  "r\200\366\330\327\330\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\374\374\373\377\364"
-  "\365\364\377\355\357\354\377\344\346\343\377\334\336\332\377\324\326"
-  "\321\377\311\314\306\377\277\302\273\377\221ea\377\202\11\11\377\321"
-  "\307\305\377\352\352\351\377\357\357\357\377\355\355\355\377\354\354"
-  "\354\377\353\353\353\377\352\352\352\377\350\350\350\377\347\347\347"
-  "\377\346\346\346\377\344\344\344\377\343\343\343\377\343\343\343\377"
-  "\360\360\360\377\350\350\350\377\343\343\343\377\266\265\267\377qbp\366"
-  "<%<L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77&:r\224\212\224"
-  "\374\345\345\345\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\373\374\373\377\364\365"
-  "\363\377\354\355\353\377\344\346\343\377\334\335\331\377\323\325\320"
-  "\377\310\313\305\377\277\301\273\377\232\225\221\377\205\14\14\377\245"
-  "TS\377\352\353\352\377\356\356\356\377\355\355\355\377\354\354\354\377"
-  "\352\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377\345"
-  "\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377\355\355"
-  "\355\377\354\354\354\377\343\343\343\377\302\302\302\377|q{\374\77&:"
-  "r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77'<\242\252\244\253"
-  "\377\354\354\354\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\373\374\373\377\364\365"
-  "\363\377\354\355\353\377\344\346\343\377\334\335\331\377\322\324\317"
-  "\377\310\313\305\377\277\301\273\377\234\235\231\377\240SR\377\210\17"
-  "\17\377\314\247\247\377\356\356\356\377\355\355\355\377\354\354\354\377"
-  "\352\352\352\377\351\351\351\377\350\350\350\377\346\346\346\377\345"
-  "\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377\351\351"
-  "\351\377\360\360\360\377\343\343\343\377\312\312\312\377\213\204\213"
-  "\377\77'<\242\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@'<\317"
-  "\275\271\275\377\362\362\362\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\374\373"
-  "\377\364\365\363\377\354\355\353\377\344\346\343\377\334\335\331\377"
-  "\322\324\317\377\310\313\305\377\277\301\273\377\234\235\231\377\273"
-  "\262\256\377\213\21\21\377\215\26\26\377\342\323\323\377\355\355\355"
-  "\377\353\353\353\377\352\352\352\377\351\351\351\377\347\347\347\377"
-  "\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\343"
-  "\343\343\377\345\345\345\377\364\364\364\377\343\343\343\377\322\322"
-  "\322\377\226\222\226\377@'<\317\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0>'<\356\304\302\304\377\371\371\371\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\372\373\372\377\364\365\363\377\354\355\353\377\344\345\342\377"
-  "\333\335\331\377\321\324\317\377\310\313\305\377\276\301\273\377\234"
-  "\237\231\377\300\302\276\377\275\216\214\377\216\24\24\377\24077\377"
-  "\344\333\333\377\353\353\353\377\352\352\352\377\351\351\351\377\347"
-  "\347\347\377\346\346\346\377\345\345\345\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\343\343\343\377\363\363\363\377\345\345\345"
-  "\377\333\333\333\377\232\231\233\377>'<\356\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0@+@\14E.B\372\303\303\303\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376"
-  "\376\376\377\372\373\372\377\364\365\363\377\354\355\353\377\344\345"
-  "\342\377\333\335\331\377\321\324\317\377\310\313\305\377\276\301\273"
-  "\377\235\237\232\377\300\302\276\377\332\332\330\377\251NN\377\227!!"
-  "\377\247BB\377\347\341\341\377\352\352\352\377\350\350\350\377\347\347"
-  "\347\377\346\346\346\377\344\344\344\377\343\343\343\377\343\343\343"
-  "\377\343\343\343\377\343\343\343\377\360\360\360\377\351\351\351\377"
-  "\342\342\342\377\234\233\234\377D-A\372@+@\14\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0@%:0\\HZ\363\300\277\300\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376"
-  "\376\377\372\373\372\377\364\365\363\377\354\355\353\377\344\345\342"
-  "\377\333\335\331\377\321\324\317\377\310\313\305\377\276\301\273\377"
-  "\234\236\231\377\300\302\276\377\333\334\331\377\345\335\334\377\242"
-  "66\377\24522\377\254NN\377\350\345\345\377\350\350\350\377\347\347\347"
-  "\377\345\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377"
-  "\343\343\343\377\343\343\343\377\354\354\354\377\355\355\355\377\343"
-  "\343\343\377\237\236\237\377VBT\363@%:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0>&;Wn^n\366\304\302\304\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377"
-  "\372\372\372\377\363\364\362\377\354\355\352\377\343\345\342\377\333"
-  "\335\330\377\321\324\316\377\310\312\305\377\276\301\272\377\235\237"
-  "\232\377\301\303\277\377\333\334\331\377\351\352\351\377\340\316\316"
-  "\377\240--\377\255<<\377\265``\377\347\345\345\377\346\346\346\377\345"
-  "\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\350\350\350\377\361\361\361\377\343\343\343"
-  "\377\246\244\246\377dTd\366>&;W\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77';"
-  "}\177q\177\375\317\316\317\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377"
-  "\371\371\371\377\363\364\362\377\354\355\352\377\342\344\341\377\333"
-  "\335\330\377\321\324\316\377\310\312\305\377\276\301\272\377\235\237"
-  "\233\377\301\303\277\377\332\333\331\377\351\352\351\377\355\355\355"
-  "\377\326\266\266\377\24411\377\260@@\377\275uu\377\346\346\346\377\345"
-  "\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\344\344\344\377\364\364\364\377\343\343\343"
-  "\377\263\262\263\377ses\375\77';}\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77"
-  "(<\256\217\205\220\377\334\334\334\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376"
-  "\376\377\371\371\371\377\363\364\362\377\354\355\352\377\342\344\341"
-  "\377\333\335\330\377\321\324\316\377\310\312\305\377\276\301\272\377"
-  "\235\237\233\377\301\302\277\377\332\334\331\377\352\352\351\377\355"
-  "\355\355\377\353\353\353\377\311\222\222\377\271KK\377\260@@\377\316"
-  "\244\244\377\345\345\345\377\343\343\343\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\343\343\343\377\343\343\343\377\363\363\363"
-  "\377\346\346\346\377\301\301\301\377\177u\200\377\77(<\256\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\77)=\326\237\231\240\377\344\344\344\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\375\375\375\377\371\371\371\377\363\363\362\377\352"
-  "\353\351\377\342\344\340\377\332\335\330\377\321\323\316\377\310\312"
-  "\304\377\276\301\272\377\236\240\233\377\301\303\277\377\333\334\331"
-  "\377\352\352\351\377\354\354\354\377\353\353\353\377\352\351\351\377"
-  "\262QQ\377\316aa\377\253<<\377\337\325\325\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343"
-  "\377\357\357\357\377\352\352\352\377\312\312\312\377\216\210\217\377"
-  "\77)=\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\77(<\365\250\245\251\377\355"
-  "\355\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\376\376\376\377\375\375\375\377\371\371\371\377"
-  "\362\362\361\377\352\353\351\377\342\344\340\377\332\335\330\377\321"
-  "\323\316\377\310\312\304\377\276\301\272\377\237\241\234\377\302\303"
-  "\277\377\333\334\331\377\351\351\351\377\354\354\354\377\353\353\353"
-  "\377\351\351\351\377\335\312\312\377\255<<\377\310XX\377\300tt\377\343"
-  "\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343"
-  "\343\377\343\343\343\377\353\353\353\377\355\355\355\377\323\323\323"
-  "\377\227\224\230\377\77(<\365\0\0\0\0\0\0\0\0\0\0\0\0=$=\25D+A\370\252"
-  "\250\252\377\367\367\367\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\376\376\376\377\375\375\375\377"
-  "\370\370\367\377\361\362\361\377\352\353\351\377\342\344\340\377\331"
-  "\334\327\377\321\323\316\377\310\312\304\377\276\301\272\377\237\241"
-  "\235\377\302\303\277\377\332\333\331\377\351\352\351\377\354\354\354"
-  "\377\352\352\352\377\351\351\351\377\350\350\350\377\270\\\\\377\313"
-  "UU\377\255;;\377\335\323\323\377\343\343\343\377\343\343\343\377\343"
-  "\343\343\377\343\343\343\377\343\343\343\377\347\347\347\377\361\361"
-  "\361\377\335\335\335\377\233\231\233\377D+A\370=$=\25\0\0\0\0\0\0\0\0"
-  "='=;N9N\361\250\247\250\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377\375"
-  "\375\375\377\370\370\367\377\361\362\361\377\352\353\351\377\342\344"
-  "\340\377\331\334\327\377\321\323\316\377\307\312\304\377\275\300\272"
-  "\377\237\241\235\377\302\304\300\377\333\334\331\377\351\352\351\377"
-  "\354\354\354\377\352\352\352\377\351\351\351\377\350\350\350\377\316"
-  "\236\236\377\274FF\377\274EE\377\313\227\227\377\343\343\343\377\343"
-  "\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\344\344"
-  "\344\377\364\364\364\377\343\343\343\377\233\233\233\377M8M\361='=;\0"
-  "\0\0\0\0\0\0\0=%:`_M_\366\252\251\252\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376"
-  "\376\376\377\374\374\374\377\370\370\367\377\361\362\361\377\351\352"
-  "\350\377\342\344\340\377\331\334\327\377\321\323\316\377\307\312\304"
-  "\377\275\300\272\377\240\242\235\377\303\304\301\377\333\334\331\377"
-  "\351\352\351\377\353\353\353\377\352\352\352\377\351\351\351\377\347"
-  "\347\347\377\334\306\306\377\262\77\77\377\302BB\377\273__\377\343\343"
-  "\343\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343"
-  "\377\343\343\343\377\362\362\362\377\347\347\347\377\240\237\240\377"
-  "]K]\366=%:`\0\0\0\0\0\0\0\0\77%<\211m\\m\376\261\260\262\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\375\375\375\377\374\374\374\377\370\370\367\377\360"
-  "\361\357\377\351\352\347\377\342\344\340\377\331\333\327\377\320\323"
-  "\316\377\307\312\304\377\275\300\271\377\241\243\236\377\303\304\301"
-  "\377\333\334\332\377\351\351\350\377\353\353\353\377\352\352\352\377"
-  "\351\351\351\377\347\347\347\377\343\336\336\377\25788\377\30299\377"
-  "\264CC\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343"
-  "\377\343\343\343\377\343\343\343\377\356\356\356\377\352\352\352\377"
-  "\250\246\250\377kZk\376\77%<\211\0\0\0\0\0\0\0\0A'>\271xly\377\301\300"
-  "\301\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\376\376\376\377\376\376\376\377\375\375\375\377\372"
-  "\372\372\377\367\367\366\377\362\362\361\377\353\355\352\377\343\344"
-  "\341\377\323\326\321\377\307\312\304\377\275\300\271\377\241\243\236"
-  "\377\303\305\301\377\334\335\334\377\357\357\357\377\362\362\362\377"
-  "\362\362\362\377\362\362\362\377\361\361\361\377\360\360\360\377\260"
-  "66\377\272++\377\26199\377\344\344\344\377\343\343\343\377\343\343\343"
-  "\377\343\343\343\377\343\343\343\377\343\343\343\377\352\352\352\377"
-  "\356\356\356\377\265\264\265\377wkx\377A'>\271\0\0\0\0\0\0\0\0@'<\340"
-  "\206|\207\377\322\322\322\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\376\376\376\377\366\366\366\377\353\353\353\377\341\341\341\377"
-  "\332\332\332\377\322\322\322\377\321\321\321\377\333\333\332\377\341"
-  "\342\341\377\350\350\347\377\355\356\354\377\342\343\340\377\304\307"
-  "\300\377\254\255\251\377\340\341\337\377\360\361\360\377\350\350\350"
-  "\377\336\336\336\377\325\325\325\377\313\313\313\377\314\314\314\377"
-  "\320\313\313\377\26177\377\263\34\34\377\26066\377\364\364\364\377\362"
-  "\362\362\377\356\356\356\377\351\351\351\377\344\344\344\377\343\343"
-  "\343\377\347\347\347\377\362\362\362\377\303\303\303\377\206|\206\377"
-  "@'<\340\0\0\0\0\0\0\0\1@)>\372\223\215\224\377\340\340\340\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\372\372\372\377\353\353\353"
-  "\377\317\317\317\377\261\261\260\377\236\236\236\377\240\240\240\377"
-  "\241\242\240\377\240\242\237\377\240\242\236\377\242\244\240\377\242"
-  "\244\237\377\241\243\237\377\241\242\237\377\237\237\236\377\241\241"
-  "\241\377\315\315\313\377\351\352\350\377\337\337\335\377\306\307\306"
-  "\377\241\241\241\377\237\237\236\377\242\242\240\377\243\245\241\377"
-  "\245\247\243\377\245\247\243\377\247\206\204\377\25755\377\254\20\20"
-  "\377\26098\377\235\236\235\377\256\256\255\377\310\310\310\377\342\342"
-  "\342\377\360\360\360\377\360\360\360\377\352\352\352\377\365\365\365"
-  "\377\316\316\316\377\222\214\222\377@)>\372\0\0\0\1>#>\35D-C\365\231"
-  "\227\232\377\356\356\356\377\367\367\367\377\336\336\336\377\270\270"
-  "\270\377\241\241\241\377\235\235\233\377\237\240\233\377\250\254\244"
-  "\377\260\264\253\377\255\260\247\377\251\254\244\377\245\251\240\377"
-  "\244\251\237\377\244\250\237\377\245\251\240\377\247\253\242\377\252"
-  "\256\246\377\257\264\253\377\255\261\250\377\234\235\232\377\251\251"
-  "\250\377\243\243\242\377\234\235\233\377\257\261\253\377\263\267\256"
-  "\377\261\265\255\377\262\264\255\377\262\264\255\377\263\265\257\377"
-  "\261ro\377\252\37\37\377\246\12\12\377\261DC\377\270\273\264\377\262"
-  "\264\256\377\245\246\242\377\236\236\235\377\240\240\240\377\266\266"
-  "\266\377\330\330\330\377\357\357\357\377\333\333\333\377\230\225\230"
-  "\377D-C\365>#>\35@&<DK5I\361\233\233\233\377\246\246\246\377\242\243"
-  "\242\377\231\231\226\377\241\244\236\377\257\263\252\377\255\261\250"
-  "\377\245\251\237\377\237\243\230\377\232\236\224\377\232\237\224\377"
-  "\233\240\225\377\235\241\227\377\236\242\230\377\237\243\231\377\240"
-  "\245\233\377\242\246\234\377\243\247\235\377\245\251\241\377\256\261"
-  "\251\377\264\267\257\377\246\250\243\377\246\250\242\377\264\270\260"
-  "\377\262\264\255\377\256\261\251\377\256\261\251\377\257\263\253\377"
-  "\260\264\254\377\262\265\255\377\260EC\377\253\"\"\377\252\36\36\377"
-  "\260TR\377\270\273\264\377\271\274\265\377\272\275\266\377\272\275\266"
-  "\377\272\275\266\377\253\257\251\377\235\236\233\377\241\242\241\377"
-  "\245\245\245\377\233\233\233\377K5I\361@&<D\77&<jZGZ\367\222\223\221"
-  "\377\233\240\230\377\262\266\255\377\263\266\256\377\254\260\250\377"
-  "\245\251\237\377\242\247\234\377\245\251\240\377\247\253\241\377\251"
-  "\254\243\377\252\256\245\377\253\257\246\377\254\260\246\377\255\260"
-  "\250\377\253\257\246\377\251\255\244\377\247\253\242\377\255\262\251"
-  "\377\261\264\254\377\243\246\237\377\223\223\220\377\216\216\213\377"
-  "\215\215\213\377\223\223\220\377\243\246\240\377\262\266\257\377\264"
-  "\267\257\377\262\265\255\377\264\267\260\377\265\264\254\377\26066\377"
-  "\261DC\377\26066\377\262[Y\377\271\275\265\377\273\276\267\377\272\275"
-  "\266\377\272\275\266\377\272\275\266\377\272\275\266\377\272\275\266"
-  "\377\272\275\266\377\254\256\251\377\222\223\221\377ZGZ\367\77&<j>%;"
-  "\227gYg\377\207\210\204\377\246\252\241\377\262\266\255\377\252\255\245"
-  "\377\250\253\243\377\245\251\242\377\242\246\236\377\240\244\234\377"
-  "\236\241\232\377\232\234\226\377\227\231\224\377\227\231\223\377\225"
-  "\226\222\377\226\226\222\377\232\234\226\377\242\245\236\377\257\262"
-  "\253\377\237\243\235\377\210\211\206\377wov\377bQd\377YB\\\377YB\\\377"
-  "bQd\377wov\377\207\211\205\377\240\244\236\377\260\263\255\377\244\247"
-  "\240\377\235\232\224\377\231\222\217\377\227\230\224\377\236\202~\377"
-  "\243sp\377\233\235\230\377\241\243\236\377\244\247\241\377\250\252\245"
-  "\377\253\256\247\377\256\262\253\377\261\264\256\377\264\267\257\377"
-  "\267\271\263\377\220\221\216\377gYg\377>%;\227@'=\304sis\377\210\212"
-  "\205\377\206\207\203\377\204\204\202\377\203\202\200\377\201\177\177"
-  "\377~y{\377ysx\377tks\377nbo\377j]k\377gYi\377gYi\377gYi\377gYi\377i"
-  "\\k\377sjs\377\207\210\204\377\203\202\201\377hSk\377ZA^\377S9W\377R"
-  "8V\377R8V\377S9W\377ZA^\377hSk\377\203\202\202\377\210\211\205\377tk"
-  "t\377j\\k\377gYi\377gYi\377gYi\377gYi\377i\\k\377mam\377tjs\377ysx\377"
-  "\177y}\377\203\200\200\377\205\203\202\377\206\206\204\377\207\210\204"
-  "\377\210\212\205\377sis\377@'=\304\77(<\350fPi\377iSm\377hQk\377hQk\377"
-  "hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377"
-  "hQk\377hQk\377hQk\377iTm\377O9M\372G1E\373^G_\377hQk\377fOi\377fOi\377"
-  "hQk\377^G_\377G1E\373N8M\372iTm\377hQk\377hQk\377hQk\377hQk\377hQk\377"
-  "hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377hQk\377"
-  "iSm\377fPi\377\77(<\350>&;\377\77'<\377@(=\377@(=\377@(=\377@(=\377@"
-  "(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377"
-  "@(=\377@(=\377@(=\377B-\77\316F8D\226A,\77\334A)=\365D,A\370D,A\370A"
-  ")=\365A,\77\334F8D\226B,A\315@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377"
-  "@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377@(=\377"
-  "@(=\377\77'<\377>&;\377\0\0\0\0\0\0\0\0\0\0\0\0UUU\3```\10NNN\15UUU\22"
-  "Q]Q\26XXN\32RZR\37WWP#UUU'SYS+WWQ/WWR2UUU6UUU9UUU<VVR>TXT@UYQBTXTCVV"
-  "SDRRNKRRNKVVSDTXTCUYQBTXT@VVR>UUU<UUU9UUU6WWR2WWQ/SYS+UUU'WWP#RZR\37"
-  "XXN\32Q]Q\26UUU\22NNN\15```\10UUU\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1fff\5MMM\12[[[\16UUU\22U"
-  "UU\25R\\R\31R[R\34RZR\37SZS\"SZS%SYS(UUU*WWQ,SYS.WWQ/UUU0SXS1SXS1SXS"
-  "1SXS1UUU0WWQ/SYS.WWQ,UUU*SYS(SZS%SZS\"RZR\37R[R\34R\\R\31UUU\25UUU\22"
-  "[[[\16MMM\12fff\5\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\200\200\200\2fff\5UUU\11UUU\14UUU\17ZZZ\21YYY\24Q]Q\26UUU\30R"
-  "\\R\31UUU\33R[R\34XXO\35XXO\35UUU\36UUU\36XXO\35XXO\35R[R\34UUU\33R\\"
-  "R\31UUU\30Q]Q\26YYY\24ZZZ\21UUU\17UUU\14UUU\11fff\5\200\200\200\2\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\200\200"
-  "\200\2@@@\4fff\5UUU\6mmm\7```\10UUU\11MMM\12MMM\12UUU\11```\10mmm\7U"
-  "UU\6fff\5@@@\4\200\200\200\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
-
-
diff --git a/lib/libdict.h b/lib/libdict.h
index 98ead5b60430c9a2a28c8756551424afa1211ed0..4435da093b9f621c89cc1f7bc06dbbafe1e34d78 100644
--- a/lib/libdict.h
+++ b/lib/libdict.h
@@ -24,6 +24,7 @@
 #include "dictd.h"
 #include "prefs.h"
 #include "gui.h"
+#include "dbus.h"
 
 
 #endif
diff --git a/lib/prefs.c b/lib/prefs.c
index d321bba95ed8d955c98305e50c57e3e9a08bca51..3f10a1a1e77cc6e220fda8f11b1da4e638e98a90 100644
--- a/lib/prefs.c
+++ b/lib/prefs.c
@@ -92,8 +92,8 @@ void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd)
 
 	/* check some values before actually saving the settings in case we need to return to
 	 * the dialog */
-	dictionary = gtk_combo_box_get_active_text(
-		GTK_COMBO_BOX(g_object_get_data(G_OBJECT(dlg), "dict_combo")));
+	dictionary = gtk_combo_box_text_get_active_text(
+		GTK_COMBO_BOX_TEXT(g_object_get_data(G_OBJECT(dlg), "dict_combo")));
 	if (! NZV(dictionary) || dictionary[0] == '-')
 	{
 		dict_show_msgbox(dd, GTK_MESSAGE_ERROR, _("You have chosen an invalid dictionary."));
@@ -122,8 +122,8 @@ void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd)
 	gtk_widget_set_sensitive(dd->radio_button_web, NZV(dd->web_url));
 
 	/* MODE SPELL */
-	dictionary = gtk_combo_box_get_active_text(
-			GTK_COMBO_BOX(g_object_get_data(G_OBJECT(dlg), "spell_combo")));
+	dictionary = gtk_combo_box_text_get_active_text(
+			GTK_COMBO_BOX_TEXT(g_object_get_data(G_OBJECT(dlg), "spell_combo")));
 	if (NZV(dictionary))
 	{
 		g_free(dd->spell_dictionary);
@@ -168,11 +168,11 @@ static GtkWidget *create_web_dicts_table(GtkWidget *entry)
 {
 	gint i;
 	gint offset;
-	GtkWidget *table, *button;
+	GtkWidget *grid, *button;
 
-	table = gtk_table_new(4, 2, FALSE);
-	gtk_table_set_row_spacings(GTK_TABLE(table), 2);
-	gtk_table_set_col_spacings(GTK_TABLE(table), 2);
+	grid = gtk_grid_new();
+	gtk_grid_set_row_spacing(GTK_GRID(grid), 4);
+	gtk_grid_set_column_spacing(GTK_GRID(grid), 4);
 
 	for (i = 0; web_dicts[i].label != NULL; i++)
 	{
@@ -182,13 +182,11 @@ static GtkWidget *create_web_dicts_table(GtkWidget *entry)
 		g_object_set_data(G_OBJECT(button), "web_entry", entry);
 		gtk_widget_show(button);
 
-		gtk_table_attach(GTK_TABLE(table),
-				button, offset, 1 + offset, i - offset, i + 1 - offset,
-				(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-				(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), button, offset, i - offset, 1, 1);
+		gtk_widget_set_hexpand(button, TRUE);
 	}
 
-	return table;
+	return grid;
 }
 
 
@@ -205,9 +203,9 @@ const gchar *dict_prefs_get_web_url_label(DictData *dd)
 }
 
 
-static void color_set_cb(GtkColorButton *widget, GdkColor *color)
+static void color_set_cb(GtkColorChooser *widget, GdkRGBA *color)
 {
-	gtk_color_button_get_color(widget, color);
+	gtk_color_chooser_get_rgba(widget, color);
 }
 
 
@@ -225,11 +223,11 @@ static gboolean spell_entry_focus_cb(GtkEntry *entry, GdkEventFocus *ev, GtkWidg
 
 	if (path != NULL)
 	{
-		gtk_image_set_from_stock(GTK_IMAGE(icon), GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON);
+		gtk_image_set_from_icon_name(GTK_IMAGE(icon), "gtk-yes", GTK_ICON_SIZE_BUTTON);
 		g_free(path);
 	}
 	else
-		gtk_image_set_from_stock(GTK_IMAGE(icon), GTK_STOCK_STOP, GTK_ICON_SIZE_BUTTON);
+		gtk_image_set_from_icon_name(GTK_IMAGE(icon), "gtk-stop", GTK_ICON_SIZE_BUTTON);
 
 	return FALSE;
 }
@@ -266,8 +264,8 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 	dialog = xfce_titled_dialog_new_with_buttons(
 		_("Dictionary"), GTK_WINDOW(parent),
-		GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
-		GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
+		GTK_DIALOG_DESTROY_WITH_PARENT,
+		"gtk-close", GTK_RESPONSE_OK,
 		NULL);
 
 	gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
@@ -277,10 +275,10 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		g_signal_connect(dialog, "response", G_CALLBACK(dict_prefs_dialog_response), dd);
 
 	notebook = gtk_notebook_new();
-	GTK_WIDGET_UNSET_FLAGS(notebook, GTK_CAN_FOCUS);
+	gtk_widget_set_can_focus (notebook, FALSE);
 	gtk_widget_show(notebook);
 	g_object_set_data(G_OBJECT(dialog), "notebook", notebook);
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook, FALSE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), notebook, FALSE, TRUE, 0);
 	gtk_container_set_border_width(GTK_CONTAINER(notebook), 5);
 
 	/*
@@ -288,13 +286,13 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 	 */
 #define PAGE_GENERAL /* only for navigation in Geany's symbol list ;-) */
 	{
-		GtkWidget *radio_button, *label, *table, *label4;
+		GtkWidget *radio_button, *label, *grid, *label4;
 		GtkWidget *color_link, *color_phon, *color_success, *color_error;
 		GSList *search_method;
 
-		notebook_vbox = gtk_vbox_new(FALSE, 2);
+		notebook_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
 		gtk_widget_show(notebook_vbox);
-		inner_vbox = gtk_vbox_new(FALSE, 5);
+		inner_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
 		gtk_container_set_border_width(GTK_CONTAINER(inner_vbox), 5);
 		gtk_widget_show(inner_vbox);
 		gtk_notebook_insert_page(GTK_NOTEBOOK(notebook),
@@ -302,7 +300,6 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 		label = gtk_label_new(_("<b>Default search method:</b>"));
 		gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 		gtk_widget_show(label);
 		gtk_box_pack_start(GTK_BOX(inner_vbox), label, FALSE, FALSE, 0);
 
@@ -344,7 +341,7 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 		label = gtk_label_new(_("<b>Colors:</b>"));
 		gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 1);
+		gtk_widget_set_valign(label, GTK_ALIGN_END);
 		gtk_widget_show(label);
 		gtk_box_pack_start(GTK_BOX(inner_vbox), label, FALSE, FALSE, 5);
 
@@ -352,58 +349,49 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		label2 = gtk_label_new(_("Phonetics:"));
 		label3 = gtk_label_new(_("Spelled correctly:"));
 		label4 = gtk_label_new(_("Spelled incorrectly:"));
-		color_link = gtk_color_button_new_with_color(dd->color_link);
-		color_phon = gtk_color_button_new_with_color(dd->color_phonetic);
-		color_error = gtk_color_button_new_with_color(dd->color_incorrect);
-		color_success = gtk_color_button_new_with_color(dd->color_correct);
+		color_link = gtk_color_button_new_with_rgba(dd->color_link);
+		color_phon = gtk_color_button_new_with_rgba(dd->color_phonetic);
+		color_error = gtk_color_button_new_with_rgba(dd->color_incorrect);
+		color_success = gtk_color_button_new_with_rgba(dd->color_correct);
 		g_signal_connect(color_link, "color-set", G_CALLBACK(color_set_cb), dd->color_link);
 		g_signal_connect(color_phon, "color-set", G_CALLBACK(color_set_cb), dd->color_phonetic);
 		g_signal_connect(color_error, "color-set", G_CALLBACK(color_set_cb), dd->color_incorrect);
 		g_signal_connect(color_success, "color-set", G_CALLBACK(color_set_cb), dd->color_correct);
 
-		table = gtk_table_new(2, 4, FALSE);
-		gtk_widget_show(table);
-		gtk_table_set_row_spacings(GTK_TABLE(table), 5);
-		gtk_table_set_col_spacings(GTK_TABLE(table), 5);
+		grid = gtk_grid_new();
+		gtk_grid_set_row_spacing(GTK_GRID(grid), 8);
+		gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
 
-		gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 5);
-		gtk_misc_set_alignment(GTK_MISC(label1), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label1, 0, 0, 1, 1);
+		gtk_widget_set_valign (label1, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label1, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), color_link, 1, 2, 0, 1,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), color_link, 1, 0, 1, 1);
+		gtk_widget_set_hexpand(color_link, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 0);
-		gtk_misc_set_alignment(GTK_MISC(label2), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label2, 0, 1, 1, 1);
+		gtk_widget_set_valign (label2, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label2, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), color_phon, 1, 2, 1, 2,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), color_phon, 1, 1, 1, 1);
+		gtk_widget_set_hexpand(color_phon, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), label3, 2, 3, 0, 1,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 5);
-		gtk_misc_set_alignment(GTK_MISC(label3), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label3, 2, 0, 1, 1);
+		gtk_widget_set_valign (label3, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label3, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), color_success, 3, 4, 0, 1,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), color_success, 3, 0, 1, 1);
+		gtk_widget_set_hexpand(color_success, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), label4, 2, 3, 1, 2,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 0);
-		gtk_misc_set_alignment(GTK_MISC(label4), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label4, 2, 1, 1, 1);
+		gtk_widget_set_valign (label4, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label4, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), color_error, 3, 4, 1, 2,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), color_error, 3, 1, 1, 1);
+		gtk_widget_set_hexpand(color_error, TRUE);
 
-		gtk_widget_show_all(table);
-		gtk_box_pack_start(GTK_BOX(inner_vbox), table, FALSE, FALSE, 0);
+		gtk_widget_show_all(grid);
+		gtk_box_pack_start(GTK_BOX(inner_vbox), grid, FALSE, FALSE, 0);
 
 
 		/* show panel entry check box */
@@ -413,7 +401,7 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 			label = gtk_label_new(_("<b>Panel Text Field:</b>"));
 			gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-			gtk_misc_set_alignment(GTK_MISC(label), 0, 1);
+			gtk_widget_set_valign(label, GTK_ALIGN_END);
 			gtk_widget_show(label);
 			gtk_box_pack_start(GTK_BOX(inner_vbox), label, FALSE, FALSE, 5);
 
@@ -437,7 +425,7 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 			gtk_widget_show(panel_entry_size_spinner);
 
-			pe_hbox = gtk_hbox_new(FALSE, 0);
+			pe_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
 			gtk_widget_show(pe_hbox);
 
 			gtk_box_pack_start(GTK_BOX(pe_hbox), panel_entry_size_label, FALSE, FALSE, 10);
@@ -458,12 +446,12 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 	 */
 #define PAGE_DICTD /* only for navigation in Geany's symbol list ;-) */
 	 {
-		GtkWidget *table, *button_get_list, *button_get_info;
+		GtkWidget *grid, *button_get_list, *button_get_info;
 		GtkWidget *server_entry, *port_spinner, *dict_combo;
 
-		notebook_vbox = gtk_vbox_new(FALSE, 2);
+		notebook_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
 		gtk_widget_show(notebook_vbox);
-		inner_vbox = gtk_vbox_new(FALSE, 5);
+		inner_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 		gtk_container_set_border_width(GTK_CONTAINER(inner_vbox), 5);
 		gtk_widget_show(inner_vbox);
 		gtk_notebook_insert_page(GTK_NOTEBOOK(notebook),
@@ -471,7 +459,6 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 		/* server address */
 		label1 = gtk_label_new_with_mnemonic(_("Server:"));
-		gtk_widget_show(label1);
 
 		server_entry = gtk_entry_new();
 		gtk_entry_set_max_length(GTK_ENTRY(server_entry), 256);
@@ -479,25 +466,21 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		{
 			gtk_entry_set_text(GTK_ENTRY(server_entry), dd->server);
 		}
-		gtk_widget_show(server_entry);
 
 		/* server port */
 		label2 = gtk_label_new_with_mnemonic(_("Server Port:"));
-		gtk_widget_show(label2);
 
 		port_spinner = gtk_spin_button_new_with_range(0.0, 65536.0, 1.0);
 		gtk_spin_button_set_value(GTK_SPIN_BUTTON(port_spinner), dd->port);
-		gtk_widget_show(port_spinner);
 
 		/* dictionary */
 		label3 = gtk_label_new_with_mnemonic(_("Dictionary:"));
-		gtk_widget_show(label3);
 
-		dict_combo = gtk_combo_box_new_text();
-		gtk_combo_box_append_text(GTK_COMBO_BOX(dict_combo), _("* (use all)"));
-		gtk_combo_box_append_text(GTK_COMBO_BOX(dict_combo),
+		dict_combo = gtk_combo_box_text_new();
+		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dict_combo), _("* (use all)"));
+		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dict_combo),
 											_("! (use all, stop after first match)"));
-		gtk_combo_box_append_text(GTK_COMBO_BOX(dict_combo), "----------------");
+		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dict_combo), "----------------");
 		if (dd->dictionary != NULL)
 		{
 			if (dd->dictionary[0] == '*')
@@ -506,72 +489,61 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 				gtk_combo_box_set_active(GTK_COMBO_BOX(dict_combo), 1);
 			else
 			{
-				gtk_combo_box_append_text(GTK_COMBO_BOX(dict_combo), dd->dictionary);
+				gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dict_combo), dd->dictionary);
 				gtk_combo_box_set_active(GTK_COMBO_BOX(dict_combo), 3);
 			}
 		}
 
-		gtk_widget_show(dict_combo);
 
 		g_object_set_data(G_OBJECT(dialog), "server_entry", server_entry);
 		g_object_set_data(G_OBJECT(dialog), "port_spinner", port_spinner);
 		g_object_set_data(G_OBJECT(dialog), "dict_combo", dict_combo);
 
-		button_get_list = gtk_button_new_from_stock("gtk-refresh");
+		button_get_list = gtk_button_new_from_icon_name("gtk-refresh", GTK_ICON_SIZE_BUTTON);
 		gtk_widget_show(button_get_list);
 		g_signal_connect(button_get_list, "clicked", G_CALLBACK(dict_dictd_get_list), dd);
 		g_object_set_data(G_OBJECT(button_get_list), "dict_combo", dict_combo);
 		g_object_set_data(G_OBJECT(button_get_list), "port_spinner", port_spinner);
 		g_object_set_data(G_OBJECT(button_get_list), "server_entry", server_entry);
 
-		button_get_info = gtk_button_new_from_stock("gtk-info");
+		button_get_info = gtk_button_new_from_icon_name("gtk-info", GTK_ICON_SIZE_BUTTON);
 		gtk_widget_show(button_get_info);
 		g_signal_connect(button_get_info, "clicked", G_CALLBACK(dict_dictd_get_information), dd);
 		g_object_set_data(G_OBJECT(button_get_info), "port_spinner", port_spinner);
 		g_object_set_data(G_OBJECT(button_get_info), "server_entry", server_entry);
 
 		/* put it all together */
-		table = gtk_table_new(3, 3, FALSE);
-		gtk_widget_show(table);
-		gtk_table_set_row_spacings(GTK_TABLE(table), 5);
-		gtk_table_set_col_spacings(GTK_TABLE(table), 5);
-
-		gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 5);
-		gtk_misc_set_alignment(GTK_MISC(label1), 1, 0);
-
-		gtk_table_attach(GTK_TABLE(table), server_entry, 1, 2, 0, 1,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
-
-		gtk_table_attach(GTK_TABLE(table), button_get_info, 2, 3, 0, 1,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
-
-		gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 0);
-		gtk_misc_set_alignment(GTK_MISC(label2), 1, 0);
-
-		gtk_table_attach(GTK_TABLE(table), port_spinner, 1, 2, 1, 2,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
-
-		gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 2, 3,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 0);
-		gtk_misc_set_alignment(GTK_MISC(label3), 1, 0);
-
-		gtk_table_attach(GTK_TABLE(table), dict_combo, 1, 2, 2, 3,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 0, 0);
-
-		gtk_table_attach(GTK_TABLE(table), button_get_list, 2, 3, 2, 3,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 5);
-
-		gtk_box_pack_start(GTK_BOX(inner_vbox), table, FALSE, FALSE, 0);
+		grid = gtk_grid_new();
+		gtk_grid_set_row_spacing (GTK_GRID(grid), 8);
+		gtk_grid_set_column_spacing (GTK_GRID(grid), 8);
+
+		gtk_grid_attach(GTK_GRID(grid), label1, 0, 0, 1, 1);
+		gtk_widget_set_valign (label1, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label1, GTK_ALIGN_END);
+
+		gtk_grid_attach(GTK_GRID(grid), server_entry, 1, 0, 1, 1);
+		gtk_widget_set_hexpand(server_entry, TRUE);
+
+		gtk_grid_attach(GTK_GRID(grid), button_get_info, 2, 0, 1, 1);
+
+		gtk_grid_attach(GTK_GRID(grid), label2, 0, 1, 1, 1);
+		gtk_widget_set_valign (label2, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label2, GTK_ALIGN_END);
+
+		gtk_grid_attach(GTK_GRID(grid), port_spinner, 1, 1, 1, 1);
+		gtk_widget_set_hexpand(port_spinner, TRUE);
+
+		gtk_grid_attach(GTK_GRID(grid), label3, 0, 2, 1, 1);
+		gtk_widget_set_valign (label3, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label3, GTK_ALIGN_END);
+
+		gtk_grid_attach(GTK_GRID(grid), dict_combo, 1, 2, 1, 1);
+		gtk_widget_set_hexpand(dict_combo, TRUE);
+
+		gtk_grid_attach(GTK_GRID(grid), button_get_list, 2, 2, 1, 1);
+
+		gtk_widget_show_all(grid);
+		gtk_box_pack_start(GTK_BOX(inner_vbox), grid, FALSE, FALSE, 0);
 		gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5);
 	}
 
@@ -582,9 +554,9 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 	{
 		GtkWidget *label, *web_entry_label, *web_entry, *web_entry_box, *web_dicts_table;
 
-		notebook_vbox = gtk_vbox_new(FALSE, 5);
+		notebook_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 		gtk_widget_show(notebook_vbox);
-		inner_vbox = gtk_vbox_new(FALSE, 5);
+		inner_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 		gtk_container_set_border_width(GTK_CONTAINER(inner_vbox), 5);
 		gtk_widget_show(inner_vbox);
 		gtk_notebook_insert_page(GTK_NOTEBOOK(notebook),
@@ -592,7 +564,6 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 
 		label = gtk_label_new(_("<b>Web search URL:</b>"));
 		gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 		gtk_widget_show(label);
 		gtk_box_pack_start(GTK_BOX(inner_vbox), label, FALSE, FALSE, 0);
 
@@ -603,7 +574,7 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 			gtk_entry_set_text(GTK_ENTRY(web_entry), dd->web_url);
 		gtk_widget_show(web_entry);
 
-		web_entry_box = gtk_hbox_new(FALSE, 0);
+		web_entry_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 		gtk_widget_show(web_entry_box);
 
 		web_dicts_table = create_web_dicts_table(web_entry);
@@ -617,7 +588,6 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		g_object_set_data(G_OBJECT(dialog), "web_entry", web_entry);
 
 		label1 = xfd_wrap_label_new(_("Enter the URL of a web site which offers translation or dictionary services. Use {word} as placeholder for the searched word."));
-		gtk_misc_set_alignment(GTK_MISC(label1), 0, 0);
 		gtk_widget_show(label1);
 		gtk_box_pack_start(GTK_BOX(inner_vbox), label1, FALSE, FALSE, 0);
 		gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5);
@@ -628,13 +598,11 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 	 */
 #define PAGE_SPELL /* only for navigation in Geany's symbol list ;-) */
 	{
-		GtkWidget *table, *label_help, *spell_entry, *spell_combo, *button_refresh, *image, *icon;
-		GtkListStore *store;
-		GtkCellRenderer *renderer;
+		GtkWidget *grid, *label_help, *spell_entry, *spell_combo, *button_refresh, *icon;
 
-		notebook_vbox = gtk_vbox_new(FALSE, 5);
+		notebook_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 		gtk_widget_show(notebook_vbox);
-		inner_vbox = gtk_vbox_new(FALSE, 5);
+		inner_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 		gtk_container_set_border_width(GTK_CONTAINER(inner_vbox), 5);
 		gtk_widget_show(inner_vbox);
 		gtk_notebook_insert_page(GTK_NOTEBOOK(notebook),
@@ -666,21 +634,14 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		label2 = gtk_label_new_with_mnemonic(_("Dictionary:"));
 		gtk_widget_show(label2);
 
-		store = gtk_list_store_new(1, G_TYPE_STRING);
-		spell_combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+		spell_combo = gtk_combo_box_text_new ();
 		g_object_set_data(G_OBJECT(spell_combo), "spell_entry", spell_entry);
 
-		renderer = gtk_cell_renderer_text_new();
-		gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(spell_combo), renderer, TRUE);
-		gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(spell_combo), renderer, "text", 0);
-
 		dict_spell_get_dictionaries(dd, spell_combo);
 		g_signal_connect(spell_combo, "changed", G_CALLBACK(spell_combo_changed_cb), dd);
 		gtk_widget_show(spell_combo);
 
-		button_refresh = gtk_button_new();
-		image = gtk_image_new_from_stock("gtk-refresh", GTK_ICON_SIZE_BUTTON);
-		gtk_button_set_image(GTK_BUTTON(button_refresh), image);
+		button_refresh = gtk_button_new_from_icon_name("gtk-refresh", GTK_ICON_SIZE_BUTTON);
 		gtk_widget_show(button_refresh);
 		g_object_set_data(G_OBJECT(button_refresh), "spell_combo", spell_combo);
 		g_signal_connect(button_refresh, "clicked", G_CALLBACK(button_dict_refresh_cb), dd);
@@ -689,46 +650,36 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
 		g_object_set_data(G_OBJECT(spell_entry), "spell_combo", spell_combo);
 		g_object_set_data(G_OBJECT(dialog), "spell_combo", spell_combo);
 		g_object_set_data(G_OBJECT(dialog), "spell_entry", spell_entry);
-		g_object_unref(store);
 
 		spell_entry_focus_cb(GTK_ENTRY(spell_entry), NULL, icon); /* initially set the icon */
 
-		table = gtk_table_new(3, 3, FALSE);
-		gtk_widget_show(table);
-		gtk_table_set_row_spacings(GTK_TABLE(table), 5);
-		gtk_table_set_col_spacings(GTK_TABLE(table), 5);
+		grid = gtk_grid_new();
+		gtk_widget_show(grid);
+		gtk_grid_set_row_spacing(GTK_GRID(grid), 8);
+		gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
 
-		gtk_table_attach(GTK_TABLE(table), label_help, 0, 3, 0, 1,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), label_help, 0, 0, 3, 1);
+		gtk_widget_set_hexpand(label_help, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 1, 2,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 5);
-		gtk_misc_set_alignment(GTK_MISC(label1), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label1, 0, 1, 1, 1);
+		gtk_widget_set_valign (label1, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label1, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), spell_entry, 1, 2, 1, 2,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), spell_entry, 1, 1, 1, 1);
+		gtk_widget_set_hexpand(spell_entry, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), icon, 2, 3, 1, 2,
-						(GtkAttachOptions) (0),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), icon, 2, 1, 1, 1);
 
-		gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 2, 3,
-						(GtkAttachOptions) (GTK_FILL),
-						(GtkAttachOptions) (0), 5, 0);
-		gtk_misc_set_alignment(GTK_MISC(label2), 1, 0);
+		gtk_grid_attach(GTK_GRID(grid), label2, 0, 2, 1, 1);
+		gtk_widget_set_valign (label2, GTK_ALIGN_CENTER);
+		gtk_widget_set_halign (label2, GTK_ALIGN_END);
 
-		gtk_table_attach(GTK_TABLE(table), spell_combo, 1, 2, 2, 3,
-						(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), spell_combo, 1, 2, 1, 1);
+		gtk_widget_set_hexpand(spell_combo, TRUE);
 
-		gtk_table_attach(GTK_TABLE(table), button_refresh, 2, 3, 2, 3,
-						(GtkAttachOptions) (0),
-						(GtkAttachOptions) (0), 5, 5);
+		gtk_grid_attach(GTK_GRID(grid), button_refresh, 2, 2, 1, 1);
 
-		gtk_box_pack_start(GTK_BOX(inner_vbox), table, FALSE, FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(inner_vbox), grid, FALSE, FALSE, 0);
 		gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5);
 	}
 
diff --git a/lib/resources.xml b/lib/resources.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36b515f5032c23058d7b5fcf0673108b9362c617
--- /dev/null
+++ b/lib/resources.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+    <gresource prefix="/org/xfce/dict">
+        <file alias="icon">xfce4-dict.svg</file>
+    </gresource>
+</gresources>
diff --git a/lib/speedreader.c b/lib/speedreader.c
index 59b422653e5f13cfb6096eae70e1f2acadfdbb66..ecf4b977c0f8a7e422eb226bd71f93f37dd31d89 100644
--- a/lib/speedreader.c
+++ b/lib/speedreader.c
@@ -251,7 +251,8 @@ static gchar *sr_replace_unicode_characters(const gchar *text, gboolean mark_par
 static void xfd_speed_reader_set_window_title(XfdSpeedReader *dialog, gint state)
 {
 	gchar *title, *state_str, *name;
-	const gchar *button_label = GTK_STOCK_MEDIA_STOP;
+	const gchar *button_label = _("S_top");
+	const gchar *button_image = "gtk-media-stop";
 	gboolean pausable = TRUE;
 	XfdSpeedReaderPrivate *priv = XFD_SPEED_READER_GET_PRIVATE(dialog);
 
@@ -262,7 +263,8 @@ static void xfd_speed_reader_set_window_title(XfdSpeedReader *dialog, gint state
 			break;
 		case XSR_STATE_FINISHED:
 			state_str = _("Finished");
-			button_label = GTK_STOCK_GO_BACK;
+			button_label = _("_Back");
+			button_image = "gtk-go-back";
 			pausable = FALSE;
 			break;
 		default:
@@ -274,6 +276,8 @@ static void xfd_speed_reader_set_window_title(XfdSpeedReader *dialog, gint state
 
 	gtk_window_set_title(GTK_WINDOW(dialog), title);
 	gtk_button_set_label(GTK_BUTTON(priv->button_stop), button_label);
+	gtk_button_set_image(GTK_BUTTON(priv->button_stop),
+		gtk_image_new_from_icon_name(button_image, GTK_ICON_SIZE_MENU));
 	gtk_widget_set_sensitive(priv->button_pause, pausable);
 
 	g_free(title);
@@ -350,9 +354,10 @@ static void sr_start(XfdSpeedReader *dialog)
 	gint wpm, grouping;
 	gint interval;
 	const gchar *fontname;
-	PangoFontDescription *pfd;
 	gchar *text, *cleaned_text;
 	GtkTextIter start, end;
+	gchar *css;
+	GtkCssProvider *provider;
 
 	/* clear the label text */
 	gtk_label_set_text(GTK_LABEL(priv->display_label), NULL);
@@ -376,9 +381,15 @@ static void sr_start(XfdSpeedReader *dialog)
 
 	/* set the font */
 	fontname = gtk_font_button_get_font_name(GTK_FONT_BUTTON(priv->button_font));
-	pfd = pango_font_description_from_string(fontname);
-	gtk_widget_modify_font(priv->display_label, pfd);
-	pango_font_description_free(pfd);
+
+	css = g_strdup_printf("* { font: %s; }", fontname);
+	provider = gtk_css_provider_new ();
+	gtk_css_provider_load_from_data (provider, css, -1, NULL);
+	gtk_style_context_add_provider (
+			GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (priv->display_label))),
+			GTK_STYLE_PROVIDER(provider),
+			GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+	g_free(css);
 
 	/* word grouping */
 	grouping = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(priv->spin_grouping));
@@ -445,13 +456,13 @@ static void sr_pause(XfdSpeedReader *dialog, gboolean paused)
 	if (paused)
 	{
 		gtk_button_set_image(GTK_BUTTON(priv->button_pause),
-			gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_MENU));
+			gtk_image_new_from_icon_name("gtk-media-play", GTK_ICON_SIZE_MENU));
 		gtk_button_set_label(GTK_BUTTON(priv->button_pause), XFD_TITLE_RESUME);
 	}
 	else
 	{
 		gtk_button_set_image(GTK_BUTTON(priv->button_pause),
-			gtk_image_new_from_stock(GTK_STOCK_MEDIA_PAUSE, GTK_ICON_SIZE_MENU));
+			gtk_image_new_from_icon_name("gtk-media-pause", GTK_ICON_SIZE_MENU));
 		gtk_button_set_label(GTK_BUTTON(priv->button_pause), XFD_TITLE_PAUSE);
 	}
 	/* set the new value */
@@ -504,8 +515,8 @@ static void sr_open_clicked_cb(GtkButton *button, XfdSpeedReader *window)
 	dialog = gtk_file_chooser_dialog_new(_("Choose a file to load"),
 		GTK_WINDOW(window),
 		GTK_FILE_CHOOSER_ACTION_OPEN,
-		GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-		GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+		"gtk-cancel", GTK_RESPONSE_CANCEL,
+		"gtk-open", GTK_RESPONSE_ACCEPT,
 		NULL);
 
 	gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
@@ -576,29 +587,31 @@ static void xfd_speed_reader_init(XfdSpeedReader *dialog)
 	gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
 	gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 330);
 	gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
-	gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
 	gtk_widget_set_name(GTK_WIDGET(dialog), "Xfce4Dict");
 
 	/* First page */
 	label_intro = xfd_wrap_label_new(
 		_("This is an easy speed reading utility to help train you to read faster. "
 		  "It does this by flashing words at a rapid rate on the screen."));
+	gtk_label_set_line_wrap ( GTK_LABEL (label_intro), TRUE);
 
 	label_words = gtk_label_new_with_mnemonic(_("_Words per Minute:"));
-	gtk_misc_set_alignment(GTK_MISC(label_words), 1, 0.5);
+	gtk_widget_set_halign(label_words, GTK_ALIGN_END);
+	gtk_widget_set_valign(label_words, GTK_ALIGN_CENTER);
 
 	priv->spin_wpm = gtk_spin_button_new_with_range(5.0, 10000.0, 5);
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label_words), priv->spin_wpm);
 
 	priv->check_mark_paragraphs = gtk_check_button_new_with_mnemonic(_("_Mark Paragraphs"));
 
-	hbox_words = gtk_hbox_new(FALSE, 0);
+	hbox_words = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 	gtk_box_pack_start(GTK_BOX(hbox_words), label_words, FALSE, FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(hbox_words), priv->spin_wpm, FALSE, FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(hbox_words), priv->check_mark_paragraphs, FALSE, FALSE, 12);
 
 	label_grouping = gtk_label_new_with_mnemonic(_("Word _Grouping:"));
-	gtk_misc_set_alignment(GTK_MISC(label_grouping), 1, 0.5);
+	gtk_widget_set_halign(label_grouping, GTK_ALIGN_END);
+	gtk_widget_set_valign(label_grouping, GTK_ALIGN_CENTER);
 
 	label_grouping_desc = gtk_label_new(NULL);
 
@@ -608,18 +621,19 @@ static void xfd_speed_reader_init(XfdSpeedReader *dialog)
 		G_CALLBACK(sr_spin_grouping_changed_cb), label_grouping_desc);
 	sr_spin_grouping_changed_cb(GTK_SPIN_BUTTON(priv->spin_grouping), GTK_LABEL(label_grouping_desc));
 
-	hbox_grouping = gtk_hbox_new(FALSE, 0);
+	hbox_grouping = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 	gtk_box_pack_start(GTK_BOX(hbox_grouping), label_grouping, FALSE, FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(hbox_grouping), priv->spin_grouping, FALSE, FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(hbox_grouping), label_grouping_desc, FALSE, FALSE, 6);
 
 	label_font = gtk_label_new_with_mnemonic(_("_Font Size:"));
-	gtk_misc_set_alignment(GTK_MISC(label_font), 1, 0.5);
+	gtk_widget_set_halign(label_font, GTK_ALIGN_END);
+	gtk_widget_set_valign(label_font, GTK_ALIGN_CENTER);
 
 	priv->button_font = gtk_font_button_new();
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label_font), priv->button_font);
 
-	hbox_font = gtk_hbox_new(FALSE, 0);
+	hbox_font = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 	gtk_box_pack_start(GTK_BOX(hbox_font), label_font, FALSE, FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(hbox_font), priv->button_font, FALSE, FALSE, 6);
 
@@ -644,57 +658,42 @@ static void xfd_speed_reader_init(XfdSpeedReader *dialog)
 					GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	gtk_container_add(GTK_CONTAINER(swin), textview);
 
-	button_open = gtk_button_new();
-	gtk_button_set_image(GTK_BUTTON(button_open),
-		gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
+	button_open = gtk_button_new_from_icon_name("gtk-open", GTK_ICON_SIZE_MENU);
 	g_signal_connect(button_open, "clicked", G_CALLBACK(sr_open_clicked_cb), dialog);
-#if GTK_CHECK_VERSION(2, 12, 0)
 	gtk_widget_set_tooltip_text(button_open, _("Load the contents of a file"));
-#endif
 
-	button_paste = gtk_button_new();
-	gtk_button_set_image(GTK_BUTTON(button_paste),
-		gtk_image_new_from_stock(GTK_STOCK_PASTE, GTK_ICON_SIZE_MENU));
+	button_paste = gtk_button_new_from_icon_name("gtk-paste", GTK_ICON_SIZE_MENU);
 	g_signal_connect(button_paste, "clicked", G_CALLBACK(sr_paste_clicked_cb), priv->buffer);
-#if GTK_CHECK_VERSION(2, 12, 0)
 	gtk_widget_set_tooltip_text(button_paste,
 		_("Clear the contents of the text field and paste the contents of the clipboard"));
-#endif
 
-	button_clear = gtk_button_new();
-	gtk_button_set_image(GTK_BUTTON(button_clear),
-		gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU));
+	button_clear = gtk_button_new_from_icon_name("gtk-clear", GTK_ICON_SIZE_MENU);
 	g_signal_connect(button_clear, "clicked", G_CALLBACK(sr_clear_clicked_cb), priv->buffer);
-#if GTK_CHECK_VERSION(2, 12, 0)
 	gtk_widget_set_tooltip_text(button_clear, _("Clear the contents of the text field"));
-#endif
 
-	vbox_text_buttons = gtk_vbox_new(FALSE, 6);
+	vbox_text_buttons = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 	gtk_box_pack_start(GTK_BOX(vbox_text_buttons), button_open, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(vbox_text_buttons), button_paste, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(vbox_text_buttons), button_clear, FALSE, FALSE, 0);
 
-	hbox_text = gtk_hbox_new(FALSE, 0);
+	hbox_text = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 	gtk_box_pack_start(GTK_BOX(hbox_text), swin, TRUE, TRUE, 0);
 	gtk_box_pack_start(GTK_BOX(hbox_text), vbox_text_buttons, FALSE, FALSE, 3);
 
-	priv->button_pause = gtk_dialog_add_button(GTK_DIALOG(dialog), _("P_ause"), RESPONSE_PAUSE);
+	priv->button_pause = gtk_dialog_add_button(GTK_DIALOG(dialog), "gtk-media-pause", RESPONSE_PAUSE);
 	priv->button_start = gtk_dialog_add_button(GTK_DIALOG(dialog), _("_Start"), RESPONSE_START);
-	priv->button_stop = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_MEDIA_STOP, RESPONSE_STOP);
-	gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+	priv->button_stop = gtk_dialog_add_button(GTK_DIALOG(dialog), "gtk-media-stop", RESPONSE_STOP);
+	gtk_dialog_add_button(GTK_DIALOG(dialog), "gtk-close", GTK_RESPONSE_CLOSE);
 
 	gtk_widget_hide(priv->button_pause);
 	gtk_widget_hide(priv->button_stop);
 
 	gtk_button_set_image(GTK_BUTTON(priv->button_start),
-		gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_MENU));
-	gtk_button_set_image(GTK_BUTTON(priv->button_pause),
-		gtk_image_new_from_stock(GTK_STOCK_MEDIA_PAUSE, GTK_ICON_SIZE_MENU));
-	gtk_button_set_use_stock(GTK_BUTTON(priv->button_pause), TRUE);
+		gtk_image_new_from_icon_name("gtk-media-play", GTK_ICON_SIZE_MENU));
 
 	g_signal_connect(dialog, "response", G_CALLBACK(xfd_speed_reader_response_cb), NULL);
 
-	vbox = gtk_vbox_new(FALSE, 6);
+	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 	gtk_box_pack_start(GTK_BOX(vbox), label_intro, FALSE, FALSE, 5);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox_words, FALSE, FALSE, 3);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox_grouping, FALSE, FALSE, 3);
@@ -707,7 +706,7 @@ static void xfd_speed_reader_init(XfdSpeedReader *dialog)
 	priv->display_label = gtk_label_new(NULL);
 	gtk_widget_show(priv->display_label);
 
-	vbox = gtk_vbox_new(FALSE, 6);
+	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 	gtk_box_pack_start(GTK_BOX(vbox), priv->display_label, TRUE, TRUE, 6);
 
 	priv->second_page = vbox;
@@ -716,8 +715,8 @@ static void xfd_speed_reader_init(XfdSpeedReader *dialog)
 
 	gtk_widget_grab_focus(textview);
 
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), priv->first_page, TRUE, TRUE, 6);
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), priv->second_page, TRUE, TRUE, 6);
+	gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), priv->first_page, TRUE, TRUE, 6);
+	gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), priv->second_page, TRUE, TRUE, 6);
 
 	xfd_speed_reader_set_window_title(dialog, XSR_STATE_INITIAL);
 }
@@ -738,4 +737,3 @@ GtkWidget *xfd_speed_reader_new(GtkWindow *parent, DictData *dd)
 
 	return dialog;
 }
-
diff --git a/lib/spell.c b/lib/spell.c
index 00c4bc825a0b00a610abc687e74308a25fb4f4c1..8d7b5cad3a01ef961d610a7bf4298325e38d9c89 100644
--- a/lib/spell.c
+++ b/lib/spell.c
@@ -339,19 +339,18 @@ static gchar **get_aspell_dicts(const gchar *str)
 
 void dict_spell_get_dictionaries(DictData *dd, GtkWidget *spell_combo)
 {
-	GtkTreeModel *model;
+	GtkComboBoxText *combo;
 	const gchar *entry_cmd = gtk_entry_get_text(
 		GTK_ENTRY(g_object_get_data(G_OBJECT(spell_combo), "spell_entry")));
 
-	model = gtk_combo_box_get_model(GTK_COMBO_BOX(spell_combo));
-	gtk_list_store_clear(GTK_LIST_STORE(model));
+	combo = GTK_COMBO_BOX_TEXT (spell_combo);
+	gtk_combo_box_text_remove_all (combo);
 
 	if (*entry_cmd != '\0')
 	{
 		gchar *tmp = NULL;
 		gchar *cmd, *locale_cmd;
 		gboolean use_enchant = FALSE;
-		GtkTreeIter iter;
 
 		if (strstr(entry_cmd, "enchant") != NULL)
 		{
@@ -371,6 +370,7 @@ void dict_spell_get_dictionaries(DictData *dd, GtkWidget *spell_combo)
 		{
 			gchar **list;
 			guint i, len;
+			guint item_count = 0;
 
 			list = (use_enchant) ? get_enchant_dicts(tmp) : get_aspell_dicts(tmp);
 			len = g_strv_length(list);
@@ -378,10 +378,10 @@ void dict_spell_get_dictionaries(DictData *dd, GtkWidget *spell_combo)
 			{
 				if (NZV(list[i]))
 				{
-					gtk_list_store_append(GTK_LIST_STORE(model), &iter);
-					gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, list[i], -1);
+					gtk_combo_box_text_append_text (combo, list[i]);
 					if (strcmp(dd->spell_dictionary, list[i]) == 0)
-						gtk_combo_box_set_active_iter(GTK_COMBO_BOX(spell_combo), &iter);
+						gtk_combo_box_set_active(GTK_COMBO_BOX(combo), item_count);
+					item_count++;
 				}
 			}
 			g_strfreev(list);
diff --git a/lib/wraplabel.c b/lib/wraplabel.c
index f7f9fb93fee502648f1a44900450512b617763eb..b1d10cf428b9f4e1460e148595c55001d28b5ac9 100644
--- a/lib/wraplabel.c
+++ b/lib/wraplabel.c
@@ -55,13 +55,16 @@ G_DEFINE_TYPE(XfdWrapLabel, xfd_wrap_label, GTK_TYPE_LABEL);
 static void xfd_wrap_label_size_request		(GtkWidget *widget, GtkRequisition *req);
 static void xfd_wrap_label_size_allocate	(GtkWidget *widget, GtkAllocation *alloc);
 static void xfd_wrap_label_set_wrap_width	(GtkWidget *widget, gsize width);
+static void xfd_wrap_label_get_preferred_width	(GtkWidget *widget, gint *minimal_width, gint *natural_width);
+static void xfd_wrap_label_get_preferred_height	(GtkWidget *widget, gint *minimal_height, gint *natural_height);
 
 
 static void xfd_wrap_label_class_init(XfdWrapLabelClass *klass)
 {
 	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
 
-	widget_class->size_request = xfd_wrap_label_size_request;
+	widget_class->get_preferred_width = xfd_wrap_label_get_preferred_width;
+	widget_class->get_preferred_height = xfd_wrap_label_get_preferred_height;
 	widget_class->size_allocate = xfd_wrap_label_size_allocate;
 
 	g_type_class_add_private(klass, sizeof (XfdWrapLabelPrivate));
@@ -121,6 +124,25 @@ static void xfd_wrap_label_size_allocate(GtkWidget *widget, GtkAllocation *alloc
 }
 
 
+static void
+xfd_wrap_label_get_preferred_width (GtkWidget *widget, gint *minimal_width, gint *natural_width)
+{
+  GtkRequisition requisition;
+
+  xfd_wrap_label_size_request (widget, &requisition);
+  *minimal_width = *natural_width = requisition.width;
+}
+
+static void
+xfd_wrap_label_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height)
+{
+  GtkRequisition requisition;
+
+  xfd_wrap_label_size_request (widget, &requisition);
+  *minimal_height = *natural_height = requisition.height;
+}
+
+
 void xfd_wrap_label_set_text(GtkLabel *label, const gchar *text)
 {
 	XfdWrapLabelPrivate *priv = XFD_WRAP_LABEL_GET_PRIVATE(label);
@@ -138,7 +160,6 @@ GtkWidget *xfd_wrap_label_new(const gchar *text)
 		gtk_label_set_text(GTK_LABEL(l), text);
 
 	pango_layout_set_wrap(gtk_label_get_layout(GTK_LABEL(l)), PANGO_WRAP_WORD_CHAR);
-	gtk_misc_set_alignment(GTK_MISC(l), 0.0, 0.0);
 
 	return l;
 }
diff --git a/panel-plugin/xfce4-dict-plugin.c b/panel-plugin/xfce4-dict-plugin.c
index 9d79df624ba0500a48b020452bb101e7c5e3b16b..88f3b50e501d888eb3d0b57ffb14c28b5bd048e4 100644
--- a/panel-plugin/xfce4-dict-plugin.c
+++ b/panel-plugin/xfce4-dict-plugin.c
@@ -36,6 +36,7 @@
 #include <string.h>
 
 #include "libdict.h"
+#include "resources.h"
 
 
 typedef struct
@@ -43,8 +44,6 @@ typedef struct
 	DictData *dd;
 	XfcePanelPlugin *plugin;
 
-	GtkTooltips *tooltips;
-
 	GtkWidget *panel_button;
 	GtkWidget *panel_button_image;
 	GtkWidget *box;
@@ -53,46 +52,24 @@ typedef struct
 
 static gboolean entry_is_dirty = FALSE;
 
-static GdkPixbuf *dict_plugin_load_and_scale(const guint8 *data, gint dstw, gint dsth)
-{
-	GdkPixbuf *pb, *pb_scaled;
-	gint pb_w, pb_h;
-
-	pb = gdk_pixbuf_new_from_inline(-1, data, FALSE, NULL);
-	pb_w = gdk_pixbuf_get_width(pb);
-	pb_h = gdk_pixbuf_get_height(pb);
-
-	if (dstw == pb_w && dsth == pb_h)
-		return(pb);
-	else if (dstw < 0)
-		dstw = (dsth * pb_w) / pb_h;
-	else if (dsth < 0)
-		dsth = (dstw * pb_h) / pb_w;
-
-	pb_scaled = gdk_pixbuf_scale_simple(pb, dstw, dsth, GDK_INTERP_HYPER);
-	g_object_unref(G_OBJECT(pb));
-
-	return pb_scaled;
-}
-
 
 static gboolean dict_plugin_panel_set_size(XfcePanelPlugin *plugin, gint wsize, DictPanelData *dpd)
 {
+  GtkBorder border;
+	GtkStyleContext *context;
 	gint size;
 	gint bsize = wsize;
+	bsize /= xfce_panel_plugin_get_nrows (plugin);
 
-#if defined(LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION(4,9,0)
-	bsize /= xfce_panel_plugin_get_nrows(plugin);
-#endif
-
-	size = bsize - 2 - (2 * MAX(dpd->panel_button->style->xthickness,
-									 dpd->panel_button->style->ythickness));
+	context = gtk_widget_get_style_context (GTK_WIDGET (dpd->panel_button));
+	gtk_style_context_get_border (context, gtk_widget_get_state_flags (GTK_WIDGET (dpd->panel_button)), &border);
+	size = bsize - 2 * MAX (border.left + border.right, border.top + border.bottom);
 
-	dpd->dd->icon = dict_plugin_load_and_scale(dict_gui_get_icon_data(), size, -1);
+	dpd->dd->icon = gdk_pixbuf_new_from_resource_at_scale("/org/xfce/dict/icon",
+										size, -1, TRUE, NULL);
 
 	gtk_image_set_from_pixbuf(GTK_IMAGE(dpd->panel_button_image), dpd->dd->icon);
 
-#if defined(LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION(4,9,0)
 	if (dpd->dd->show_panel_entry &&
 		xfce_panel_plugin_get_mode(dpd->plugin) != XFCE_PANEL_PLUGIN_MODE_VERTICAL)
 	{
@@ -109,16 +86,6 @@ static gboolean dict_plugin_panel_set_size(XfcePanelPlugin *plugin, gint wsize,
 		gtk_widget_hide(dpd->dd->panel_entry);
 		xfce_panel_plugin_set_small(plugin, TRUE);
 	}
-#else
-	if (dpd->dd->show_panel_entry &&
-		xfce_panel_plugin_get_orientation(plugin) == GTK_ORIENTATION_HORIZONTAL)
-	{
-		gtk_widget_show(dpd->dd->panel_entry);
-		gtk_widget_set_size_request(dpd->dd->panel_entry, dpd->dd->panel_entry_size, -1);
-	}
-	else
-		gtk_widget_hide(dpd->dd->panel_entry);
-#endif
 
 	gtk_widget_set_size_request(dpd->panel_button, bsize, bsize);
 
@@ -126,39 +93,15 @@ static gboolean dict_plugin_panel_set_size(XfcePanelPlugin *plugin, gint wsize,
 }
 
 
-/* TODO remove me, unused
-static void dict_toggle_main_window(GtkWidget *button, DictData *dd)
-{
-	if (GTK_WIDGET_VISIBLE(dd->window))
-		gtk_widget_hide(dd->window);
-	else
-	{
-		const gchar *panel_text = "";
-
-		if (dd->panel_entry != NULL)
-			panel_text = gtk_entry_get_text(GTK_ENTRY(dd->panel_entry));
-
-		dict_show_main_window(dd);
-		if (NZV(panel_text))
-		{
-			dict_search_word(dd, panel_text);
-			gtk_entry_set_text(GTK_ENTRY(dd->main_entry), panel_text);
-		}
-		gtk_widget_grab_focus(dd->main_entry);
-	}
-}
-*/
-
-
 static void dict_plugin_panel_button_clicked(GtkWidget *button, DictPanelData *dpd)
 {
-	if (GTK_WIDGET_VISIBLE(dpd->dd->window))
+	if (gtk_widget_get_visible(GTK_WIDGET(dpd->dd->window)))
 	{
 		/* we must query geometry settings here because position and maximized state
 		 * doesn't work when the window is hidden */
 		dict_gui_query_geometry(dpd->dd);
 
-		gtk_widget_hide(dpd->dd->window);
+		gtk_widget_hide(GTK_WIDGET(dpd->dd->window));
 	}
 	else
 	{
@@ -181,37 +124,6 @@ static void dict_plugin_panel_button_clicked(GtkWidget *button, DictPanelData *d
 }
 
 
-/* Handle user messages (xfce4-dict) */
-static gboolean dict_plugin_message_received(GtkWidget *w, GdkEventClient *ev, DictPanelData *dpd)
-{
-	if (ev->data_format == 8 && strncmp(ev->data.b, "xfdict", 6) == 0)
-	{
-		gchar flags = ev->data.b[6];
-		gchar *tts = ev->data.b + 7;
-
-		dpd->dd->mode_in_use = dict_set_search_mode_from_flags(dpd->dd->mode_in_use, flags);
-
-		if (NZV(tts))
-		{
-			gtk_entry_set_text(GTK_ENTRY(dpd->dd->main_entry), tts);
-			dict_search_word(dpd->dd, tts);
-		}
-		else if (flags & DICT_FLAGS_FOCUS_PANEL_ENTRY && dpd->dd->show_panel_entry)
-		{
-			xfce_panel_plugin_focus_widget(dpd->plugin, dpd->dd->panel_entry);
-		}
-		else
-		{
-			dict_plugin_panel_button_clicked(NULL, dpd);
-		}
-
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-
 static gboolean dict_plugin_set_selection(DictPanelData *dpd)
 {
 	GdkScreen *gscreen;
@@ -222,23 +134,21 @@ static gboolean dict_plugin_set_selection(DictPanelData *dpd)
 
 	win = gtk_invisible_new();
 	gtk_widget_realize(win);
-	xwin = GDK_WINDOW_XID(GTK_WIDGET(win)->window);
+	xwin = GDK_WINDOW_XID(gtk_widget_get_window (GTK_WIDGET(win)));
 
 	gscreen = gtk_widget_get_screen(win);
 	g_snprintf(selection_name, sizeof (selection_name),
 		XFCE_DICT_SELECTION"%d", gdk_screen_get_number(gscreen));
-	selection_atom = XInternAtom(GDK_DISPLAY(), selection_name, False);
+	selection_atom = XInternAtom(gdk_x11_display_get_xdisplay(gdk_display_get_default()), selection_name, False);
 
-	if (XGetSelectionOwner(GDK_DISPLAY(), selection_atom))
+	if (XGetSelectionOwner(gdk_x11_display_get_xdisplay(gdk_display_get_default()), selection_atom))
 	{
 		gtk_widget_destroy(win);
 		return FALSE;
 	}
 
-	XSelectInput(GDK_DISPLAY(), xwin, PropertyChangeMask);
-	XSetSelectionOwner(GDK_DISPLAY(), selection_atom, xwin, GDK_CURRENT_TIME);
-
-	g_signal_connect(win, "client-event", G_CALLBACK(dict_plugin_message_received), dpd);
+	XSelectInput(gdk_x11_display_get_xdisplay(gdk_display_get_default()), xwin, PropertyChangeMask);
+	XSetSelectionOwner(gdk_x11_display_get_xdisplay(gdk_display_get_default()), selection_atom, xwin, GDK_CURRENT_TIME);
 
 	return TRUE;
 }
@@ -257,7 +167,7 @@ static void dict_plugin_free_data(XfcePanelPlugin *plugin, DictPanelData *dpd)
 
 	/* if the main window is visible, query geometry as usual, if it is hidden the geometry
 	 * was queried when it was hidden */
-	if (GTK_WIDGET_VISIBLE(dpd->dd->window))
+	if (gtk_widget_get_visible(GTK_WIDGET(dpd->dd->window)))
 	{
 		dict_gui_query_geometry(dpd->dd);
 	}
@@ -265,28 +175,17 @@ static void dict_plugin_free_data(XfcePanelPlugin *plugin, DictPanelData *dpd)
 	if (dialog != NULL)
 		gtk_widget_destroy(dialog);
 
-	gtk_object_sink(GTK_OBJECT(dpd->tooltips));
-
 	dict_free_data(dpd->dd);
 	g_free(dpd);
 }
 
 
-#if defined(LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION(4,9,0)
 static void dict_plugin_panel_change_mode(XfcePanelPlugin *plugin,
 												 XfcePanelPluginMode mode, DictPanelData *dpd)
 {
 	dict_plugin_panel_set_size(plugin, xfce_panel_plugin_get_size(plugin), dpd);
 }
 
-#else
-static void dict_plugin_panel_change_orientation(XfcePanelPlugin *plugin,
-												 GtkOrientation orientation, DictPanelData *dpd)
-{
-	dict_plugin_panel_set_size(plugin, xfce_panel_plugin_get_size(plugin), dpd);
-}
-#endif
-
 
 static void dict_plugin_style_set(XfcePanelPlugin *plugin, gpointer unused, DictPanelData *dpd)
 {
@@ -381,7 +280,7 @@ static gboolean entry_buttonpress_cb(GtkWidget *entry, GdkEventButton *event, Di
 	toplevel = gtk_widget_get_toplevel(entry);
 
 	/* Grab entry focus if possible */
-	if (event->button != 3 && toplevel && toplevel->window)
+	if (event->button != 3 && toplevel && gtk_widget_get_window (toplevel))
 		xfce_panel_plugin_focus_widget(dpd->plugin, entry);
 
 	return FALSE;
@@ -397,11 +296,11 @@ static void entry_changed_cb(GtkEditable *editable, DictPanelData *dpd)
 static void dict_plugin_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context,
 		gint x, gint y, GtkSelectionData *data, guint info, guint ltime, DictPanelData *dpd)
 {
-	if ((data != NULL) && (data->length >= 0) && (data->format == 8))
+	if ((data != NULL) && (gtk_selection_data_get_length(data) >= 0) && (gtk_selection_data_get_format(data) == 8))
 	{
 		if (widget == dpd->panel_button || widget == dpd->dd->panel_entry)
 		{
-			gtk_entry_set_text(GTK_ENTRY(dpd->dd->main_entry), (const gchar*) data->data);
+			gtk_entry_set_text(GTK_ENTRY(dpd->dd->main_entry), (const gchar*) gtk_selection_data_get_data(data));
 		}
 
 		dict_drag_data_received(widget, drag_context, x, y, data, info, ltime, dpd->dd);
@@ -411,12 +310,11 @@ static void dict_plugin_drag_data_received(GtkWidget *widget, GdkDragContext *dr
 
 static void dict_plugin_construct(XfcePanelPlugin *plugin)
 {
+	GtkCssProvider *css_provider;
 	DictPanelData *dpd = g_new0(DictPanelData, 1);
 
 	xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
 
-	g_thread_init(NULL);
-
 	dpd->dd = dict_create_dictdata();
 	dpd->dd->is_plugin = TRUE;
 	dpd->plugin = plugin;
@@ -424,13 +322,18 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin)
 	dict_read_rc_file(dpd->dd);
 
 	dpd->panel_button = xfce_create_panel_button();
-
-	dpd->tooltips = gtk_tooltips_new();
-	gtk_tooltips_set_tip(dpd->tooltips, dpd->panel_button, _("Look up a word"), NULL);
+	gtk_widget_set_tooltip_text (dpd->panel_button, _("Look up a word"));
 
 	dpd->panel_button_image = gtk_image_new();
 	gtk_container_add(GTK_CONTAINER(dpd->panel_button), GTK_WIDGET(dpd->panel_button_image));
 
+	/* Setup Gtk style */
+	css_provider = gtk_css_provider_new ();
+	gtk_css_provider_load_from_data (css_provider, "button { padding: 1px; border-width: 1px;}", -1, NULL);
+	gtk_style_context_add_provider (GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (dpd->panel_button))),
+																	GTK_STYLE_PROVIDER (css_provider),
+																	GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
 	gtk_widget_show_all(dpd->panel_button);
 
 	g_signal_connect(dpd->panel_button, "clicked", G_CALLBACK(dict_plugin_panel_button_clicked), dpd);
@@ -441,11 +344,7 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin)
 	g_signal_connect(dpd->dd->close_button, "clicked", G_CALLBACK(dict_plugin_close_button_clicked), dpd);
 	g_signal_connect(plugin, "free-data", G_CALLBACK(dict_plugin_free_data), dpd);
 	g_signal_connect(plugin, "size-changed", G_CALLBACK(dict_plugin_panel_set_size), dpd);
-#if defined(LIBXFCE4PANEL_CHECK_VERSION) && LIBXFCE4PANEL_CHECK_VERSION(4,9,0)
 	g_signal_connect(plugin, "mode-changed", G_CALLBACK(dict_plugin_panel_change_mode), dpd);
-#else
-	g_signal_connect(plugin, "orientation-changed", G_CALLBACK(dict_plugin_panel_change_orientation), dpd);
-#endif
 	g_signal_connect(plugin, "style-set", G_CALLBACK(dict_plugin_style_set), dpd);
 	g_signal_connect(plugin, "save", G_CALLBACK(dict_plugin_write_rc_file), dpd);
 	g_signal_connect(plugin, "configure-plugin", G_CALLBACK(dict_plugin_properties_dialog), dpd);
@@ -459,16 +358,16 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin)
 	g_signal_connect(dpd->dd->pref_menu_item, "activate", G_CALLBACK(dict_plugin_properties_dialog), dpd);
 
 	/* panel entry */
-	dpd->dd->panel_entry = gtk_entry_new();
-	gtk_entry_set_icon_from_stock(GTK_ENTRY(dpd->dd->panel_entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
+	dpd->dd->panel_entry = gtk_search_entry_new();
+	gtk_entry_set_icon_from_icon_name(GTK_ENTRY(dpd->dd->panel_entry), GTK_ENTRY_ICON_SECONDARY, "gtk-clear");
 	gtk_entry_set_width_chars(GTK_ENTRY(dpd->dd->panel_entry), 25);
-	gtk_entry_set_text(GTK_ENTRY(dpd->dd->panel_entry), _("Search term"));
+	gtk_entry_set_placeholder_text(GTK_ENTRY(dpd->dd->panel_entry), _("Search term"));
 	g_signal_connect(dpd->dd->panel_entry, "icon-release", G_CALLBACK(entry_icon_release_cb), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "activate", G_CALLBACK(entry_activate_cb), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "button-press-event", G_CALLBACK(entry_buttonpress_cb), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "changed", G_CALLBACK(entry_changed_cb), dpd);
 
-	dpd->box = gtk_hbox_new(FALSE, 3);
+	dpd->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
 	gtk_widget_show(dpd->box);
 
 	gtk_box_pack_start(GTK_BOX(dpd->box), dpd->panel_button, FALSE, FALSE, 0);
@@ -487,6 +386,8 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin)
 	g_signal_connect(dpd->panel_button, "drag-data-received", G_CALLBACK(dict_plugin_drag_data_received), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "drag-data-received", G_CALLBACK(dict_plugin_drag_data_received), dpd);
 
+	dict_acquire_dbus_name(dpd->dd);
+
 	dict_gui_status_add(dpd->dd, _("Ready"));
 }
 XFCE_PANEL_PLUGIN_REGISTER(dict_plugin_construct);
diff --git a/panel-plugin/xfce4-dict-plugin.desktop.in b/panel-plugin/xfce4-dict-plugin.desktop.in
index 4965a140b43db56f0bc78b749e12aa039fbb7d8a..7404c55c35e6d347a74b55be61f20676bd74bd31 100644
--- a/panel-plugin/xfce4-dict-plugin.desktop.in
+++ b/panel-plugin/xfce4-dict-plugin.desktop.in
@@ -6,4 +6,4 @@ _Comment=A plugin to query different dictionaries.
 Icon=xfce4-dict
 X-XFCE-Module=xfce4dict
 X-XFCE-Internal=false
-
+X-XFCE-API=2.0
diff --git a/xfce4-dict.svg b/pixmaps/xfce4-dict.svg
similarity index 100%
rename from xfce4-dict.svg
rename to pixmaps/xfce4-dict.svg
diff --git a/src/popup_plugin.c b/src/popup_plugin.c
index 6e1bef8ce0fb1dde556a53f76ece14b64570ea7c..5c7bcd645f7e79d2493dd4f574c93a5de27c3981 100644
--- a/src/popup_plugin.c
+++ b/src/popup_plugin.c
@@ -26,62 +26,37 @@
 #include "libdict.h"
 
 
-static gboolean check_is_running(GtkWidget *widget, Window *xid)
-{
-	GdkScreen *gscreen;
-	gchar selection_name[32];
-	Atom selection_atom;
-
-	gscreen = gtk_widget_get_screen(widget);
-	g_snprintf(selection_name, sizeof(selection_name), XFCE_DICT_SELECTION"%d",
-		gdk_screen_get_number(gscreen));
-	selection_atom = XInternAtom(GDK_DISPLAY(), selection_name, False);
-
-	if ((*xid = XGetSelectionOwner(GDK_DISPLAY(), selection_atom)))
-		return TRUE;
-
-	return FALSE;
-}
+gboolean dict_find_panel_plugin(gchar flags, const gchar *text);
 
 
 gboolean dict_find_panel_plugin(gchar flags, const gchar *text)
 {
-	gboolean ret = FALSE;
-	GdkEventClient gev;
-	GtkWidget *win;
-	Window id;
-
-	win = gtk_invisible_new();
-	gtk_widget_realize(win);
-
-	gev.type = GDK_CLIENT_EVENT;
-	gev.window = win->window;
-	gev.send_event = TRUE;
-	gev.message_type = gdk_atom_intern("STRING", FALSE);
-	gev.data_format = 8;
-
-	if (text == NULL)
-		text = "";
-	else if (strlen(text) > 12)
-		g_warning("The passed search text is longer than 12 characters and was truncated. Currently you can pass only a maximum of 12 characters to the panel plugin (or even less when using non-ASCII characters).");
+	gboolean  ret = FALSE;
+	GError   *error = NULL;
+	Dict     *proxy;
+
+	proxy = dict_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+																			G_DBUS_PROXY_FLAGS_NONE,
+																			"org.xfce.Dict",
+																			"/org/xfce/Dict",
+																			NULL,
+																			&error);
+
+	if (!proxy)
+	{
+		g_warning ("error connecting to org.xfce.Dict, reason was: %s", error->message);
+		g_clear_error(&error);
+		return FALSE;
+	}
 
-	/* format of the send string: "xfdict?text":
-	 * "xfdict" is for identification of ourselves
-	 * ? is a bitmask to control the behaviour, it can contain one or more of DICT_FLAGS_*,
-	 * we send it as %c to ensure it takes only one char in the string,
-	 * everything after this is the text to search, given on command line */
-	/** FIXME: remove the limit of 12 characters, maybe by sending more than message or by
-	  *        using another IPC mechanism, maybe DBus? */
-	g_snprintf(gev.data.b, sizeof gev.data.b, "xfdict%c%s", flags, text);
+	ret = dict_call_search_sync (proxy, text, NULL, &error);
 
-	if (check_is_running(win, &id))
+	if (error)
 	{
-		gdk_event_send_client_message((GdkEvent*) &gev, (GdkNativeWindow) id);
-		ret = TRUE;
+		g_warning ("failed to connecting to org.xfce.Dict, reason was: %s", error->message);
+		g_clear_error(&error);
+		return FALSE;
 	}
 
-	gdk_flush();
-	gtk_widget_destroy(win);
-
 	return ret;
 }
diff --git a/src/xfce4-dict.c b/src/xfce4-dict.c
index 0121ddf6185cc77fef477bdcc14cfaa24c31c64e..dd84279df1f240496f3cda1d7ceeb41ed4ae6865 100644
--- a/src/xfce4-dict.c
+++ b/src/xfce4-dict.c
@@ -83,7 +83,7 @@ static void pref_dialog_activated(GtkMenuItem *menuitem, DictData *dd)
 }
 
 
-static gchar get_flags()
+static gchar get_flags(void)
 {
 	gchar flags = 0;
 
@@ -140,7 +140,7 @@ gint main(gint argc, gchar *argv[])
 	if (show_version)
 	{
 		g_print("%s %s (Xfce %s)\n\n", PACKAGE, PACKAGE_VERSION, xfce_version_string());
-		g_print("%s\n", "Copyright (c) 2006-2015");
+		g_print("%s\n", "Copyright (c) 2006-2016");
 		g_print("\tEnrico Tröger <enrico@xfce.org>\n\n");
 		g_print(_("Please report bugs to <%s>."), PACKAGE_BUGREPORT);
 		g_print("\n");
@@ -173,8 +173,6 @@ gint main(gint argc, gchar *argv[])
 	dd->is_plugin = FALSE;
 	dd->verbose_mode = verbose_mode;
 
-	g_thread_init(NULL);
-
 	dict_read_rc_file(dd);
 
 	/* set search mode from command line flags, if any */
@@ -199,6 +197,8 @@ gint main(gint argc, gchar *argv[])
 
 	g_free(search_text);
 
+	dict_acquire_dbus_name(dd);
+
 	gtk_widget_show_all(dd->window);
 
 	gtk_main();