diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -3401,10 +3405,12 @@ ephy_web_view_save_sub_resources (EphyWebView *view, const char *uri, GList *sub
 
   file = g_file_new_for_uri (destination_uri);
   if (!g_file_make_directory (file, NULL, &error)) {
-    g_warning ("Could not create directory: %s", error->message);
-    g_error_free (error);
-    g_object_unref (file);
-    return;
+    if (error->code != G_IO_ERROR_EXISTS) {
+      g_warning ("Could not create directory: %s", error->message);
+      g_error_free (error);
+      g_object_unref (file);
+      return;
+    }
   }
   g_object_unref (file);
 

diff --git a/src/window-commands.c b/src/window-commands.c
index e4c7998..42c4ab0 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -327,6 +327,14 @@ window_cmd_file_save_as (GtkAction *action,
 {
 	EphyEmbed *embed;
 	EphyFileChooser *dialog;
+	
+	/* These all are needed in order to get the suggested filename */
+	char *suggested_filename;
+	char *mimetype;
+	EphyWebView *view;
+	WebKitWebFrame *frame;
+	WebKitWebDataSource *data_source;
+	WebKitWebResource *web_resource;	
 
 	embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
 	g_return_if_fail (embed != NULL);
@@ -337,6 +345,35 @@ window_cmd_file_save_as (GtkAction *action,
 					CONF_STATE_SAVE_DIR,
 					EPHY_FILE_FILTER_ALL_SUPPORTED);
 
+	gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
+	
+	view = ephy_embed_get_web_view (embed);
+	frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW(view));
+	data_source = webkit_web_frame_get_data_source (frame);
+	web_resource = webkit_web_data_source_get_main_resource (data_source);
+	mimetype = (char *) webkit_web_resource_get_mime_type(web_resource);
+
+	if ((g_ascii_strncasecmp (mimetype, "text/html", 9)) == 0)
+	{
+		/* Web Title will be used as suggested filename*/		
+		suggested_filename = g_strconcat(ephy_web_view_get_title (view), ".html",NULL);
+	}
+	else
+	{	
+		gchar **uri_tokens = g_strsplit (webkit_web_resource_get_uri (web_resource), "/", 0);
+
+		/* Go to the last token */
+		int i = 0; for(; uri_tokens[i] != NULL; i++){}
+
+		/* last part of URI will be used as suggested filename */
+		suggested_filename = (char *) g_strdup (uri_tokens[i-1]);
+		g_strfreev(uri_tokens); 
+	}
+
+	gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), suggested_filename);
+
+	free (suggested_filename);
+	
 	g_signal_connect (dialog, "response",
 			  G_CALLBACK (save_response_cb), embed);
 
