diff --git configure.ac configure.ac
index 4a062f8..630ab51 100644
--- configure.ac
+++ configure.ac
@@ -50,7 +50,7 @@ m4_define([libnotify_minimum_version], [0.5.1])
 m4_define([unique_minimum_version], [2.90.4])
 
 dnl Optional Packages
-m4_define([champlain_minimum_version], [0.8])
+m4_define([champlain_minimum_version], [0.10])
 m4_define([clutter_gtk_minimum_version], [0.90])
 m4_define([geoclue_minimum_version], [0.11.1])
 m4_define([gladeui_minimum_version], [3.0.0])
@@ -1491,12 +1491,12 @@ if test "x$enable_plugins" = "xexperimental"; then
 		[enable_contacts_map="$enableval"], [enable_contacts_map=yes])
 
 	if test "x$enable_contacts_map" = "xyes"; then
-		PKG_CHECK_MODULES([CHAMPLAIN], [champlain-gtk-0.8 >= champlain_minimum_version], [have_champlain=yes], [have_champlain=no])
+		PKG_CHECK_MODULES([CHAMPLAIN], [champlain-gtk-0.10 >= champlain_minimum_version], [have_champlain=yes], [have_champlain=no])
 		AC_SUBST(CHAMPLAIN_CFLAGS)
 		AC_SUBST(CHAMPLAIN_LIBS)
 
 		if test "x$have_champlain" = "xno"; then
-			AC_MSG_ERROR([champlain-gtk-0.8 >= champlain_minimum_version is required for the contacts-map plugin.  Use --disable-contacts-map to exclude the plugin.])
+			AC_MSG_ERROR([champlain-gtk-0.10 >= champlain_minimum_version is required for the contacts-map plugin.  Use --disable-contacts-map to exclude the plugin.])
 		fi
 
 		PKG_CHECK_MODULES([GEOCLUE], [geoclue >= geoclue_minimum_version], [have_geoclue=yes], [have_geoclue=no])
diff --git plugins/contacts-map/contacts-map.c plugins/contacts-map/contacts-map.c
index 24297e0..29f15d9 100644
--- plugins/contacts-map/contacts-map.c
+++ plugins/contacts-map/contacts-map.c
@@ -105,7 +105,7 @@ show_map_general (ESourceSelector *selector)
 
 	GtkWidget *map_widget;
 	ChamplainView  *view;
-	ChamplainLayer *layer;
+	ChamplainMarkerLayer *layer;
 
 	gdouble *min_lat = NULL;
 	gdouble *max_lat = NULL;
@@ -128,7 +128,7 @@ show_map_general (ESourceSelector *selector)
 	e_book_query_unref (query);
 
 	init_map (&view, &map_widget);
-	layer = champlain_selection_layer_new ();
+	layer = champlain_marker_layer_new ();
 
 	geocoder = NULL;
 	geocoder = get_geocoder ();
@@ -194,17 +194,22 @@ show_map_general (ESourceSelector *selector)
 		}
 	}
 
-	champlain_view_add_layer (view, layer);
-	champlain_layer_show (layer);
-	champlain_layer_show_all_markers (CHAMPLAIN_LAYER (layer));
-
 	create_map_window (map_widget, _("Contacts map"));
 
-	/* Do not ensure something visible is we have nothing */
+	/* Do not ensure something visible if we have nothing */
 	if (min_lat && min_lng && max_lat && max_lng)
+	{
+		ChamplainBoundingBox *bbox;
+		bbox = champlain_bounding_box_new ();
+			champlain_bounding_box_extend (bbox, *min_lat, *min_lng);
+			champlain_bounding_box_extend (bbox, *max_lat, *max_lng);
 		champlain_view_ensure_visible (view,
-				*min_lat, *min_lng,
-				*max_lat, *max_lng, FALSE);
+				bbox, FALSE);
+	}
+	
+	champlain_view_add_layer (view, CHAMPLAIN_LAYER (layer));
+	champlain_marker_layer_animate_in_all_markers (layer);
+
 
 	g_free (min_lat);
 	g_free (max_lat);
diff --git plugins/contacts-map/geo-utils.c plugins/contacts-map/geo-utils.c
index ec36b33..1049eb3 100644
--- plugins/contacts-map/geo-utils.c
+++ plugins/contacts-map/geo-utils.c
@@ -41,18 +41,18 @@ get_min_max (gdouble *min_lat, gdouble *max_lat,
 }
 
 void
-add_marker (ChamplainLayer *layer, gdouble lat, gdouble lng, EContact *contact)
+add_marker (ChamplainMarkerLayer *layer, gdouble lat, gdouble lng, EContact *contact)
 {
 	ClutterActor *marker;
 
 	gchar *contact_name = e_contact_get (contact, E_CONTACT_FULL_NAME);
-	marker = champlain_marker_new_with_text (contact_name, "Serif 8", NULL, NULL);
+	marker = champlain_label_new_with_text (contact_name, "Serif 8", NULL, NULL);
 	g_free (contact_name);
 
-	champlain_marker_set_use_markup (CHAMPLAIN_MARKER (marker), FALSE);
-	champlain_base_marker_set_position (CHAMPLAIN_BASE_MARKER (marker), lat, lng);
+	champlain_label_set_use_markup (CHAMPLAIN_LABEL (marker), FALSE);
+	champlain_location_set_location (CHAMPLAIN_LOCATION (marker), lat, lng);
 
-	champlain_layer_add_marker (layer, CHAMPLAIN_BASE_MARKER (marker));
+	champlain_marker_layer_add_marker (layer, CHAMPLAIN_MARKER (marker));
 }
 
 GeoclueGeocode*
@@ -91,33 +91,27 @@ init_map (ChamplainView **view, GtkWidget **widget)
 	*widget = gtk_champlain_embed_new ();
 	*view = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED (*widget));
 
-	champlain_view_set_show_license (*view, FALSE);
-
-	g_object_set (G_OBJECT (*view), "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC,
-			"zoom-level", 9, NULL);
+	g_object_set (G_OBJECT (*view),
+					"kinetic-mode", TRUE,
+					"zoom-level", 9,
+					NULL);
 }
 
 void
 create_map_window (GtkWidget *map_widget, const gchar *title)
 {
-	GtkWidget *window, *viewport;
+	GtkWidget *window;
 
 	/* create the main, top level, window */
 	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
-	/* give the window a 10px wide border */
-	gtk_container_set_border_width (GTK_CONTAINER (window), 10);
-
 	/* give it the title */
 	gtk_window_set_title (GTK_WINDOW (window), title );
 
 	gtk_widget_set_size_request (map_widget, 300, 300);
 
-	viewport = gtk_frame_new (NULL);
-	gtk_container_add (GTK_CONTAINER (viewport), map_widget);
-
 	/* and insert it into the main window  */
-	gtk_container_add (GTK_CONTAINER (window), viewport);
+	gtk_container_add (GTK_CONTAINER (window), map_widget);
 
 	/* make sure that everything, window and label, are visible */
 	gtk_widget_show_all (window);
diff --git plugins/contacts-map/geo-utils.h plugins/contacts-map/geo-utils.h
index c830151..75a1540 100644
--- plugins/contacts-map/geo-utils.h
+++ plugins/contacts-map/geo-utils.h
@@ -39,7 +39,7 @@ get_min_max (gdouble *min_lat, gdouble *max_lat,
 GeoclueGeocode *get_geocoder (void);
 
 void add_marker (
-        ChamplainLayer *layer,
+        ChamplainMarkerLayer *layer,
         gdouble lat, gdouble lng,
         EContact *contact);
 
