Merged AccountCreationActivity and AccountPreferenceActivity (redundant)
Fixed issues in account edition
Added layouts for action bar menus (+ icons)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ed3877e..34dc33f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -70,9 +70,6 @@
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="com.savoirfairelinux.sflphone.client.SFLPhoneHome" />
         </activity>
-        <activity android:name=".client.AccountCreationActivity"
-                  android:label="@string/app_name"
-                  android:screenOrientation="portrait"/>
         <activity android:name=".client.AccountPreferenceActivity"
                   android:label="@string/app_name"
                   android:screenOrientation="portrait"/>
diff --git a/bin/AndroidManifest.xml b/bin/AndroidManifest.xml
index ed3877e..34dc33f 100644
--- a/bin/AndroidManifest.xml
+++ b/bin/AndroidManifest.xml
@@ -70,9 +70,6 @@
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="com.savoirfairelinux.sflphone.client.SFLPhoneHome" />
         </activity>
-        <activity android:name=".client.AccountCreationActivity"
-                  android:label="@string/app_name"
-                  android:screenOrientation="portrait"/>
         <activity android:name=".client.AccountPreferenceActivity"
                   android:label="@string/app_name"
                   android:screenOrientation="portrait"/>
diff --git a/res/drawable-hdpi/ic_checkmark_holo_light.png b/res/drawable-hdpi/ic_checkmark_holo_light.png
new file mode 100644
index 0000000..1607f35
--- /dev/null
+++ b/res/drawable-hdpi/ic_checkmark_holo_light.png
Binary files differ
diff --git a/res/menu/account_creation.xml b/res/menu/account_creation.xml
new file mode 100644
index 0000000..9fc56fd
--- /dev/null
+++ b/res/menu/account_creation.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <item
+        android:id="@+id/menuitem_create"
+        android:icon="@drawable/ic_checkmark_holo_light"
+        android:showAsAction="ifRoom"
+        android:title="Create"/>
+
+</menu>
\ No newline at end of file
diff --git a/res/menu/account_edition.xml b/res/menu/account_edition.xml
new file mode 100644
index 0000000..4714e87
--- /dev/null
+++ b/res/menu/account_edition.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <item
+        android:id="@+id/menuitem_delete"
+        android:title="Delete"
+        android:showAsAction="ifRoom"
+        android:icon="@android:drawable/ic_menu_delete"/>
+    
+        <item
+        android:id="@+id/menuitem_edit"
+        android:title="Edit"
+        android:showAsAction="ifRoom"
+        android:icon="@android:drawable/ic_menu_edit"/>
+    
+
+</menu>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f1e17c3..5ea9b6b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -152,6 +152,5 @@
         <string name="default_account_category">Default Account</string> 
         <string name="account_list_category">Account List</string>
 
-        <string name="account_current_value_label">Current value:: </string>
 
 </resources>
diff --git a/res/xml/account_creation_preferences.xml b/res/xml/account_creation_preferences.xml
index 41791ac..e726149 100644
--- a/res/xml/account_creation_preferences.xml
+++ b/res/xml/account_creation_preferences.xml
@@ -39,64 +39,64 @@
         android:persistent="false"
         android:defaultValue="true"
         android:title="Account enabled"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_type"
         android:key="Account.type"
         android:persistent="false"
         android:defaultValue="SIP"
         android:title="Type"
-        android:summary="Current value:: SIP"/>
+        android:summary="SIP"/>
     <EditTextPreference
         android:id="@+id/account_creation_alias"
         android:key="Account.alias"
         android:persistent="false"
         android:defaultValue=""
         android:title="Alias"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_hostname"
         android:key="Account.hostname"
         android:persistent="false"
         android:defaultValue=""
         android:title="Hostname"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_username"
         android:key="Account.username"
         android:persistent="false"
         android:defaultValue=""
         android:title="Username"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_routeset"
         android:key="Account.routeset"
         android:persistent="false"
         android:defaultValue=""
         android:title="Route Set"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_password"
         android:key="Account.password"
         android:persistent="false"
         android:defaultValue=""
         android:title="Password"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_realm"
         android:key="Account.realm"
         android:persistent="false"
         android:defaultValue="*"
         android:title="Realm"
-        android:summary="Current value:: *"/>
+        android:summary="*"/>
     <EditTextPreference
         android:id="@+id/account_creation_useragent"
         android:key="Account.useragent"
         android:persistent="false"
         android:defaultValue="SFLPhone"
         android:title="User Agent"
-        android:summary="Current value:: SFLPhone"/>
+        android:summary="SFLPhone"/>
   </PreferenceCategory>
   <PreferenceCategory
       android:id="@+id/account_advanced_category"
@@ -107,138 +107,133 @@
         android:persistent="false"
         android:defaultValue="60"
         android:title="Registration Expire"
-        android:summary="Current value:: 60"/>
+        android:summary="60"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_autoanswer"
         android:key="Account.autoAnswer"
         android:persistent="false"
         android:defaultValue="false"
         android:title="Auto Answer"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_registration_status"
         android:key="Account.registrationStatus"
         android:persistent="false"
         android:defaultValue=""
         android:title="Registration Status"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_registration_state_code"
         android:key="Account.registrationCode"
         android:persistent="false"
         android:defaultValue=""
         android:title="Registration Code"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_registration_state_desc"
         android:key="Account.registrationDescription"
         android:persistent="false"
         android:defaultValue=""
         android:title="Registration Desciption"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_credential_number"
         android:key="Credential.count"
         android:persistent="false"
         android:defaultValue="0"
         android:title="Credential Number"
-        android:summary="Current value:: 0"/>
+        android:summary="0"/>
     <EditTextPreference
         android:id="@+id/account_creation_dtmf_type"
         android:key="Account.dtmfType"
         android:persistent="false"
         android:defaultValue="SIP"
         android:title="DTMF Type"
-        android:summary="Current value:: SIP"/>
+        android:summary="SIP"/>
     <EditTextPreference
         android:id="@+id/account_creation_ringtone_path"
         android:key="Account.ringtonePath"
         android:persistent="false"
         android:defaultValue=""
-        android:title="Ringtone Path"
-        android:summary="Current value:: "/>
+        android:title="Ringtone Path"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_ringtone_enabled"
         android:key="Account.ringtoneEnabled"
         android:persistent="false"
         android:defaultValue="true"
-        android:title="Ringtone Enabled"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:title="Ringtone Enabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_keep_alive"
         android:key="Account.keepAliveEnabled"
         android:persistent="false"
         android:defaultValue="false"
-        android:title="Keep Alive"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:title="Keep Alive"/>
     <EditTextPreference
         android:id="@+id/account_creation_local_interface"
         android:key="Account.localInterface"
         android:persistent="false"
         android:defaultValue="eth0"
         android:title="Local Interface"
-        android:summary="Current value:: eth0"/>
+        android:summary="eth0"/>
     <EditTextPreference
         android:id="@+id/account_creation_interface"
         android:key="Account.interface"
         android:persistent="false"
         android:defaultValue="eht0"
         android:title="Interface"
-        android:summary="Current value:: eth0"/>
+        android:summary="eth0"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_published_sameas_local"
         android:key="Account.publishedSameAsLocal"
         android:persistent="false"
         android:defaultValue="false"
         android:title="Published same as local"
-        android:summaryOn="Current value:: yes"
-        android:summaryOff="Current value:: no"/>
+        android:summaryOn="yes"
+        android:summaryOff="no"/>
     <EditTextPreference
         android:id="@+id/account_creation_local_port"
         android:key="Account.localPort"
         android:persistent="false"
         android:defaultValue="5060"
         android:title="Local Port"
-        android:summary="Current value:: 5060"/>
+        android:summary="5060"/>
     <EditTextPreference
         android:id="@+id/account_creation_published_port"
         android:key="Account.publishedPort"
         android:persistent="false"
         android:defaultValue="5060"
         android:title="Published Port"
-        android:summary="Current value:: 5060"/>
+        android:summary="5060"/>
     <EditTextPreference
         android:id="@+id/account_creation_published_address"
         android:key="Account.publishedAddress"
         android:persistent="false"
         android:defaultValue="0.0.0.0"
         android:title="Published Address"
-        android:summary="Current value:: 0.0.0.0"/>
+        android:summary="0.0.0.0"/>
     <EditTextPreference
         android:id="@+id/account_creation_display_name"
         android:key="Account.displayName"
         android:persistent="false"
         android:defaultValue="SFLPhone"
         android:title="Display Name"
-        android:summary="Current value:: SFLPhone"/>
+        android:summary="SFLPhone"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_stun_enable"
         android:key="STUN.enable"
         android:persistent="false"
         android:defaultValue="false"
         android:title="Stun Enabled"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_stun_server"
         android:key="STUN.server"
         android:persistent="false"
         android:defaultValue=""
         android:title="Stun Server"
-        android:summary="Current value:: "/>
+        android:summary=""/>
   </PreferenceCategory>
   <PreferenceCategory
       android:id="@+id/account_srtp_category"
@@ -249,64 +244,64 @@
         android:persistent="false"
         android:defaultValue="false"
         android:title="SRTP Enabled"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_key_exchange"
         android:key="SRTP.keyExchange"
         android:persistent="false"
         android:defaultValue="false"
         android:title="SRTP Key Exchange"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_encryp_algo"
         android:key="SRTP.encryptionAlgorithm"
         android:persistent="false"
         android:defaultValue="false"
         android:title="SRTP Encrypt Algo"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_rtp_fallback"
         android:key="SRTP.rtpFallback"
         android:persistent="false"
         android:defaultValue="false"
         android:title="SRTP RTP Fallback"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_hello_hash"
         android:key="ZRTP.helloHashEnable"
         android:persistent="false"
         android:defaultValue="disabled"
         android:title="ZRTP Hello Hash"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_display_sas"
         android:key="ZRTP.displaySAS"
         android:persistent="false"
         android:defaultValue="false"
         android:title="ZRTP Display SAS"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_supported_warning"
         android:key="ZRTP.notSuppWarning"
         android:persistent="false"
         android:defaultValue="false"
         android:title="ZRTP Not Supported Warning"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_srtp_displaysas_once"
         android:key="ZRTP.displaySasOnce"
         android:persistent="false"
         android:defaultValue="false"
         android:title="ZRTP Display SAS Once"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
   </PreferenceCategory>
   <PreferenceCategory
       android:id="@+id/account_tls_category"
@@ -317,101 +312,101 @@
         android:persistent="false"
         android:defaultValue="false"
         android:title="TLS Enabled"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_listener_port"
         android:key="TLS.listenerPort"
         android:persistent="false"
         android:defaultValue="5061"
         android:title="Listener Port"
-        android:summary="Current value:: 5061"/>
+        android:summary="5061"/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_certificate_list_file"
         android:key="TLS.certificateListFile"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Certificate List File"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_certificate_file"
         android:key="TLS.certificateFile"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Certificate File"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_private_key_file"
         android:key="TLS.privateKeyFile"
         android:persistent="false"
         android:defaultValue="disabled"
         android:title="TLS Private Key File"
-        android:summary="Current value:: disabled"/>
+        android:summary="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_password"
         android:key="TLS.password"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Password"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_method"
         android:key="TLS.method"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Method"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_ciphers"
         android:key="TLS.ciphers"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Ciphers"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_server_name"
         android:key="TLS.serverName"
         android:persistent="false"
         android:defaultValue=""
         android:title="TLS Server Name"
-        android:summary="Current value:: "/>
+        android:summary=""/>
     <CheckBoxPreference
         android:id="@+id/account_creation_tls_verify_server"
         android:key="TLS.verifyServer"
         android:persistent="false"
         android:defaultValue="false"
         android:title="TLS Verify Server"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_tls_verify_client"
         android:key="TLS.verifyClient"
         android:persistent="false"
         android:defaultValue="false"
         android:title="TLS Verify Client"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <CheckBoxPreference
         android:id="@+id/account_creation_tls_require_client_cert"
         android:key="TLS.requireClientCertificate"
         android:persistent="false"
         android:defaultValue="false"
         android:title="TLS Require Client Certificate"
-        android:summaryOn="Current value:: enabled"
-        android:summaryOff="Current value:: disabled"/>
+        android:summaryOn="enabled"
+        android:summaryOff="disabled"/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_timeout_sec"
         android:key="TLS.negotiationTimeoutSec"
         android:persistent="false"
         android:defaultValue="60"
         android:title="TLS Timeout Sec"
-        android:summary="Current value:: 60"/>
+        android:summary="60"/>
     <EditTextPreference
         android:id="@+id/account_creation_tls_timeout_msec"
         android:key="TLS.negotiationTimeoutMsec"
         android:persistent="false"
         android:defaultValue="0"
         android:title="TLS Timeout Msec"
-        android:summary="Current value:: 0"/>
+        android:summary="0"/>
   </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
index 50a6257..9507c24 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
@@ -58,6 +58,8 @@
         }
     }
 
+    public static final String TAG = "PreferenceHashMap";
+
     public ArrayList<PreferenceEntry> getDetailValues();
 
     public ArrayList<String> getValuesOnly();
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
index 03a1354..0db2523 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
@@ -107,6 +107,7 @@
         ArrayList<String> valueList = new ArrayList<String>();
 
         for(AccountDetail.PreferenceEntry p : privateArray) {
+            Log.i(TAG,""+p.mValue);
             valueList.add(p.mValue);
         }
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
index 3e71d72..6b8c41b 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
@@ -21,16 +21,13 @@
  */
 package com.savoirfairelinux.sflphone.account;
 
-import android.util.Log;
+import java.util.ArrayList;
+import java.util.HashMap;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.service.ServiceConstants;
 import com.savoirfairelinux.sflphone.service.StringMap;
 
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-
 public class AccountDetailsHandler {
     private static final String TAG = "AccountDetailsHandler";
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java b/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
index 6401d5b..d58aa7c 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
@@ -32,7 +32,7 @@
 
 import java.util.ArrayList;
 
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
 
 public interface AccountManagementUI
 {
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java b/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
index ef23f35..9642fdf 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
@@ -32,6 +32,8 @@
 
 import java.util.ArrayList;
 
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
+
 import android.content.Context;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -92,12 +94,18 @@
     };
 
 
+    /****************************************
+     * AccountManagementUI Interface
+     ****************************************/
+    
+    @Override
     public void setAccountList(AccountListReceiver accountList) {
         Log.i(TAG,"setAccountList");
         mAccountList = accountList;
         
     }
 
+    @Override
     public void accountSelectedNotifyAccountList(String accountID) {
         Log.i(TAG, "->accountSelectedNotifyAccountList");
         if (mAccountList != null) {
@@ -105,11 +113,13 @@
         }
     }
 
+    @Override
     public void setSelectedAccount(String accountID) {
         Log.i(TAG,"Account Selected");
         // setText(accountID);
     }
 
+    @Override
     public void accountAdded(ArrayList<String> newList) {
         mListAdapter = new ArrayAdapter(mContext, android.R.layout.simple_expandable_list_item_1, newList.toArray());
 
@@ -123,10 +133,12 @@
         // }
     }
 
+    @Override
     public void accountRemoved() {
         Log.i(TAG,"Account Removed");
     }
 
+    @Override
     public void accountUpdated() {
         Log.i(TAG,"Account Updated");
     }
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
deleted file mode 100644
index 93de02e..0000000
--- a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- *  Copyright (C) 2004-2012 Savoir-Faire Linux Inc.
- *
- *  Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Additional permission under GNU GPL version 3 section 7:
- *
- *  If you modify this program, or any covered work, by linking or
- *  combining it with the OpenSSL project's OpenSSL library (or a
- *  modified version of that library), containing parts covered by the
- *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
- *  grants you additional permission to convey the resulting work.
- *  Corresponding Source for a non-source form of such a combination
- *  shall include the source code for the parts of OpenSSL used as well
- *  as that of the covered work.
- */
-
-package com.savoirfairelinux.sflphone.client;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceManager;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountDetail;
-import com.savoirfairelinux.sflphone.account.AccountDetailAdvanced;
-import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
-import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
-import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.service.ISipService;
-import com.savoirfairelinux.sflphone.service.SipService;
-
-public class AccountCreationActivity extends PreferenceActivity
-{
-    static final String TAG = "SFLPhonePreferenceActivity";
-    private ISipService service;
-    private boolean mBound = false;
-    private PreferenceManager mPreferenceManager = null;
-    private AccountDetailBasic basicDetails;
-    private AccountDetailAdvanced advancedDetails;
-    private AccountDetailSrtp srtpDetails;
-    private AccountDetailTls tlsDetails;
-    private MenuItem createAccountAction = null;
-    private ArrayList<String> requiredFields = null;
-
-    Preference.OnPreferenceChangeListener changeNewAccountPreferenceListener = new Preference.OnPreferenceChangeListener() {
-        public boolean onPreferenceChange(Preference preference, Object newValue) {
-            preference.setSummary(getString(R.string.account_current_value_label) + (CharSequence)newValue);
-            return true;
-        }
-    };
-
-    Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = new Preference.OnPreferenceChangeListener() {
-        public boolean onPreferenceChange(Preference preference, Object newValue) {
-            return true;
-        } 
-    };
-
-    private ServiceConnection mConnection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName className, IBinder binder) {
-            service = ISipService.Stub.asInterface(binder);
-            mBound = true;
-            Log.d(TAG, "Service connected");
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName arg0) {
-            mBound = false;
-            Log.d(TAG, "Service disconnected");
-        }
-    };
-
-    public AccountCreationActivity()
-    {
-        basicDetails = new AccountDetailBasic();
-        advancedDetails = new AccountDetailAdvanced();
-        srtpDetails = new AccountDetailSrtp();
-        tlsDetails = new AccountDetailTls();
-
-        requiredFields = new ArrayList<String>();
-
-        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS);
-        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME);
-        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME);
-        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD);
-    }
-
-    private AlertDialog createAlertDialog()
-    {
-        Activity ownerActivity = this;
-        AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
-        builder.setMessage("All parameters will be lost").setTitle("Account Creation")
-               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        Activity activity = ((Dialog)dialog).getOwnerActivity();
-                        activity.finish();
-                    }
-                })
-                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int whichButton) {
-                        /* Terminate with no action */
-                    }
-                });
-
-        AlertDialog alertDialog = builder.create();
-        alertDialog.setOwnerActivity(ownerActivity);
-
-        return alertDialog;
-    }
-
-    private AlertDialog createCouldNotValidateDialog(ArrayList<String> missingValue)
-    {
-        String message = "The following parameters are missing:";
-
-        for(String s : missingValue)
-            message += "\n    - " + s;
-
-        Activity ownerActivity = this;
-        AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
-        builder.setMessage(message).setTitle("Missing Parameters")
-               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                   public void onClick(DialogInterface dialog, int whichButton) {
-                       /* Nothing to be done */
-                   }
-               });
-
-        AlertDialog alertDialog = builder.create();
-        return alertDialog;
-    }
-
-    public boolean validateAccountCreation(ArrayList<String> missingValue)
-    {
-        boolean valid = true;
-
-        for(String s : requiredFields) {
-            EditTextPreference pref = (EditTextPreference)mPreferenceManager.findPreference(s);
-            Log.i(TAG, "Looking for " + s);
-            if(pref.getText().isEmpty()) {
-                Log.i(TAG, "    INVALIDATED " + s + " " + pref.getText() + ";");
-                valid = false;
-                missingValue.add(pref.getTitle().toString());
-            }
-        }
-
-        return valid;
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        addPreferencesFromResource(R.xml.account_creation_preferences);
-        mPreferenceManager = getPreferenceManager();
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        createAccountAction = menu.add("Create Account");
-        createAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        ArrayList<String> missingValue = new ArrayList<String>();
-        if(validateAccountCreation(missingValue)) {
-            createNewAccount();
-            finish();
-        }
-        else {
-            AlertDialog dialog = createCouldNotValidateDialog(missingValue);
-            dialog.show();
-        }
-
-        return true;
-    }
-
-    private void addPreferenceListener(AccountDetail details) {
-        for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
-            Preference pref = mPreferenceManager.findPreference(p.mKey);
-            if(pref != null) {
-                if(!p.isTwoState) {
-                    pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener);
-                }
-            }
-        }
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-
-        addPreferenceListener(basicDetails);
-        addPreferenceListener(advancedDetails);
-        addPreferenceListener(srtpDetails);
-        addPreferenceListener(tlsDetails);
- 
-        if(!mBound) {
-            Log.i(TAG, "onStart: Binding service...");
-            Intent intent = new Intent(this, SipService.class);
-            bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
-        }
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-
-        if(mBound) {
-            Log.i(TAG, "onStop: Unbinding service...");
-            unbindService(mConnection);
-            mBound = false;
-        }
-    }
-
-    @Override
-    public void onBackPressed() {
-
-        AlertDialog dialog = createAlertDialog();
-        dialog.show();
-    }
-
-    private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) {
-        for(AccountDetail.PreferenceEntry p : det.getDetailValues()) {
-            Preference pref = mPreferenceManager.findPreference(p.mKey);
-            if(pref != null) {
-                if(p.isTwoState) {
-                    CheckBoxPreference boxPref = (CheckBoxPreference) pref;
-                    accountDetails.put(p.mKey, boxPref.isChecked() ? "true" : "false");
-                }
-                else {
-                    EditTextPreference textPref = (EditTextPreference) pref;
-                    accountDetails.put(p.mKey, textPref.getText());
-                }
-            }
-        }
-    }
-
-    private void createNewAccount() {
-
-        HashMap<String, String> accountDetails = new HashMap<String, String>();
-
-        updateAccountDetails(accountDetails, basicDetails);
-        updateAccountDetails(accountDetails, advancedDetails);
-        updateAccountDetails(accountDetails, srtpDetails);
-        updateAccountDetails(accountDetails, tlsDetails);
-
-        try {
-            Log.i(TAG, "ADD ACCOUNT");
-            service.addAccount(accountDetails);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Cannot call service method", e);
-        }
-    }
-}
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index 72c8efd..a11b80c 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -31,24 +31,23 @@
 
 package com.savoirfairelinux.sflphone.client;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
+import android.preference.CheckBoxPreference;
+import android.preference.EditTextPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceManager;
-import android.preference.PreferenceScreen;
-import android.preference.EditTextPreference;
-import android.preference.CheckBoxPreference;
 import android.util.Log;
 import android.view.Menu;
+import android.view.MenuInflater;
 import android.view.MenuItem;
 
 import com.savoirfairelinux.sflphone.R;
@@ -57,49 +56,73 @@
 import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
 import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
 import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.account.AccountDetailsHandler;
 
-import java.util.HashMap;
-import java.util.ArrayList;
-
-public class AccountPreferenceActivity extends PreferenceActivity
-{
+public class AccountPreferenceActivity extends PreferenceActivity {
     private static final String TAG = "AccoutPreferenceActivity";
-    public static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 0;
-    public static final int ACCOUNT_NOT_MODIFIED = Activity.RESULT_FIRST_USER + 1;
-    public static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
+
+    public static final String KEY_MODE = "mode";
+
+    public interface mode {
+        static final int CREATION_MODE = 0;
+        static final int EDITION_MODE = 1;
+    }
+
+    public interface result {
+        static final int ACCOUNT_CREATED = Activity.RESULT_FIRST_USER + 0;
+        static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 1;
+        static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
+    }
 
     private AccountDetailBasic basicDetails = null;
     private AccountDetailAdvanced advancedDetails = null;
     private AccountDetailSrtp srtpDetails = null;
     private AccountDetailTls tlsDetails = null;
     private PreferenceManager mPreferenceManager;
-    private HashMap<String, String> mPreferenceMap;
-    private MenuItem deleteAccountAction = null;
     private String mAccountID;
-           
-    Preference.OnPreferenceChangeListener changeBasicPreferenceListener = 
-                                            new Preference.OnPreferenceChangeListener() {
-        public boolean onPreferenceChange(Preference preference, Object newValue) {
-            preference.setSummary(getString(R.string.account_current_value_label)+(CharSequence)newValue);
-            
-            // String preferenceKey = basicDetailKeys.get(preference.getOrder()).mKey; 
-            // accountPreference.preferenceMap.put(preferenceKey, ((CharSequence)newValue).toString());
-            basicDetails.setDetailString(preference.getOrder(), ((CharSequence)newValue).toString());
-            // if(preferenceKey == AccountDetailBasic.CONFIG_ACCOUNT_ALIAS)
-            //     accountPreference.mScreen.setTitle(((CharSequence)newValue.toString()));
-            return true;
-        }
-    };
+    private ArrayList<String> requiredFields = null;
 
-    Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = 
-                                            new Preference.OnPreferenceChangeListener() {
-        public boolean onPreferenceChange(Preference preference, Object newValue) {
-            return true;
-        }
-    };
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.account_creation_preferences);
+        mPreferenceManager = getPreferenceManager();
 
-    private void init() {
+        Bundle b = getIntent().getExtras();
+
+        switch (b.getInt(KEY_MODE)) {
+        case mode.CREATION_MODE:
+            Log.i(TAG, "CREATION");
+            initCreation();
+            break;
+        case mode.EDITION_MODE:
+            Log.i(TAG, "ESDITION");
+            initEdition();
+            break;
+        }
+
+        requiredFields = new ArrayList<String>();
+        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS);
+        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME);
+        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME);
+        requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD);
+
+    }
+
+    private void initCreation() {
+        basicDetails = new AccountDetailBasic();
+        advancedDetails = new AccountDetailAdvanced();
+        srtpDetails = new AccountDetailSrtp();
+        tlsDetails = new AccountDetailTls();
+
+        addPreferenceListener(basicDetails);
+        addPreferenceListener(advancedDetails);
+        addPreferenceListener(srtpDetails);
+        addPreferenceListener(tlsDetails);
+
+    }
+    
+    private void initEdition() {
 
         Bundle b = getIntent().getExtras();
         mAccountID = b.getString("AccountID");
@@ -108,7 +131,7 @@
         ArrayList<String> srtpPreferenceList = b.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG);
         ArrayList<String> tlsPreferenceList = b.getStringArrayList(AccountDetailTls.BUNDLE_TAG);
 
-        basicDetails = new AccountDetailBasic(basicPreferenceList); 
+        basicDetails = new AccountDetailBasic(basicPreferenceList);
         advancedDetails = new AccountDetailAdvanced(advancedPreferenceList);
         srtpDetails = new AccountDetailSrtp(srtpPreferenceList);
         tlsDetails = new AccountDetailTls(tlsPreferenceList);
@@ -124,113 +147,225 @@
         addPreferenceListener(tlsDetails);
     }
 
-    private void setPreferenceDetails(AccountDetail details) {
-        for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+
+        Bundle b = getIntent().getExtras();
+
+        switch (b.getInt(KEY_MODE)) {
+        case mode.CREATION_MODE:
+            Log.i(TAG, "CREATION");
+            inflater.inflate(R.menu.account_creation, menu);
+            break;
+        case mode.EDITION_MODE:
+            Log.i(TAG, "onCreateOptionsMenu: " + mAccountID);
+
+            if (mAccountID.equals("IP2IP"))
+                return true;
+
+            inflater.inflate(R.menu.account_edition, menu);
+            break;
+        }
+
+        return true;
+    }
+
+    @Override
+    public void onBackPressed() {
+        Bundle b = getIntent().getExtras();
+        switch (b.getInt(KEY_MODE)) {
+        case mode.CREATION_MODE:
+            Log.i(TAG, "CREATION");
+            AlertDialog dialog = createCancelDialog();
+            dialog.show();
+            break;
+        case mode.EDITION_MODE:
+            finish();
+        }
+
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        switch (item.getItemId()) {
+        case R.id.menuitem_delete:
+            AlertDialog dialog = createDeleteDialog();
+            dialog.show();
+            break;
+        case R.id.menuitem_create:
+            processAccount(result.ACCOUNT_CREATED);
+            break;
+        case R.id.menuitem_edit:
+            processAccount(result.ACCOUNT_MODIFIED);
+            break;
+
+        }
+
+        return true;
+    }
+
+    private void processAccount(int resultCode) {
+        AlertDialog dialog;
+        ArrayList<String> missingValue = new ArrayList<String>();
+        if (validateAccountCreation(missingValue)) {
+
+            Bundle bundle = new Bundle();
+            bundle.putString("AccountID", mAccountID);
+            HashMap<String, String> accountDetails = new HashMap<String, String>();
+
+            updateAccountDetails(accountDetails, basicDetails);
+            updateAccountDetails(accountDetails, advancedDetails);
+            updateAccountDetails(accountDetails, srtpDetails);
+            updateAccountDetails(accountDetails, tlsDetails);
+
+            bundle.putSerializable(AccountDetail.TAG, accountDetails);
+            Intent resultIntent = new Intent();
+            resultIntent.putExtras(bundle);
+
+            setResult(resultCode, resultIntent);
+            finish();
+        } else {
+            dialog = createCouldNotValidateDialog(missingValue);
+            dialog.show();
+        }
+
+    }
+
+    public boolean validateAccountCreation(ArrayList<String> missingValue) {
+        boolean valid = true;
+
+        for (String s : requiredFields) {
+            EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
+            Log.i(TAG, "Looking for " + s);
+            if (pref.getText().isEmpty()) {
+                Log.i(TAG, "    INVALIDATED " + s + " " + pref.getText() + ";");
+                valid = false;
+                missingValue.add(pref.getTitle().toString());
+            }
+        }
+
+        return valid;
+    }
+
+   
+    private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) {
+        for (AccountDetail.PreferenceEntry p : det.getDetailValues()) {
             Preference pref = mPreferenceManager.findPreference(p.mKey);
-            if(pref != null) {
-                if(!p.isTwoState) {
-                    ((EditTextPreference)pref).setText(p.mValue);
-                    pref.setSummary(getString(R.string.account_current_value_label) + p.mValue);
+            if (pref != null) {
+                if (p.isTwoState) {
+                    CheckBoxPreference boxPref = (CheckBoxPreference) pref;
+                    accountDetails.put(p.mKey, boxPref.isChecked() ? "true" : "false");
+                } else {
+                    EditTextPreference textPref = (EditTextPreference) pref;
+                    accountDetails.put(p.mKey, textPref.getText());
+                }
+            }
+        }
+    }
+
+    Preference.OnPreferenceChangeListener changeBasicPreferenceListener = new Preference.OnPreferenceChangeListener() {
+        public boolean onPreferenceChange(Preference preference, Object newValue) {
+            preference.setSummary((CharSequence) newValue);
+            basicDetails.setDetailString(preference.getOrder(), ((CharSequence) newValue).toString());
+            return true;
+        }
+    };
+    
+    private void setPreferenceDetails(AccountDetail details) {
+        for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+            Preference pref = mPreferenceManager.findPreference(p.mKey);
+            if (pref != null) {
+                if (!p.isTwoState) {
+                    ((EditTextPreference) pref).setText(p.mValue);
+                    pref.setSummary(p.mValue);
                 }
             }
         }
     }
 
     private void addPreferenceListener(AccountDetail details) {
-        for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+        for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
             Preference pref = mPreferenceManager.findPreference(p.mKey);
-            if(pref != null) {
-                if(!p.isTwoState) {
+            if (pref != null) {
+                if (!p.isTwoState) {
                     pref.setOnPreferenceChangeListener(changeBasicPreferenceListener);
                 }
             }
         }
     }
 
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
+    
+    
+    
+    
+    /******************************************
+     * 
+     * AlertDialogs
+     * 
+     ******************************************/
+    
+    private AlertDialog createCouldNotValidateDialog(ArrayList<String> missingValue) {
+        String message = "The following parameters are missing:";
 
-        addPreferencesFromResource(R.xml.account_creation_preferences);
-        mPreferenceManager = getPreferenceManager();
+        for (String s : missingValue)
+            message += "\n    - " + s;
 
-        init();
+        Activity ownerActivity = this;
+        AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
+        builder.setMessage(message).setTitle("Missing Parameters").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int whichButton) {
+                /* Nothing to be done */
+            }
+        });
+
+        AlertDialog alertDialog = builder.create();
+        return alertDialog;
     }
+    
+    private AlertDialog createCancelDialog() {
+        Activity ownerActivity = this;
+        AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
+        builder.setMessage("All parameters will be lost").setTitle("Account Creation").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int whichButton) {
+                Activity activity = ((Dialog) dialog).getOwnerActivity();
+                activity.finish();
+            }
+        }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int whichButton) {
+                /* Terminate with no action */
+            }
+        });
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        Log.i(TAG, "onCreateOptionsMenu: " + mAccountID);
-        if(mAccountID.equals("IP2IP"))
-            return true;
-          
-          
-        deleteAccountAction = menu.add("Delete Account");
-        deleteAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-        return true;
+        AlertDialog alertDialog = builder.create();
+        alertDialog.setOwnerActivity(ownerActivity);
+
+        return alertDialog;
     }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-    }
-
-    @Override
-    protected void onStop() {
-       super.onStop();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    public void onBackPressed() {
-        Bundle bundle = new Bundle();
-        bundle.putString("AccountID", mAccountID);
-        bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly()); 
-        bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly());
-        bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly());
-        bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly());
-
-        Intent resultIntent = new Intent();
-        resultIntent.putExtras(bundle);
-
-        setResult(ACCOUNT_MODIFIED, resultIntent);
-        finish(); 
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        AlertDialog dialog = createAlertDialog();
-        dialog.show();
-
-        return true;
-    }
-
-    private AlertDialog createAlertDialog()
-    {
+    
+    private AlertDialog createDeleteDialog() {
         Activity ownerActivity = this;
         AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
         builder.setMessage("Do you realy want to delete this account").setTitle("Delete Account")
-               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                   public void onClick(DialogInterface dialog, int whichButton) {
-                       Bundle bundle = new Bundle();
-                       bundle.putString("AccountID", mAccountID);
+                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                        Bundle bundle = new Bundle();
+                        bundle.putString("AccountID", mAccountID);
 
-                       Intent resultIntent = new Intent();
-                       resultIntent.putExtras(bundle);
+                        Intent resultIntent = new Intent();
+                        resultIntent.putExtras(bundle);
 
-                       Activity activity = ((Dialog)dialog).getOwnerActivity();
-                       activity.setResult(ACCOUNT_DELETED, resultIntent);
-                       activity.finish();
-                   }
-               })
-               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-                   public void onClick(DialogInterface dialog, int whichButton) {
-                       /* Terminate with no action */
-                   }
-               });
+                        Activity activity = ((Dialog) dialog).getOwnerActivity();
+                        activity.setResult(result.ACCOUNT_DELETED, resultIntent);
+                        activity.finish();
+                    }
+                }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                        /* Terminate with no action */
+                    }
+                });
 
         AlertDialog alertDialog = builder.create();
         alertDialog.setOwnerActivity(ownerActivity);
@@ -238,29 +373,4 @@
         return alertDialog;
     }
 
-    private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) {
-        for(AccountDetail.PreferenceEntry p : det.getDetailValues()) {
-            Preference pref = mPreferenceManager.findPreference(p.mKey);
-            if(pref != null) {
-                if(p.isTwoState) {
-                    CheckBoxPreference boxPref = (CheckBoxPreference) pref;
-                    accountDetails.put(p.mKey, boxPref.isChecked() ? "true" : "false");
-                }
-                else {
-                    EditTextPreference textPref = (EditTextPreference)pref;
-                    accountDetails.put(p.mKey, textPref.getText());
-                }
-            }
-        }
-    }
-
-    private void updateAccountDetails() {
-        HashMap<String, String> accountDetails = new HashMap<String, String>();
-
-        updateAccountDetails(accountDetails, basicDetails);
-        updateAccountDetails(accountDetails, advancedDetails);
-        updateAccountDetails(accountDetails, srtpDetails);
-        updateAccountDetails(accountDetails, tlsDetails);
-    }
 }
-
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index 26eb7b3..ad06924 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -48,26 +48,23 @@
 import android.support.v4.content.LocalBroadcastManager;
 import android.support.v4.view.ViewPager;
 import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.ViewGroup;
 import android.view.animation.AlphaAnimation;
 import android.view.animation.Animation;
 import android.view.animation.LinearInterpolator;
 import android.widget.EditText;
 import android.widget.ImageButton;
-import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
-import com.savoirfairelinux.sflphone.client.receiver.CallList;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.CallListReceiver;
 import com.savoirfairelinux.sflphone.fragments.ButtonSectionFragment;
 import com.savoirfairelinux.sflphone.fragments.CallElementListFragment;
 import com.savoirfairelinux.sflphone.fragments.ContactListFragment;
+import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
 import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
@@ -82,12 +79,12 @@
 	static Animation animation;
 	private ContactListFragment mContactListFragment = null;
 	private CallElementListFragment mCallElementList = null;
-	private HistorySectionFragment mHistorySectionFragment = null;
+	private HistoryFragment mHistorySectionFragment = null;
 	private ButtonSectionFragment mButtonSectionFragment = null;
 	private boolean mBound = false;
 	private ISipService service;
 	public AccountListReceiver mAccountList;
-	public CallList mCallList = new CallList(this);
+	public CallListReceiver mCallList = new CallListReceiver(this);
 	private SFLphoneApplication mApplication;
 
 	private static final int ACTION_BAR_TAB_CONTACT = 0;
@@ -146,7 +143,7 @@
 			        mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_CONTACT));
 			mCallElementList = (CallElementListFragment) getFragmentManager().getFragment(savedInstanceState,
 			        mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_CALL));
-			mHistorySectionFragment = (HistorySectionFragment) getFragmentManager().getFragment(savedInstanceState,
+			mHistorySectionFragment = (HistoryFragment) getFragmentManager().getFragment(savedInstanceState,
 			        mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_HISTORY));
 			mButtonSectionFragment = (ButtonSectionFragment) getFragmentManager().getFragment(savedInstanceState,
 			        mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_TEST));
@@ -161,7 +158,7 @@
 			Log.w(TAG, "Recreated mCallElementList=" + mCallElementList);
 		}
 		if (mHistorySectionFragment == null) {
-			mHistorySectionFragment = new HistorySectionFragment();
+			mHistorySectionFragment = new HistoryFragment();
 			Log.w(TAG, "Recreated mHistorySectionFragment=" + mHistorySectionFragment);
 		}
 		if (mButtonSectionFragment == null) {
@@ -408,8 +405,8 @@
 				Log.w(TAG, "getItem() CallElementList=" + fragment);
 				break;
 			case 2:
-				fragment = new HistorySectionFragment();
-				Log.w(TAG, "getItem() HistorySectionFragment=" + fragment);
+				fragment = new HistoryFragment();
+				Log.w(TAG, "getItem() HistoryFragment=" + fragment);
 				break;
 			case 3:
 				fragment = new ButtonSectionFragment();
@@ -422,7 +419,7 @@
 
 			// Log.i(TAG, "getItem() fragment is " + fragment);
 			Bundle args = new Bundle();
-			args.putInt(HistorySectionFragment.ARG_SECTION_NUMBER, i + 1);
+			args.putInt(HistoryFragment.ARG_SECTION_NUMBER, i + 1);
 			fragment.setArguments(args);
 			return fragment;
 		}
@@ -463,7 +460,7 @@
 				name = CallElementListFragment.class.getName();
 				break;
 			case 2:
-				name = HistorySectionFragment.class.getName();
+				name = HistoryFragment.class.getName();
 				break;
 			case 3:
 				name = ButtonSectionFragment.class.getName();
@@ -501,25 +498,6 @@
 		}
 	}
 
-	/**
-	 * A dummy fragment representing a section of the app, but that simply displays dummy text.
-	 */
-	public static class HistorySectionFragment extends Fragment {
-		public HistorySectionFragment() {
-			setRetainInstance(true);
-		}
-
-		public static final String ARG_SECTION_NUMBER = "section_number";
-
-		@Override
-		public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
-			TextView textView = new TextView(getActivity());
-			textView.setGravity(Gravity.CENTER);
-			Bundle args = getArguments();
-			textView.setText("ARG_SECTION_NUMBER=" + Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
-			return textView;
-		}
-	}
 
 	@Override
 	public void onClick(View view) {
@@ -555,7 +533,7 @@
 		info.mEmail = "coolGuy@coolGuy.com";
 		info.mCallType = SipCall.CALL_TYPE_OUTGOING;
 
-		SipCall call = CallList.getCallInstance(info);
+		SipCall call = CallListReceiver.getCallInstance(info);
 		call.launchCallActivity(this);
 		call.placeCallUpdateUi();
 		call.notifyServicePlaceCall(service);
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index 17bed3e..00d3023 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -49,14 +49,14 @@
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.fragments.AccountManagementFragment;
-import com.savoirfairelinux.sflphone.fragments.PrefManagementFragment;
+import com.savoirfairelinux.sflphone.fragments.AudioManagementFragment;
 import com.savoirfairelinux.sflphone.service.ISipService;
 import com.savoirfairelinux.sflphone.service.SipService;
 
 public class SFLPhonePreferenceActivity extends Activity implements ActionBar.TabListener
 {
     static final int NUM_PAGES = 2;
-    static final String TAG = "SFLPhonePreferenceActivity";
+    static final String TAG = SFLPhonePreferenceActivity.class.getSimpleName();
     PreferencesPagerAdapter mPreferencesPagerAdapter;
     private boolean mBound = false;
     static boolean serviceIsOn = false;
@@ -185,7 +185,7 @@
                 fragment = new AccountManagementFragment();
                 break;
             case 1:
-                fragment = new PrefManagementFragment();
+                fragment = new AudioManagementFragment();
                 break;
             default:
                 Log.i(TAG, "Get new fragment " + position + " is null");
@@ -211,32 +211,4 @@
         }
     }
 
-    public static class ArrayListFragment extends ListFragment {
-        int mNum;
-
-        static ArrayListFragment newInstance(int num) {
-            ArrayListFragment f = new ArrayListFragment();
-
-            // Supply num input as an argument.
-            Bundle args = new Bundle();
-            args.putInt("num", num);
-            f.setArguments(args);
-
-            return f;
-        }
-
-        @Override
-        public void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            mNum = getArguments() != null ? getArguments().getInt("num") : 1;
-        }
-
-        @Override
-        public void onActivityCreated(Bundle savedInstanceState) {
-            super.onActivityCreated(savedInstanceState);
-            // setListAdapter(new ArrayAdapter<String>(getActivity(),
-            //        android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings));
-        }
-
-    }
 }
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java b/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
index f7ef9c9..4fc4427 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
@@ -8,7 +8,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.util.Log;
 
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
 import com.savoirfairelinux.sflphone.service.ISipService;
 import com.savoirfairelinux.sflphone.service.SipService;
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java b/src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
similarity index 96%
rename from src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java
rename to src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
index d78db6f..efd6c5b 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
@@ -29,7 +29,7 @@
  *  as that of the covered work.
  */
 
-package com.savoirfairelinux.sflphone.account;
+package com.savoirfairelinux.sflphone.client.receiver;
 
 import android.content.BroadcastReceiver;
 import android.content.Intent;
@@ -39,6 +39,7 @@
 
 import java.util.ArrayList;
 
+import com.savoirfairelinux.sflphone.account.AccountManagementUI;
 import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
 import com.savoirfairelinux.sflphone.service.ISipService;
 
@@ -80,7 +81,7 @@
     {
         String signalName = intent.getStringExtra(ConfigurationManagerCallback.SIGNAL_NAME);
         Log.d(TAG, "Signal received: " + signalName);
-
+        
         if(signalName.equals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
             processAccountsChangedSignal(intent);
         } else if(signalName.equals(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED)) {
diff --git a/src/com/savoirfairelinux/sflphone/client/receiver/CallList.java b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
similarity index 97%
rename from src/com/savoirfairelinux/sflphone/client/receiver/CallList.java
rename to src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
index bfec63a..ddf4efa 100644
--- a/src/com/savoirfairelinux/sflphone/client/receiver/CallList.java
+++ b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
@@ -44,7 +44,7 @@
 import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
 import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
 
-public class CallList extends BroadcastReceiver
+public class CallListReceiver extends BroadcastReceiver
 {
     static final String TAG = "CallList";
     static ArrayList<SipCall> mList = new ArrayList<SipCall>();
@@ -81,7 +81,7 @@
         return call;
     }
 
-    public CallList(SFLPhoneHomeActivity home) {
+    public CallListReceiver(SFLPhoneHomeActivity home) {
         mHome = home;
     }
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
index 6568ade..4881381 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
@@ -33,7 +33,6 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Set;
 
 import android.app.Activity;
@@ -56,14 +55,13 @@
 import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
 import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
 import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.client.AccountCreationActivity;
 import com.savoirfairelinux.sflphone.client.AccountPreferenceActivity;
 import com.savoirfairelinux.sflphone.client.SFLPhonePreferenceActivity;
 import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
 import com.savoirfairelinux.sflphone.service.ISipService;
 
-public class AccountManagementFragment extends PreferenceFragment
-{
+public class AccountManagementFragment extends PreferenceFragment {
     static final String TAG = "AccountManagementFragment";
     static final String DEFAULT_ACCOUNT_ID = "IP2IP";
     static final int ACCOUNT_CREATE_REQUEST = 1;
@@ -86,30 +84,27 @@
         Log.w(TAG, "onAttach() service=" + service);
     }
 
-    public AccountManagementFragment()
-    {
-        basicDetailKeys =  AccountDetailBasic.getPreferenceEntries();
+    public AccountManagementFragment() {
+        basicDetailKeys = AccountDetailBasic.getPreferenceEntries();
         advancedDetailKeys = AccountDetailAdvanced.getPreferenceEntries();
         srtpDetailKeys = AccountDetailSrtp.getPreferenceEntries();
         tlsDetailKeys = AccountDetailTls.getPreferenceEntries();
 
         accountPreferenceHashMap = new HashMap<String, Preference>();
-    } 
+    }
 
     @Override
-    public void onCreate(Bundle savedInstanceState)
-    {
+    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         Log.i(TAG, "Create Account Management Fragment");
 
         /*
-         * FIXME if service cannot be obtained from SFLPhonePreferenceActivity,
-         * then get it from Application
+         * FIXME if service cannot be obtained from SFLPhonePreferenceActivity, then get it from Application
          */
         service = sflphonePreferenceActivity.getSipService();
         if (service == null) {
-            service = ((SFLphoneApplication)sflphonePreferenceActivity.getApplication()).getSipService();
+            service = ((SFLphoneApplication) sflphonePreferenceActivity.getApplication()).getSipService();
             if (service == null) {
                 Log.e(TAG, "onCreate() service=" + service);
             }
@@ -118,19 +113,17 @@
 
         setPreferenceScreen(getAccountListPreferenceScreen());
 
-        LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
+        LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter(ConfigurationManagerCallback.ACCOUNTS_CHANGED));
     }
 
     @Override
-    public void onStop()
-    {
+    public void onStop() {
         super.onStop();
         Log.i(TAG, "onStop");
     }
 
     @Override
-    public void onDestroy()
-    {
+    public void onDestroy() {
         LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mMessageReceiver);
         super.onDestroy();
         Log.i(TAG, "onDestroy");
@@ -138,57 +131,66 @@
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch(requestCode) {
-            case ACCOUNT_CREATE_REQUEST:
-                Log.i(TAG, "ACCOUNT_CREATE_REQUEST Done");
-                break;
-            case ACCOUNT_EDIT_REQUEST:
-                if(resultCode == AccountPreferenceActivity.ACCOUNT_MODIFIED) {
-                    Bundle bundle = data.getExtras();
-                    String accountID = bundle.getString("AccountID");
-                    Log.i(TAG, "Update account settings for " + accountID);
+        switch (requestCode) {
+        case ACCOUNT_CREATE_REQUEST:
+            if (resultCode == AccountPreferenceActivity.result.ACCOUNT_CREATED) {
+                Bundle bundle = data.getExtras();
+                Log.i(TAG, "Create account settings");
+                HashMap<String, String> accountDetails = new HashMap<String, String>();
+                accountDetails = (HashMap<String, String>) bundle.getSerializable(AccountDetail.TAG);
+                createNewAccount(accountDetails);
+            }
+            break;
+        case ACCOUNT_EDIT_REQUEST:
+            if (resultCode == AccountPreferenceActivity.result.ACCOUNT_MODIFIED) {
+                Bundle bundle = data.getExtras();
+                String accountID = bundle.getString("AccountID");
+                Log.i(TAG, "Update account settings for " + accountID);
 
-                    AccountDetailBasic basicDetails = 
-                        new AccountDetailBasic(bundle.getStringArrayList(AccountDetailBasic.BUNDLE_TAG));
-                    AccountDetailAdvanced advancedDetails = 
-                        new AccountDetailAdvanced(bundle.getStringArrayList(AccountDetailAdvanced.BUNDLE_TAG));
-                    AccountDetailSrtp srtpDetails = 
-                        new AccountDetailSrtp(bundle.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG));
-                    AccountDetailTls tlsDetails = 
-                        new AccountDetailTls(bundle.getStringArrayList(AccountDetailTls.BUNDLE_TAG));
+                HashMap<String, String> accountDetails = new HashMap<String, String>();
+                accountDetails = (HashMap<String, String>) bundle.getSerializable(AccountDetail.TAG);
+                
+                Preference accountScreen = accountPreferenceHashMap.get(accountID);
+                mRoot.removePreference(accountScreen);
+                accountPreferenceHashMap.remove(accountID);
+                setAccountDetails(accountID, accountDetails);
+                
+            } else if (resultCode == AccountPreferenceActivity.result.ACCOUNT_DELETED) {
+                Bundle bundle = data.getExtras();
+                String accountID = bundle.getString("AccountID");
 
-                    HashMap<String, String> map = new HashMap<String, String>();
-                    map.putAll(basicDetails.getDetailsHashMap()); 
-                    map.putAll(advancedDetails.getDetailsHashMap());
-                    map.putAll(srtpDetails.getDetailsHashMap());
-                    map.putAll(tlsDetails.getDetailsHashMap());
-
-                    setAccountDetails(accountID, map);
-                } else if(resultCode == AccountPreferenceActivity.ACCOUNT_DELETED) {
-                    Bundle bundle = data.getExtras();
-                    String accountID = bundle.getString("AccountID");
-
-                    Log.i(TAG, "Remove account " + accountID);
-                    deleteSelectedAccount(accountID);
-                    Preference accountScreen = accountPreferenceHashMap.get(accountID); 
-                    mRoot.removePreference(accountScreen);
-                    accountPreferenceHashMap.remove(accountID);
-                }
-                break;
-            default:
-                break;
+                Log.i(TAG, "Remove account " + accountID);
+                deleteSelectedAccount(accountID);
+                Preference accountScreen = accountPreferenceHashMap.get(accountID);
+                mRoot.removePreference(accountScreen);
+                accountPreferenceHashMap.remove(accountID);
+            } else {
+                Log.i(TAG, "Edition canceled");
+            }
+            break;
+        default:
+            break;
         }
     }
 
+    private void createNewAccount(HashMap<String, String> accountDetails) {
+        try {
+            Log.i(TAG, "ADD ACCOUNT");
+            service.addAccount(accountDetails);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Cannot call service method", e);
+        }
+
+    }
+
     private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String message = intent.getStringExtra("message");
             ArrayList<String> newList = (ArrayList<String>) getAccountList();
             Set<String> currentList = (Set<String>) accountPreferenceHashMap.keySet();
-            if(newList.size() > currentList.size()) {
-                for(String s : newList) {
-                    if(!currentList.contains(s)) {
+            if (newList.size() > currentList.size()) {
+                for (String s : newList) {
+                    if (!currentList.contains(s)) {
                         Preference accountScreen = createAccountPreferenceScreen(s);
                         mRoot.addPreference(accountScreen);
                         accountPreferenceHashMap.put(s, accountScreen);
@@ -200,7 +202,7 @@
 
     Preference.OnPreferenceClickListener launchAccountCreationOnClick = new Preference.OnPreferenceClickListener() {
         public boolean onPreferenceClick(Preference preference) {
-            if(preference.getTitle() == "Create New Account") {
+            if (preference.getTitle() == "Create New Account") {
                 launchAccountCreationActivity(preference);
             }
             return true;
@@ -216,25 +218,24 @@
 
     Preference.OnPreferenceClickListener removeSelectedAccountOnClick = new Preference.OnPreferenceClickListener() {
         public boolean onPreferenceClick(Preference preference) {
-            if(preference.getTitle() == "Delete Account") {
+            if (preference.getTitle() == "Delete Account") {
                 deleteSelectedAccount(preference.getKey());
             }
             return true;
         }
     };
 
-    private void launchAccountCreationActivity(Preference preference)
-    {
+    private void launchAccountCreationActivity(Preference preference) {
         Log.i(TAG, "Launch account creation activity");
         Intent intent = preference.getIntent();
+        intent.putExtra(AccountPreferenceActivity.KEY_MODE, AccountPreferenceActivity.mode.CREATION_MODE);
         startActivityForResult(intent, ACCOUNT_CREATE_REQUEST);
     }
 
-    private void launchAccountEditActivity(Preference preference)
-    {
+    private void launchAccountEditActivity(Preference preference) {
         Log.i(TAG, "Launch account edit activity");
         Intent intent = preference.getIntent();
-
+        intent.putExtra(AccountPreferenceActivity.KEY_MODE, AccountPreferenceActivity.mode.EDITION_MODE);
         Bundle bundle = intent.getExtras();
         String accountID = bundle.getString("AccountID");
 
@@ -264,13 +265,12 @@
         }
     };
 
-    private ArrayList<String> getAccountList()
-    {
+    private ArrayList<String> getAccountList() {
         ArrayList<String> accountList = null;
         try {
-            accountList = (ArrayList<String>) service.getAccountList(); 
+            accountList = (ArrayList<String>) service.getAccountList();
         } catch (RemoteException e) {
-           Log.e(TAG, "Cannot call service method", e); 
+            Log.e(TAG, "Cannot call service method", e);
         }
 
         // Remove the default account from list
@@ -279,8 +279,7 @@
         return accountList;
     }
 
-    private HashMap<String, String> getAccountDetails(String accountID)
-    {
+    private HashMap<String, String> getAccountDetails(String accountID) {
         HashMap<String, String> accountDetails = null;
         try {
             accountDetails = (HashMap<String, String>) service.getAccountDetails(accountID);
@@ -291,8 +290,7 @@
         return accountDetails;
     }
 
-    private void setAccountDetails(String accountID, HashMap<String, String> accountDetails)
-    {
+    private void setAccountDetails(String accountID, HashMap<String, String> accountDetails) {
         try {
             service.setAccountDetails(accountID, accountDetails);
         } catch (RemoteException e) {
@@ -300,8 +298,7 @@
         }
     }
 
-    public PreferenceScreen getAccountListPreferenceScreen()
-    {
+    public PreferenceScreen getAccountListPreferenceScreen() {
         Activity currentContext = getActivity();
 
         mRoot = getPreferenceManager().createPreferenceScreen(currentContext);
@@ -321,31 +318,31 @@
         Preference createNewAccount = new Preference(currentContext);
         createNewAccount.setTitle("Create New Account");
         createNewAccount.setOnPreferenceClickListener(launchAccountCreationOnClick);
-        createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
+        createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountPreferenceActivity.class));
         mRoot.addPreference(createNewAccount);
 
         ArrayList<String> accountList = getAccountList();
-        for(String s : accountList) {
+        for (String s : accountList) {
             Preference accountScreen = createAccountPreferenceScreen(s);
             mRoot.addPreference(accountScreen);
-            accountPreferenceHashMap.put(s, accountScreen); 
+            accountPreferenceHashMap.put(s, accountScreen);
         }
-         
+
         return mRoot;
     }
 
     Preference createAccountPreferenceScreen(String accountID) {
 
         HashMap<String, String> details = getAccountDetails(accountID);
-        Set<String> keys = details.keySet();
-        Iterator<String> ite = keys.iterator();
-        while(ite.hasNext()){
-            Log.i(TAG,"key : "+ ite.next());
-        }
+        // Set<String> keys = details.keySet();
+        // Iterator<String> ite = keys.iterator();
+        // while(ite.hasNext()){
+        // Log.i(TAG,"key : "+ ite.next());
+        // }
         Bundle bundle = new Bundle();
         bundle.putString("AccountID", accountID);
 
-        Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class); 
+        Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class);
         intent.putExtras(bundle);
 
         Preference editAccount = new Preference(getActivity());
@@ -353,7 +350,7 @@
         editAccount.setSummary(details.get(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME));
         editAccount.setOnPreferenceClickListener(launchAccountEditOnClick);
         editAccount.setIntent(intent);
-        
+
         return editAccount;
     }
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
similarity index 98%
rename from src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java
rename to src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
index bc2916a..954eb49 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
@@ -53,12 +53,12 @@
 
 import com.savoirfairelinux.sflphone.R;
 
-public class PrefManagementFragment extends PreferenceFragment
+public class AudioManagementFragment extends PreferenceFragment
 {
     static final String TAG = "PrefManagementFragment";
     static final String CURRENT_VALUE = "Current value:: "; 
 
-    public PrefManagementFragment()
+    public AudioManagementFragment()
     {
     }
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
index ae5fc4a..48535cd 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
@@ -70,10 +70,10 @@
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
 import com.savoirfairelinux.sflphone.account.AccountSelectionSpinner;
 import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
 import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
 import com.savoirfairelinux.sflphone.model.ContactManager;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.ISipService;
@@ -82,7 +82,7 @@
  * Main list of Call Elements. We don't manage contacts ourself so they are
  */
 public class CallElementListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
-    private static final String TAG = "CallElementList";
+    private static final String TAG = CallElementListFragment.class.getSimpleName();
     private static final String CURRENT_STATE_LABEL = "    CURRENT STATE: ";
     private ContactManager mContactManager;
     private CallElementAdapter mAdapter;
@@ -107,7 +107,7 @@
     }
 
     public String getSelectedAccount() {
-//        return mAccountSelectionButton.getText().toString();
+        // return mAccountSelectionButton.getText().toString();
         return "CIOUCOU";
     }
 
@@ -340,6 +340,7 @@
     @Override
     public Loader<Cursor> onCreateLoader(int id, Bundle args) {
 
+        Log.i(TAG,"onCreateLoader");
         // return new CursorLoader(getActivity(), CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
 
         // This is called when a new Loader needs to be created. This
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
index a968d36..18e8043 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
@@ -77,10 +77,10 @@
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
 import com.savoirfairelinux.sflphone.account.AccountSelectionSpinner;
 import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
 import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.ISipService;
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
new file mode 100644
index 0000000..23d98f5
--- /dev/null
+++ b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
@@ -0,0 +1,23 @@
+package com.savoirfairelinux.sflphone.fragments;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class HistoryFragment extends Fragment {
+
+    public static final String ARG_SECTION_NUMBER = "section_number";
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
+        TextView textView = new TextView(getActivity());
+        textView.setGravity(Gravity.CENTER);
+        Bundle args = getArguments();
+        textView.setText("ARG_SECTION_NUMBER=" + Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
+        return textView;
+    }
+}