diff --git a/sflphone-gtk/src/SFLnotify.c b/sflphone-gtk/src/SFLnotify.c
index d7f493887390e63afd64aa1e4851b3075b641a3d..58a1a77f680f093ff8000fcf2c8e711afa3e4759 100644
--- a/sflphone-gtk/src/SFLnotify.c
+++ b/sflphone-gtk/src/SFLnotify.c
@@ -42,7 +42,7 @@ notify_incoming_call( call_t* c  )
       callerid,
       NULL,
       NULL);
-  notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL );
+  notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL );
   notify_notification_set_icon_from_pixbuf (notification, pixbuf);
   notify_notification_attach_to_status_icon( notification , get_status_icon() );
   notify_notification_set_timeout( notification , (( g_strcasecmp(__TIMEOUT_MODE, "default") == 0 )? __TIMEOUT_TIME : NOTIFY_EXPIRES_NEVER ));
@@ -100,7 +100,7 @@ notify_voice_mails( guint count , account_t* acc )
       body,
       NULL,
       NULL);
-  notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL );
+  notify_notification_set_urgency( notification , NOTIFY_URGENCY_LOW );
   notify_notification_set_icon_from_pixbuf (notification, pixbuf);
   notify_notification_attach_to_status_icon( notification , get_status_icon() );
   notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT );
@@ -112,7 +112,7 @@ notify_voice_mails( guint count , account_t* acc )
 }
 
   void
-notify_registered_accounts( void )
+notify_switch_account( account_t* acc )
 {
   // the account is different from NULL
   GdkPixbuf *pixbuf;
@@ -120,35 +120,90 @@ notify_registered_accounts( void )
   gchar* body="";
   notify_init("sflphone");
 
-  guint size =  account_list_get_size();
-  int i;
+  body = g_markup_printf_escaped(_("Calling with %s account <i>%s</i>") ,
+				  g_hash_table_lookup( acc->properties , ACCOUNT_TYPE) ,
+				  g_hash_table_lookup( acc->properties , ACCOUNT_ALIAS));
+
+  title = g_markup_printf_escaped(_("Switching account"));
+
+  pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL);
+
+  notification = notify_notification_new( title,
+      body,
+      NULL,
+      NULL);
+  notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL );
+  notify_notification_set_icon_from_pixbuf (notification, pixbuf);
+  notify_notification_attach_to_status_icon( notification , get_status_icon() );
+  notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT );
+  notify_notification_add_action( notification , "ignore" , _("Ignore") , (NotifyActionCallback) ignore_call_cb , NULL , NULL );
+
+  if (!notify_notification_show (notification, NULL)) {
+    g_print("notify(), failed to send notification\n");
+  }
+}
+
+  void
+notify_no_accounts(  )
+{
+  GdkPixbuf *pixbuf;
+  gchar* title;
+  gchar* body="";
+  notify_init("sflphone");
+
+  body = g_markup_printf_escaped(_("You haven't setup any accounts")); 
+
+  title = g_markup_printf_escaped(_("Error"));
+
+  pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL);
+
+  notification = notify_notification_new( title,
+      body,
+      NULL,
+      NULL);
+  notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL );
+  notify_notification_set_icon_from_pixbuf (notification, pixbuf);
+  notify_notification_attach_to_status_icon( notification , get_status_icon() );
+  notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT );
+  notify_notification_add_action( notification , "setup" , _("Setup Accounts") , (NotifyActionCallback) setup_accounts_cb , NULL , NULL );
+
+  if (!notify_notification_show (notification, NULL)) {
+    g_print("notify(), failed to send notification\n");
+  }
+}
+
+ void
+setup_accounts_cb( NotifyNotification *notification, gchar *action, gpointer data )
+{
+  show_accounts_window(0);
+  g_object_unref( notification );
+}
 
-  if( size > 0 ){
-    for( i = 0 ; i < size ; i++ ){
+  void
+notify_no_registered_accounts(  )
+{
+  GdkPixbuf *pixbuf;
+  gchar* title;
+  gchar* body="";
+  notify_init("sflphone");
 
-      body = g_markup_printf_escaped(_("%s%s (%s) - State:<i>%s</i>") ,
-	  body,
-	  g_hash_table_lookup( account_list_get_nth(i)->properties , ACCOUNT_ALIAS),
-	  g_hash_table_lookup( account_list_get_nth(i)->properties , ACCOUNT_TYPE) ,
-	  account_state_name( account_list_get_nth(i)->state)) ;
-    }
+  body = g_markup_printf_escaped(_("You have no registered accounts")); 
 
-    title = g_markup_printf_escaped(_("Accounts"));
+  title = g_markup_printf_escaped(_("Error"));
 
-    pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL);
+  pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL);
 
-    notification = notify_notification_new( title,
-	body,
-	NULL,
-	NULL);
-    notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL );
-    notify_notification_set_icon_from_pixbuf (notification, pixbuf);
-    notify_notification_attach_to_status_icon( notification , get_status_icon() );
-    notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT );
-    notify_notification_add_action( notification , "ignore" , _("Ignore") , (NotifyActionCallback) ignore_call_cb , NULL , NULL );
+  notification = notify_notification_new( title,
+      body,
+      NULL,
+      NULL);
+  notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL );
+  notify_notification_set_icon_from_pixbuf (notification, pixbuf);
+  notify_notification_attach_to_status_icon( notification , get_status_icon() );
+  notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT );
+  notify_notification_add_action( notification , "setup" , _("Setup Accounts") , (NotifyActionCallback) setup_accounts_cb , NULL , NULL );
 
-    if (!notify_notification_show (notification, NULL)) {
-      g_print("notify(), failed to send notification\n");
-    }
+  if (!notify_notification_show (notification, NULL)) {
+    g_print("notify(), failed to send notification\n");
   }
 }
diff --git a/sflphone-gtk/src/SFLnotify.h b/sflphone-gtk/src/SFLnotify.h
index 7dfed316a6d4682345f7eb790f8b0225d065220a..1f80d3207d34f9f90a3e82579f204e07d72dcf27 100644
--- a/sflphone-gtk/src/SFLnotify.h
+++ b/sflphone-gtk/src/SFLnotify.h
@@ -42,7 +42,9 @@ void notify_incoming_call( call_t* c);
 
 void notify_voice_mails( guint count , account_t* acc );
 
-void notify_registered_accounts();
+void notify_switch_account( account_t* acc );
+void notify_no_accounts( );
+void notify_no_registered_accounts(  );
 /*
  * Callback when answer button is pressed. 
  * Action: Pick up the incoming call 
@@ -67,4 +69,5 @@ void refuse_call_cb( NotifyNotification *notification, gchar *action, gpointer d
  */
 void ignore_call_cb( NotifyNotification *notification, gchar *action, gpointer data );
 
+void setup_accounts_cb(NotifyNotification *notification, gchar *action, gpointer data);
 #endif
diff --git a/sflphone-gtk/src/accountlist.c b/sflphone-gtk/src/accountlist.c
index 3000dd43379661664b19cdf611c9489bc56530fa..2e3197b163cfb602d71daf9bd2e43e58647655e8 100644
--- a/sflphone-gtk/src/accountlist.c
+++ b/sflphone-gtk/src/accountlist.c
@@ -23,7 +23,7 @@
 #include <string.h>
 
 GQueue * accountQueue;
-account_t * __CURRENT_ACCOUNT=NULL;
+gchar* __CURRENT_ACCOUNT_ID = NULL;
 
 /* GCompareFunc to compare a accountID (gchar* and a account_t) */
 gint 
@@ -129,19 +129,19 @@ account_list_get_nth ( guint n )
 account_t*
 account_list_get_current( )
 {
-  return __CURRENT_ACCOUNT;
+  return account_list_get_by_id( __CURRENT_ACCOUNT_ID );
 }
 
 void
 account_list_set_current_id(const gchar * accountID)
 {
-  __CURRENT_ACCOUNT = account_list_get_by_id(g_strdup(accountID));
+  __CURRENT_ACCOUNT_ID = g_strdup(accountID);
 }
 
 void
 account_list_set_current_pos( guint n)
 {
-  __CURRENT_ACCOUNT = account_list_get_nth(n);
+  __CURRENT_ACCOUNT_ID = account_list_get_nth(n)->accountID;
 }
 
 const gchar * account_state_name(account_state_t s)
diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index 526d0103aa418d29b18f918567e3a2133d7c8465..2de7fe6775d665e6b283a37c6b1c030c947febe8 100644
--- a/sflphone-gtk/src/actions.c
+++ b/sflphone-gtk/src/actions.c
@@ -194,8 +194,8 @@ sflphone_init()
 	{
 		dbus_register(getpid(), "Gtk+ Client");
 		sflphone_fill_account_list();
-		sflphone_set_current_account();
 		sflphone_fill_codec_list();
+		sflphone_set_current_account();
 		return TRUE;
 	}
 }
@@ -568,16 +568,16 @@ sflphone_keypad( guint keyval, gchar * key)
 void 
 sflphone_place_call ( call_t * c )
 {
-  //status_bar_display_account(c);
   if(c->state == CALL_STATE_DIALING)
   {
     account_t * current = account_list_get_current();
     if( current )
     {
-      if(strcmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0)
+      if(g_strcasecmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0)
       { 
 	// OK, everything alright - the call is made with the current account
 	c -> accountID = current -> accountID;
+	status_bar_display_account(c);
 	dbus_place_call(c);
       }
       else
@@ -588,19 +588,21 @@ sflphone_place_call ( call_t * c )
 	for( pos = 1 ; pos < account_list_get_size() ; pos++ ){
 	  current =  account_list_get_nth(pos);
 	  if( current ){
-	    if( strcmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0 ){
-	      // notify_switch_account();
+	    if( g_strcasecmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0 ){
+	      notify_switch_account( current );
 	      //main_warning_error_message(_("Switch account."));
 	      c -> accountID = current -> accountID;
+	      status_bar_display_account(c);
 	      dbus_place_call(c);
 	      break;
 	    }
 	  }
 	}
+	notify_no_registered_accounts();
       }
     }
     else{
-      // notify_no_accounts();
+      notify_no_accounts();
       main_window_error_message(_("There is no accounts to make this call with."));
     }
   }