diff --git a/extensions/tab-restore/ephy-tabrestore-extension.c b/extensions/tab-restore/ephy-tabrestore-extension.c
index f7e1e99..b4abe88 100644
--- a/extensions/tab-restore/ephy-tabrestore-extension.c
+++ b/extensions/tab-restore/ephy-tabrestore-extension.c
@@ -44,7 +44,7 @@
 
 struct _EphyTabRestoreExtensionPrivate
 {
-	char *urls[MAX_ELEM];	
+	EphyEmbed *embeds[MAX_ELEM];	
 	gint current;
 	gint next;
 	GList *regwindows;
@@ -89,7 +89,7 @@ ephy_tabrestore_extension_init (EphyTabRestoreExtension *extension)
 	extension->priv = EPHY_TABRESTORE_EXTENSION_GET_PRIVATE (extension);
 	/* Start with an empty url list */
 	for(i = 0; i < MAX_ELEM; i++) {
-		extension->priv->urls[i] = NULL; 
+		extension->priv->embeds[i] = NULL; 
 	}
 	extension->priv->current = 9;
 	extension->priv->next = 0;
@@ -105,7 +105,7 @@ ephy_tabrestore_extension_finalize (GObject *object)
 	EphyTabRestoreExtension *extension = EPHY_TABRESTORE_EXTENSION (object);
 	/* Dissolve all elements */
 	for(i = 0; i < MAX_ELEM; i++) {
-		g_free(extension->priv->urls[i]); // Per definition NO-OP on NULL
+		g_object_unref(extension->priv->embeds[i]); // FIXME: Is it still Per definition NO-OP on NULL?
 	}
 
 	g_list_free(extension->priv->regwindows);
@@ -131,12 +131,10 @@ _tabrestore_action_cb  (GtkAction *action,
 	
 	EphyTabRestoreExtension *extension = g_object_get_data (G_OBJECT (window), EPHY_TABRESTORE_EXTENSION_DATA_KEY);
 
-	EphyShell *shell = ephy_shell_get_default();
-
 	/* If an url to pop exists, we open a new tab and discard the url.
 	 * Otherwise we are done */
-	char *temp = extension->priv->urls[extension->priv->current];
-	if(temp) {
+	EphyEmbed* embed = extension->priv->embeds[extension->priv->current];
+	if(EPHY_IS_EMBED(embed)) {
 
 		/* Possible FIXME in case someone sees a reason for that: 
 		 * Use prev_tab (gtk_notebook_get_n_pages and _nth_page) instead of NULL
@@ -144,18 +142,13 @@ _tabrestore_action_cb  (GtkAction *action,
 		 * EphyNotebook *notebook = ephy_window_get_notebook(window);
 		 * .....
 		 */
-		ephy_shell_new_tab (shell, window, NULL, temp, EPHY_NEW_TAB_IN_EXISTING_WINDOW |
-				EPHY_NEW_TAB_OPEN_PAGE |
-				EPHY_NEW_TAB_JUMP);
-		extension->priv->urls[extension->priv->current] = NULL;
+
+		ephy_embed_container_add_child(EPHY_EMBED_CONTAINER(window), embed, 0, TRUE);
+		extension->priv->embeds[extension->priv->current] = NULL;
 		extension->priv->next = extension->priv->current;
 		extension->priv->current = (extension->priv->current - 1 + MAX_ELEM) % MAX_ELEM;
-		LOG ("Removed %u, next element to pop: %u, %s", 
-				extension->priv->next, 
-				extension->priv->current, 
-				extension->priv->urls[extension->priv->current]);
 	}
-	if (extension->priv->urls[extension->priv->current] == NULL) {
+	if (extension->priv->embeds[extension->priv->current] == NULL) {
 		/* Disable action since we don't have any urls left.
 		 * Do so in all windows attached. */
 		gboolean boolflag = FALSE;
@@ -207,7 +200,7 @@ impl_attach_window (EphyExtension *ext,
 				(GDestroyNotify) g_free);
 
 	/* Check for an empty list of urls. If so disable the action */
-	if (extension->priv->urls[extension->priv->current] == NULL) {
+	if (extension->priv->embeds[extension->priv->current] == NULL) {
 		gtk_action_group_set_sensitive(data->action_group, FALSE);
 	} else {
 		/* FIXME: Obsolete? */
@@ -258,13 +251,9 @@ impl_detach_tab (EphyExtension *ext,
 	EphyTabRestoreExtension *extension = EPHY_TABRESTORE_EXTENSION (ext);
 
 	/* attach the url loaded in the tab to be close to the url-list */
-	EphyWebView* webview = ephy_embed_get_web_view(embed);
-	char *temp = ephy_web_view_get_location (webview, TRUE);
-	extension->priv->urls[extension->priv->next] = temp;
-	LOG ("%u: %s\n", extension->priv->next, extension->priv->urls[extension->priv->next]);
+	extension->priv->embeds[extension->priv->next] = g_object_ref(embed);
 	extension->priv->current = extension->priv->next;
 	extension->priv->next = (extension->priv->next + 1) % MAX_ELEM;
-	LOG ("Index for next element: %u (currently set to %s)", extension->priv->next, extension->priv->urls[extension->priv->next]);
 
 	/* Activate action in all windows */
 	gboolean boolflag = TRUE;
