diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index fddbddd..dd33580 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -423,8 +423,16 @@ ephy_embed_base_init (gpointer g_class)
 			      1,
 			      G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE);
 
+                g_object_interface_install_property (g_class,
+                                                     g_param_spec_enum ("security-level",
+                                                                        "Security Level",
+                                                                        "The embed's security level",
+                                                                        EPHY_TYPE_EMBED_SECURITY_LEVEL,
+                                                                        EPHY_EMBED_STATE_IS_UNKNOWN,
+                                                                        G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
 		initialized = TRUE;
 	}
+
 }
 
 /**
diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp
index 3fadccc..21828ae 100644
--- a/embed/mozilla/mozilla-embed.cpp
+++ b/embed/mozilla/mozilla-embed.cpp
@@ -92,10 +92,19 @@ struct MozillaEmbedPrivate
 {
 	EphyBrowser *browser;
 	MozillaEmbedLoadState load_state;
+
+	EphyEmbedSecurityLevel security_level;
+	/* guint security_level : 3; ? */
 };
 
 #define WINDOWWATCHER_CONTRACTID "@mozilla.org/embedcomp/window-watcher;1"
 
+enum
+{
+        PROP_0,
+        PROP_SECURITY
+};
+
 static GObjectClass *parent_class = NULL;
 
 static void
@@ -232,6 +241,44 @@ mozilla_embed_constructor (GType type, guint n_construct_properties,
 }
 
 static void
+mozilla_embed_get_property (GObject *object,
+			    guint prop_id,
+			    GValue *value,
+			    GParamSpec *pspec)
+{
+	MozillaEmbed *embed = MOZILLA_EMBED (object);
+	MozillaEmbedPrivate *priv = embed->priv;
+        
+        switch (prop_id)
+        {
+        case PROP_SECURITY:
+                g_value_set_enum (value, priv->security_level);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+
+}
+
+static void
+mozilla_embed_set_property (GObject *object,
+                            guint prop_id,
+                            const GValue *value,
+                            GParamSpec *pspec)
+{
+        switch (prop_id)
+        {
+        case PROP_SECURITY:
+                /* read only */
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
 mozilla_embed_class_init (MozillaEmbedClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -242,12 +289,16 @@ mozilla_embed_class_init (MozillaEmbedClass *klass)
 
 	object_class->constructor = mozilla_embed_constructor;
 	object_class->finalize = mozilla_embed_finalize;
+        object_class->get_property = mozilla_embed_get_property;
+        object_class->set_property = mozilla_embed_set_property;
 
 	gtk_object_class->destroy = mozilla_embed_destroy;
 
 	widget_class->grab_focus = mozilla_embed_grab_focus;
 	widget_class->realize = mozilla_embed_realize;
 
+        g_object_class_override_property (object_class, PROP_SECURITY, "security-level");
+
 	g_type_class_add_private (object_class, sizeof(MozillaEmbedPrivate));
 }
 
@@ -278,6 +329,8 @@ mozilla_embed_init (MozillaEmbed *embed)
 	g_signal_connect_object (embed, "security_change",
 				 G_CALLBACK (mozilla_embed_security_change_cb),
 				 embed, (GConnectFlags) 0);
+
+        embed->priv->security_level = EPHY_EMBED_STATE_IS_UNKNOWN;
 }
 
 gpointer
@@ -1106,13 +1159,25 @@ mozilla_embed_new_window_cb (GtkMozEmbed *embed,
 }
 
 static void
+mozilla_embed_set_security_level (MozillaEmbed *embed, EphyEmbedSecurityLevel level)
+{
+	MozillaEmbedPrivate *priv = embed->priv;
+
+        if (priv->security_level != level)
+        {
+                priv->security_level = level;
+
+                g_object_notify (G_OBJECT (embed), "security-level");
+        }
+}
+
+static void
 mozilla_embed_security_change_cb (GtkMozEmbed *embed, 
 				  gpointer requestptr,
 				  PRUint32 state,
 				  MozillaEmbed *membed)
 {
-	g_signal_emit_by_name (membed, "ge_security_change",
-			       mozilla_embed_security_level (state));
+        mozilla_embed_set_security_level (membed, mozilla_embed_security_level (state));
 }
 
 static EphyEmbedSecurityLevel
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index e09fc26..01eb255 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -105,8 +105,6 @@ struct _EphyTabPrivate
 	guint is_blank : 1;
 	guint is_loading : 1;
 	guint is_setting_zoom : 1;
-	EphyEmbedSecurityLevel security_level;
-	/* guint security_level : 3; ? */
 	EphyTabAddressExpire address_expire;
 	/* guint address_expire : 2; ? */
 
@@ -132,7 +130,6 @@ enum
 	PROP_LOAD_STATUS,
 	PROP_MESSAGE,
 	PROP_NAVIGATION,
-	PROP_SECURITY,
 	PROP_HIDDEN_POPUP_COUNT,
 	PROP_POPUPS_ALLOWED,
 	PROP_TITLE,
@@ -166,8 +163,6 @@ static void	ephy_tab_set_load_percent	(EphyTab *tab,
 						 int percent);
 static void	ephy_tab_update_navigation_flags(EphyTab *tab,
 						 EphyEmbed *embed);
-static void	ephy_tab_set_security_level	(EphyTab *tab,
-						 EphyEmbedSecurityLevel level);
 static void	ephy_tab_set_title		(EphyTab *tab,
 						 EphyEmbed *embed,
 						 char *new_title);
@@ -248,7 +243,6 @@ ephy_tab_set_property (GObject *object,
 		case PROP_LOAD_STATUS:
 		case PROP_MESSAGE:
 		case PROP_NAVIGATION:
-		case PROP_SECURITY:
 		case PROP_HIDDEN_POPUP_COUNT:
 		case PROP_TITLE:
 		case PROP_ZOOM:
@@ -292,9 +286,6 @@ ephy_tab_get_property (GObject *object,
 		case PROP_NAVIGATION:
 			g_value_set_flags (value, priv->nav_flags);
 			break;
-		case PROP_SECURITY:
-			g_value_set_enum (value, priv->security_level);
-			break;
 		case PROP_HIDDEN_POPUP_COUNT:
 			g_value_set_int (value, popup_blocker_n_hidden (tab));
 			break;
@@ -472,15 +463,6 @@ ephy_tab_class_init (EphyTabClass *class)
 							     G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
 
 	g_object_class_install_property (object_class,
-					 PROP_SECURITY,
-					 g_param_spec_enum ("security-level",
-							    "Security Level",
-							    "The tab's security level",
-							    EPHY_TYPE_EMBED_SECURITY_LEVEL,
-							    EPHY_EMBED_STATE_IS_UNKNOWN,
-							     G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
-
-	g_object_class_install_property (object_class,
 					 PROP_HIDDEN_POPUP_COUNT,
 					 g_param_spec_int ("hidden-popup-count",
 							   "Number of Blocked Popups",
@@ -2057,13 +2039,6 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed,
 }
 
 static void
-ephy_tab_security_change_cb (EphyEmbed *embed, EphyEmbedSecurityLevel level,
-			       EphyTab *tab)
-{
-	ephy_tab_set_security_level (tab, level);
-}
-
-static void
 ephy_tab_init (EphyTab *tab)
 {
 	EphyTabPrivate *priv;
@@ -2110,7 +2085,6 @@ ephy_tab_init (EphyTab *tab)
 	tab->priv->height = -1;
 	tab->priv->load_percent = 0;
 	tab->priv->is_loading = FALSE;
-	tab->priv->security_level = EPHY_EMBED_STATE_IS_UNKNOWN;
 	tab->priv->document_type = EPHY_EMBED_DOCUMENT_HTML;
 	tab->priv->zoom = 1.0;
 	priv->title = NULL;
@@ -2160,9 +2134,6 @@ ephy_tab_init (EphyTab *tab)
 	g_signal_connect_object (embed, "ge_dom_mouse_click",
 				 G_CALLBACK (ephy_tab_dom_mouse_click_cb),
 				 tab, 0);
-	g_signal_connect_object (embed, "ge_security_change",
-				 G_CALLBACK (ephy_tab_security_change_cb),
-				 tab, 0);
 	g_signal_connect_object (embed, "ge_favicon",
 				 G_CALLBACK (ephy_tab_favicon_cb),
 				 tab, 0);
@@ -2473,32 +2444,6 @@ ephy_tab_set_typed_address (EphyTab *tab,
 }
 
 static void
-ephy_tab_set_security_level (EphyTab *tab, EphyEmbedSecurityLevel level)
-{
-	g_return_if_fail (EPHY_IS_TAB (tab));
-
-	tab->priv->security_level = level;
-
-	g_object_notify (G_OBJECT (tab), "security-level");
-}
-
-/**
- * ephy_tab_get_security_level:
- * @tab: an #EphyTab
- *
- * Returns the security level of the webpage loaded in @tab.
- *
- * Return value: @tab's loaded page's security level
- **/
-EphyEmbedSecurityLevel
-ephy_tab_get_security_level (EphyTab *tab)
-{
-	g_return_val_if_fail (EPHY_IS_TAB (tab), EPHY_EMBED_STATE_IS_UNKNOWN);
-
-	return tab->priv->security_level;
-}
-
-static void
 ephy_tab_set_zoom (EphyTab *tab, float zoom)
 {
 	g_return_if_fail (EPHY_IS_TAB (tab));
diff --git a/src/ephy-window.c b/src/ephy-window.c
index b16b2b7..e314745 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -100,7 +100,7 @@ static void ephy_window_view_popup_windows_cb	(GtkAction *action,
 static void sync_tab_load_status		(EphyTab *tab,
 						 GParamSpec *pspec,
 						 EphyWindow *window);
-static void sync_tab_security			(EphyTab *tab,
+static void sync_tab_security			(EphyEmbed  *embed,
 						 GParamSpec *pspec,
 						 EphyWindow *window);
 static void sync_tab_zoom			(EphyTab *tab,
@@ -707,7 +707,7 @@ ephy_window_fullscreen (EphyWindow *window)
 	/* sync status */
 	tab = ephy_window_get_active_tab (window);
 	sync_tab_load_status (tab, NULL, window);
-	sync_tab_security (tab, NULL, window);
+	sync_tab_security (ephy_tab_get_embed (tab), NULL, window);
 
 	egg_editable_toolbar_set_model
 		(EGG_EDITABLE_TOOLBAR (priv->toolbar),
@@ -1527,12 +1527,11 @@ sync_tab_navigation (EphyTab *tab,
 }
 
 static void
-sync_tab_security (EphyTab *tab,
+sync_tab_security (EphyEmbed *embed,
 		   GParamSpec *pspec,
 		   EphyWindow *window)
 {
 	EphyWindowPrivate *priv = window->priv;
-	EphyEmbed *embed;
 	EphyEmbedSecurityLevel level;
 	char *description = NULL;
 	char *state = NULL;
@@ -1543,8 +1542,6 @@ sync_tab_security (EphyTab *tab,
 
 	if (priv->closing) return;
 
-	embed = ephy_tab_get_embed (tab);
-
 	ephy_embed_get_security_level (embed, &level, &description);
 
 	switch (level)
@@ -2197,6 +2194,10 @@ ephy_window_set_active_tab (EphyWindow *window, EphyTab *new_tab)
 
 	if (new_tab != NULL)
 	{
+		embed = ephy_tab_get_embed (new_tab);
+
+		sync_tab_security	(embed, NULL, window);
+
 		sync_tab_address	(new_tab, NULL, window);
 		sync_tab_document_type	(new_tab, NULL, window);
 		sync_tab_icon		(new_tab, NULL, window);
@@ -2204,7 +2205,6 @@ ephy_window_set_active_tab (EphyWindow *window, EphyTab *new_tab)
 		sync_tab_load_status	(new_tab, NULL, window);
 		sync_tab_message	(new_tab, NULL, window);
 		sync_tab_navigation	(new_tab, NULL, window);
-		sync_tab_security	(new_tab, NULL, window);
 		sync_tab_popup_windows	(new_tab, NULL, window);
 		sync_tab_popups_allowed	(new_tab, NULL, window);
 		sync_tab_title		(new_tab, NULL, window);
@@ -2231,9 +2231,6 @@ ephy_window_set_active_tab (EphyWindow *window, EphyTab *new_tab)
 		g_signal_connect_object (new_tab, "notify::navigation",
 					 G_CALLBACK (sync_tab_navigation),
 					 window, 0);
-		g_signal_connect_object (new_tab, "notify::security-level",
-					 G_CALLBACK (sync_tab_security),
-					 window, 0);
 		g_signal_connect_object (new_tab, "notify::hidden-popup-count",
 					 G_CALLBACK (sync_tab_popup_windows),
 					 window, 0);
@@ -2248,6 +2245,10 @@ ephy_window_set_active_tab (EphyWindow *window, EphyTab *new_tab)
 					 window, 0);
 
 		embed = ephy_tab_get_embed (new_tab);
+
+		g_signal_connect_object (embed, "notify::security-level",
+					 G_CALLBACK (sync_tab_security),
+					 window, 0);
 		g_signal_connect_object (embed, "ge-context-menu",
 					 G_CALLBACK (tab_context_menu_cb),
 					 window, G_CONNECT_AFTER);
diff --git a/src/epiphany.defs b/src/epiphany.defs
index 695b4a2..c796576 100644
--- a/src/epiphany.defs
+++ b/src/epiphany.defs
@@ -3396,12 +3396,6 @@
   (return-type "EphyTabNavigationFlags")
 )
 
-(define-method get_security_level
-  (of-object "EphyTab")
-  (c-name "ephy_tab_get_security_level")
-  (return-type "EphyEmbedSecurityLevel")
-)
-
 (define-method get_size
   (of-object "EphyTab")
   (c-name "ephy_tab_get_size")
