diff --git a/res/layout/activity_account_settings.xml b/res/layout/activity_account_settings.xml
new file mode 100644
index 0000000..6e3717a
--- /dev/null
+++ b/res/layout/activity_account_settings.xml
@@ -0,0 +1,22 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res/org.sflphone"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+
+    <org.sflphone.views.PagerSlidingTabStrip
+        android:id="@+id/pager_sliding_strip"
+        android:layout_width="match_parent"
+        android:layout_height="?android:attr/actionBarSize"
+        android:layout_alignParentTop="true"
+        android:background="@color/sfl_blue_0"
+        app:indicatorColor="@color/sfl_light_blue"
+        app:underlineColor="@color/sfl_light_blue" />
+
+    <android.support.v4.view.ViewPager
+        android:id="@+id/pager"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingTop="?android:attr/actionBarSize" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/values-fr/strings_account.xml b/res/values-fr/strings_account.xml
index 2efb5c4..ee5b943 100644
--- a/res/values-fr/strings_account.xml
+++ b/res/values-fr/strings_account.xml
@@ -19,7 +19,7 @@
     <string name="preference_section1">Comptes</string>
     <string name="account_preferences_audio">Audio</string>
     <string name="account_preferences">Préférences de compte</string>
-    <string name="account_preferences_basic">Compte</string>
+    <string name="account_preferences_basic">Général</string>
     <string name="account_preferences_advanced">Advanced Account Preferences</string>
     <string name="account_preferences_srtp">SRTP Account Preferences</string>
     <string name="account_preferences_tls">TLS Account Preferences</string>
diff --git a/res/values/strings_account.xml b/res/values/strings_account.xml
index 652c856..7bba2fa 100644
--- a/res/values/strings_account.xml
+++ b/res/values/strings_account.xml
@@ -20,7 +20,7 @@
     <string name="preference_section1">Accounts</string>
     <string name="account_preferences_audio">Audio</string>
     <string name="account_preferences">Account Preferences</string>
-    <string name="account_preferences_basic">Account</string>
+    <string name="account_preferences_basic">General</string>
     <string name="account_preferences_advanced">Advanced Account Preferences</string>
     <string name="account_preferences_srtp">SRTP Account Preferences</string>
     <string name="account_preferences_tls">TLS Account Preferences</string>
diff --git a/src/org/sflphone/client/AccountEditionActivity.java b/src/org/sflphone/client/AccountEditionActivity.java
index cd815f7..19ea21d 100644
--- a/src/org/sflphone/client/AccountEditionActivity.java
+++ b/src/org/sflphone/client/AccountEditionActivity.java
@@ -38,10 +38,11 @@
 import org.sflphone.R;
 import org.sflphone.account.AccountDetailBasic;
 import org.sflphone.fragments.AudioManagementFragment;
-import org.sflphone.fragments.EditionFragment;
+import org.sflphone.fragments.GeneralAccountFragment;
 import org.sflphone.model.Account;
 import org.sflphone.service.ISipService;
 import org.sflphone.service.SipService;
+import org.sflphone.views.PagerSlidingTabStrip;
 
 import android.app.ActionBar;
 import android.app.ActionBar.Tab;
@@ -60,7 +61,6 @@
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
-import android.preference.EditTextPreference;
 import android.support.v13.app.FragmentStatePagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.util.Log;
@@ -68,7 +68,7 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
-public class AccountEditionActivity extends Activity implements TabListener, EditionFragment.Callbacks, AudioManagementFragment.Callbacks {
+public class AccountEditionActivity extends Activity implements TabListener, GeneralAccountFragment.Callbacks, AudioManagementFragment.Callbacks {
     private static final String TAG = "AccoutPreferenceActivity";
 
     public static final String KEY_MODE = "mode";
@@ -87,21 +87,25 @@
 
             ArrayList<Fragment> fragments = new ArrayList<Fragment>();
             if (acc_selected.isIP2IP()) {
-
                 fragments.add(new AudioManagementFragment());
             } else {
-                fragments.add(new EditionFragment());
+                fragments.add(new GeneralAccountFragment());
                 fragments.add(new AudioManagementFragment());
             }
 
             mPreferencesPagerAdapter = new PreferencesPagerAdapter(AccountEditionActivity.this, getFragmentManager(), fragments);
             mViewPager.setAdapter(mPreferencesPagerAdapter);
-            getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
-            for (int i = 0; i < mPreferencesPagerAdapter.getCount(); i++) {
-                getActionBar().addTab(
-                        getActionBar().newTab().setText(mPreferencesPagerAdapter.getPageTitle(i)).setTabListener(AccountEditionActivity.this));
+            
+            final PagerSlidingTabStrip strip = PagerSlidingTabStrip.class.cast(findViewById(R.id.pager_sliding_strip));
 
-            }
+            // strip.setBackgroundColor(getResources().getColor(R.color.sfl_blue_0));
+            strip.setViewPager(mViewPager);
+//            getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+//            for (int i = 0; i < mPreferencesPagerAdapter.getCount(); i++) {
+//                getActionBar().addTab(
+//                        getActionBar().newTab().setText(mPreferencesPagerAdapter.getPageTitle(i)).setTabListener(AccountEditionActivity.this));
+//
+//            }
         }
 
         @Override
@@ -119,7 +123,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        setContentView(R.layout.activity_wizard);
+        setContentView(R.layout.activity_account_settings);
 
         getActionBar().setDisplayHomeAsUpEnabled(true);
         mViewPager = (ViewPager) findViewById(R.id.pager);
@@ -158,7 +162,7 @@
             return;
         }
 
-        if (mPreferencesPagerAdapter.getItem(0) != null && ((EditionFragment) mPreferencesPagerAdapter.getItem(0)).isDifferent()) {
+        if (mPreferencesPagerAdapter.getItem(0) != null && ((GeneralAccountFragment) mPreferencesPagerAdapter.getItem(0)).isDifferent()) {
             AlertDialog dialog = createCancelDialog();
             dialog.show();
         } else {
diff --git a/src/org/sflphone/fragments/EditionFragment.java b/src/org/sflphone/fragments/GeneralAccountFragment.java
similarity index 97%
rename from src/org/sflphone/fragments/EditionFragment.java
rename to src/org/sflphone/fragments/GeneralAccountFragment.java
index e3c9ab3..c8bfcad 100644
--- a/src/org/sflphone/fragments/EditionFragment.java
+++ b/src/org/sflphone/fragments/GeneralAccountFragment.java
@@ -24,9 +24,9 @@
 import android.preference.PreferenceFragment;
 import android.util.Log;
 
-public class EditionFragment extends PreferenceFragment {
+public class GeneralAccountFragment extends PreferenceFragment {
 
-    private static final String TAG = EditionFragment.class.getSimpleName();
+    private static final String TAG = GeneralAccountFragment.class.getSimpleName();
 
     private boolean isDifferent = false;
     
