diff --git a/sflphone-android/src/org/sflphone/fragments/GeneralAccountFragment.java b/sflphone-android/src/org/sflphone/fragments/GeneralAccountFragment.java
index 1f215fa0b646ed16552eda69e9e6dd2d6fcde9c8..ad5997ff012544213f2235db658bd146ce63b242 100644
--- a/sflphone-android/src/org/sflphone/fragments/GeneralAccountFragment.java
+++ b/sflphone-android/src/org/sflphone/fragments/GeneralAccountFragment.java
@@ -99,16 +99,16 @@ public class GeneralAccountFragment extends PreferenceFragment {
                 if (!p.isTwoState) {
                     ((EditTextPreference) pref).setText(p.mValue);
                     if (pref instanceof PasswordPreference) {
-                        String tmp = new String();
+                        String tmp = "";
                         for (int i = 0; i < p.mValue.length(); ++i) {
                             tmp += "*";
-
                         }
                         pref.setSummary(tmp);
                     } else {
                         pref.setSummary(p.mValue);
                     }
                 } else {
+                    Log.i(TAG, "pref:"+p.mKey);
                     ((CheckBoxPreference) pref).setChecked(p.isChecked());
                 }
             } else {
diff --git a/sflphone-android/src/org/sflphone/model/account/AccountDetail.java b/sflphone-android/src/org/sflphone/model/account/AccountDetail.java
index 8c5dd98bb89fa389f8ead3ca1d93903c54f9c534..e26528767969b025fa76ad276e73b8584ea05af6 100644
--- a/sflphone-android/src/org/sflphone/model/account/AccountDetail.java
+++ b/sflphone-android/src/org/sflphone/model/account/AccountDetail.java
@@ -47,9 +47,7 @@ public interface AccountDetail {
         }
 
         public boolean isChecked() {
-            if (mValue.contentEquals("true"))
-                return true;
-            return false;
+            return mValue.contentEquals("true");
         }
     }
 
diff --git a/sflphone-android/src/org/sflphone/model/account/AccountDetailAdvanced.java b/sflphone-android/src/org/sflphone/model/account/AccountDetailAdvanced.java
index de45b0db1adf73c12ff87366bd62fbd98f5a1e61..6d23bd10e884662e7d5528757f3ea75d80c27e39 100644
--- a/sflphone-android/src/org/sflphone/model/account/AccountDetailAdvanced.java
+++ b/sflphone-android/src/org/sflphone/model/account/AccountDetailAdvanced.java
@@ -55,38 +55,20 @@ public class AccountDetailAdvanced implements AccountDetail {
 
     private ArrayList<AccountDetail.PreferenceEntry> privateArray;
 
-    public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() {
-        ArrayList<AccountDetail.PreferenceEntry> preference = new ArrayList<AccountDetail.PreferenceEntry>();
-
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_EXPIRE));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATUS));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATE_CODE));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATE_DESC));
-        preference.add(new PreferenceEntry(CONFIG_CREDENTIAL_NUMBER));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_DTMF_TYPE));
-        preference.add(new PreferenceEntry(CONFIG_RINGTONE_PATH));
-        preference.add(new PreferenceEntry(CONFIG_RINGTONE_ENABLED, true));
-        preference.add(new PreferenceEntry(CONFIG_KEEP_ALIVE_ENABLED, true));
-        preference.add(new PreferenceEntry(CONFIG_LOCAL_INTERFACE));
-        preference.add(new PreferenceEntry(CONFIG_PUBLISHED_SAMEAS_LOCAL, true));
-        preference.add(new PreferenceEntry(CONFIG_LOCAL_PORT));
-        preference.add(new PreferenceEntry(CONFIG_PUBLISHED_PORT));
-        preference.add(new PreferenceEntry(CONFIG_PUBLISHED_ADDRESS));
-        preference.add(new PreferenceEntry(CONFIG_STUN_SERVER));
-        preference.add(new PreferenceEntry(CONFIG_STUN_ENABLE, true));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_MAILBOX));
-
-        preference.add(new PreferenceEntry(CONFIG_AUDIO_PORT_MIN));
-        preference.add(new PreferenceEntry(CONFIG_AUDIO_PORT_MAX));
-
-        return preference;
-    }
-
     public AccountDetailAdvanced(HashMap<String, String> pref) {
-        privateArray = getPreferenceEntries();
+        privateArray = new ArrayList<AccountDetail.PreferenceEntry>();
 
-        for (AccountDetail.PreferenceEntry p : privateArray) {
-            p.mValue = pref.get(p.mKey);
+        for (String key : pref.keySet()) {
+            PreferenceEntry p = new PreferenceEntry(key);
+            p.mValue = pref.get(key);
+
+            if(key.contentEquals(CONFIG_RINGTONE_ENABLED) ||
+                    key.contentEquals(CONFIG_KEEP_ALIVE_ENABLED) ||
+                    key.contentEquals(CONFIG_PUBLISHED_SAMEAS_LOCAL) ||
+                    key.contentEquals(CONFIG_STUN_ENABLE))
+                p.isTwoState = true;
+
+            privateArray.add(p);
         }
     }
 
diff --git a/sflphone-android/src/org/sflphone/model/account/AccountDetailBasic.java b/sflphone-android/src/org/sflphone/model/account/AccountDetailBasic.java
index 2f0361675e486b591a6b65545abe78f13725db78..662a81ed896d5c7c3fc6bbc4c66d015c40297bb1 100644
--- a/sflphone-android/src/org/sflphone/model/account/AccountDetailBasic.java
+++ b/sflphone-android/src/org/sflphone/model/account/AccountDetailBasic.java
@@ -46,29 +46,17 @@ public class AccountDetailBasic implements AccountDetail {
 
     private ArrayList<AccountDetail.PreferenceEntry> privateArray;
 
-    public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() {
-        ArrayList<AccountDetail.PreferenceEntry> preference = new ArrayList<AccountDetail.PreferenceEntry>();
-
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, true));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_TYPE));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ALIAS));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_HOSTNAME));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_USERNAME));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ROUTESET));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_PASSWORD));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_AUTOANSWER, true));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REALM));
-        preference.add(new PreferenceEntry(CONFIG_ACCOUNT_USERAGENT));
-        preference.add(new PreferenceEntry(CONFIG_PRESENCE_ENABLE));
-
-        return preference;
-    }
-
     public AccountDetailBasic(HashMap<String, String> pref) {
-        privateArray = getPreferenceEntries();
+        privateArray = new ArrayList<AccountDetail.PreferenceEntry>();
 
-        for (AccountDetail.PreferenceEntry p : privateArray) {
-            p.mValue = pref.get(p.mKey);
+        for (String key : pref.keySet()) {
+            PreferenceEntry p = new PreferenceEntry(key);
+            p.mValue = pref.get(key);
+
+            if(key.contentEquals(CONFIG_ACCOUNT_ENABLE) || key.contentEquals(CONFIG_ACCOUNT_AUTOANSWER))
+                p.isTwoState = true;
+
+            privateArray.add(p);
         }
     }
 
diff --git a/sflphone-android/src/org/sflphone/utils/SwigNativeConverter.java b/sflphone-android/src/org/sflphone/utils/SwigNativeConverter.java
index 8014523c6be880003dd672935e36336fcf032508..a6ae2b6a2381e98c95ada85d78003631a5937d0c 100644
--- a/sflphone-android/src/org/sflphone/utils/SwigNativeConverter.java
+++ b/sflphone-android/src/org/sflphone/utils/SwigNativeConverter.java
@@ -98,11 +98,12 @@ public class SwigNativeConverter {
         nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_ENABLE));
         nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_USERAGENT, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_USERAGENT));
         nativemap.put(AccountDetailAdvanced.CONFIG_ACCOUNT_MAILBOX, swigmap.get(AccountDetailAdvanced.CONFIG_ACCOUNT_MAILBOX));
+        nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_AUTOANSWER, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_AUTOANSWER));
 
 		if (swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_TYPE).equals("SIP"))
 		{
-			nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_AUTOANSWER, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_AUTOANSWER));
-			nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_ROUTESET, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_ROUTESET));
+
+            nativemap.put(AccountDetailBasic.CONFIG_ACCOUNT_ROUTESET, swigmap.get(AccountDetailBasic.CONFIG_ACCOUNT_ROUTESET));
 			nativemap
 				.put(AccountDetailAdvanced.CONFIG_ACCOUNT_REGISTRATION_EXPIRE, swigmap.get(AccountDetailAdvanced.CONFIG_ACCOUNT_REGISTRATION_EXPIRE));
 			nativemap.put(AccountDetailAdvanced.CONFIG_LOCAL_INTERFACE, swigmap.get(AccountDetailAdvanced.CONFIG_LOCAL_INTERFACE));