diff --git a/src/org/sflphone/fragments/AccountsManagementFragment.java b/src/org/sflphone/fragments/AccountsManagementFragment.java
index 30181a8..7e3e289 100644
--- a/src/org/sflphone/fragments/AccountsManagementFragment.java
+++ b/src/org/sflphone/fragments/AccountsManagementFragment.java
@@ -399,10 +399,10 @@
          * @param accountState
          */
         public void updateAccount(Intent accountState) {
-            Log.i(TAG, "updateAccount");
             String id = accountState.getStringExtra("Account");
             String newState = accountState.getStringExtra("state");
 
+            Log.i(TAG, "updateAccount:"+newState);
             for (Account a : accounts) {
                 if (a.getAccountID().contentEquals(id)) {
                     a.setRegistered_state(newState);
diff --git a/src/org/sflphone/fragments/MenuFragment.java b/src/org/sflphone/fragments/MenuFragment.java
index 38f80e8..5460398 100644
--- a/src/org/sflphone/fragments/MenuFragment.java
+++ b/src/org/sflphone/fragments/MenuFragment.java
@@ -179,6 +179,7 @@
             @Override
             public void onItemSelected(AdapterView<?> arg0, View view, int pos, long arg3) {
                 mAccountAdapter.setSelectedAccount(pos);
+                view.findViewById(R.id.account_selected).setVisibility(View.GONE);
                 try {
                     mCallbacks.getService().setAccountOrder(mAccountAdapter.getAccountOrder());
                 } catch (RemoteException e) {
diff --git a/src/org/sflphone/model/Account.java b/src/org/sflphone/model/Account.java
index e668ceb..0931fc2 100644
--- a/src/org/sflphone/model/Account.java
+++ b/src/org/sflphone/model/Account.java
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2004-2012 Savoir-Faire Linux Inc.
+ *  Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
  *
  *  Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
  *
@@ -36,6 +36,7 @@
 import java.util.List;
 
 import org.sflphone.account.AccountCredentials;
+import org.sflphone.account.AccountDetail;
 import org.sflphone.account.AccountDetailAdvanced;
 import org.sflphone.account.AccountDetailBasic;
 import org.sflphone.account.AccountDetailSrtp;
@@ -43,7 +44,6 @@
 
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.util.Log;
 
 public class Account extends java.util.Observable implements Parcelable {
 
@@ -180,12 +180,12 @@
     }
 
     public boolean isEnabled() {
-        return (basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE).contentEquals("true"));
+        return (basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE).contentEquals(AccountDetail.TRUE_STR));
     }
 
     public void setEnabled(boolean isChecked) {
-        basicDetails.setDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE, (isChecked ? AccountDetailAdvanced.TRUE_STR
-                : AccountDetailAdvanced.FALSE_STR));
+        basicDetails.setDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE, (isChecked ? AccountDetail.TRUE_STR
+                : AccountDetail.FALSE_STR));
     }
 
     public HashMap<String, String> getDetails() {
