diff --git a/src/org/sflphone/adapters/SectionsPagerAdapter.java b/src/org/sflphone/adapters/SectionsPagerAdapter.java
index a92ccad..3c1da68 100644
--- a/src/org/sflphone/adapters/SectionsPagerAdapter.java
+++ b/src/org/sflphone/adapters/SectionsPagerAdapter.java
@@ -34,8 +34,8 @@
 import java.util.ArrayList;
 import java.util.Locale;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import org.sflphone.R;
 import org.sflphone.fragments.CallListFragment;
 import org.sflphone.fragments.DialingFragment;
@@ -43,10 +43,9 @@
 import org.sflphone.views.PagerSlidingTabStrip;
 
 import android.content.Context;
-import android.os.RemoteException;
 import android.util.Log;
 
-public class SectionsPagerAdapter extends android.support.v13.app.FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
+public class SectionsPagerAdapter extends android.support.v4.app.FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
 
     private static final String TAG = SectionsPagerAdapter.class.getSimpleName();
     Context mContext;
diff --git a/src/org/sflphone/client/HomeActivity.java b/src/org/sflphone/client/HomeActivity.java
index 854d4ce..d365403 100644
--- a/src/org/sflphone/client/HomeActivity.java
+++ b/src/org/sflphone/client/HomeActivity.java
@@ -40,9 +40,9 @@
 import java.util.Timer;
 import java.util.TimerTask;
 
-import android.app.*;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.app.FragmentActivity;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.support.v4.app.*;
 import org.sflphone.R;
 import org.sflphone.fragments.AboutFragment;
 import org.sflphone.fragments.AccountsManagementFragment;
@@ -311,7 +311,7 @@
             return;
         }
 
-        if (getFragmentManager().getBackStackEntryCount() > 1) {
+        if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
             popCustomBackStack();
             fMenu.backToHome();
             return;
@@ -334,9 +334,9 @@
     }
 
     private void popCustomBackStack() {
-        FragmentManager.BackStackEntry entry = getFragmentManager().getBackStackEntryAt(0);
-        fContent = getFragmentManager().findFragmentByTag(entry.getName());
-        FragmentManager fm = getFragmentManager();
+        FragmentManager fm = getSupportFragmentManager();
+        FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt(0);
+        fContent = fm.findFragmentByTag(entry.getName());
         for (int i = 0; i < fm.getBackStackEntryCount() - 1; ++i) {
             fm.popBackStack();
         }
@@ -391,7 +391,7 @@
 
                 fMenu = new MenuFragment();
                 fContent = new HomeFragment();
-                getFragmentManager().beginTransaction().replace(R.id.left_drawer, fMenu).replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit();
+                getSupportFragmentManager().beginTransaction().replace(R.id.left_drawer, fMenu).replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit();
 
                 service.destroyNotification();
             } catch (RemoteException e) {
@@ -641,7 +641,7 @@
                 if (fContent instanceof HomeFragment)
                     break;
 
-                if (getFragmentManager().getBackStackEntryCount() == 1)
+                if (getSupportFragmentManager().getBackStackEntryCount() == 1)
                     break;
 
                 popCustomBackStack();
@@ -651,13 +651,13 @@
                 if (fContent instanceof AccountsManagementFragment)
                     break;
                 fContent = new AccountsManagementFragment();
-                getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit();
+                getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit();
                 break;
             case 2:
                 if (fContent instanceof AboutFragment)
                     break;
                 fContent = new AboutFragment();
-                getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit();
+                getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit();
                 break;
         }
 
diff --git a/src/org/sflphone/fragments/AboutFragment.java b/src/org/sflphone/fragments/AboutFragment.java
index 3a84c99..857e21f 100644
--- a/src/org/sflphone/fragments/AboutFragment.java
+++ b/src/org/sflphone/fragments/AboutFragment.java
@@ -1,9 +1,9 @@
 package org.sflphone.fragments;
 
+import android.support.v4.app.Fragment;
 import org.sflphone.R;
 
 import android.os.Bundle;
-import android.app.Fragment;
 import android.text.Html;
 import android.text.method.LinkMovementMethod;
 import android.view.LayoutInflater;
diff --git a/src/org/sflphone/fragments/AccountsManagementFragment.java b/src/org/sflphone/fragments/AccountsManagementFragment.java
index 49289a8..95caf5d 100644
--- a/src/org/sflphone/fragments/AccountsManagementFragment.java
+++ b/src/org/sflphone/fragments/AccountsManagementFragment.java
@@ -35,9 +35,13 @@
 import java.io.File;
 import java.util.ArrayList;
 
-import android.app.ListFragment;
-import android.app.LoaderManager;
-import android.content.*;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.support.v4.app.ListFragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.AsyncTaskLoader;
+import android.support.v4.content.Loader;
 import org.sflphone.R;
 import org.sflphone.client.AccountEditionActivity;
 import org.sflphone.client.AccountWizard;
@@ -429,7 +433,7 @@
     }
 
     @Override
-    public void onLoadFinished(Loader<Bundle> loader, Bundle results) {
+    public void onLoadFinished(Loader<Bundle> bundleLoader, Bundle results) {
         mAccountsAdapter.removeAll();
         ArrayList<Account> tmp = results.getParcelableArrayList(AccountsLoader.ACCOUNTS);
         ip2ip = results.getParcelable(AccountsLoader.ACCOUNT_IP2IP);
@@ -443,7 +447,8 @@
     }
 
     @Override
-    public void onLoaderReset(Loader<Bundle> loader) {
+    public void onLoaderReset(Loader<Bundle> bundleLoader) {
 
     }
+
 }
diff --git a/src/org/sflphone/fragments/CallListFragment.java b/src/org/sflphone/fragments/CallListFragment.java
index 6a9b628..9aae4b2 100644
--- a/src/org/sflphone/fragments/CallListFragment.java
+++ b/src/org/sflphone/fragments/CallListFragment.java
@@ -31,7 +31,6 @@
 package org.sflphone.fragments;
 
 import android.app.Activity;
-import android.app.Fragment;
 import android.content.ClipData;
 import android.content.ClipData.Item;
 import android.content.Context;
@@ -39,6 +38,7 @@
 import android.content.IntentFilter;
 import android.graphics.Color;
 import android.os.*;
+import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.DragEvent;
 import android.view.LayoutInflater;
diff --git a/src/org/sflphone/fragments/DialingFragment.java b/src/org/sflphone/fragments/DialingFragment.java
index 762cf7b..3ab822e 100644
--- a/src/org/sflphone/fragments/DialingFragment.java
+++ b/src/org/sflphone/fragments/DialingFragment.java
@@ -33,6 +33,7 @@
 
 import java.util.Locale;
 
+import android.support.v4.app.Fragment;
 import org.sflphone.R;
 import org.sflphone.service.ISipService;
 import org.sflphone.views.ClearableEditText;
@@ -41,7 +42,6 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.app.Fragment;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.KeyEvent;
diff --git a/src/org/sflphone/fragments/DropActionsChoice.java b/src/org/sflphone/fragments/DropActionsChoice.java
index e181304..a97064b 100644
--- a/src/org/sflphone/fragments/DropActionsChoice.java
+++ b/src/org/sflphone/fragments/DropActionsChoice.java
@@ -31,6 +31,7 @@
 
 package org.sflphone.fragments;
 
+import android.support.v4.app.DialogFragment;
 import org.sflphone.R;
 
 import android.app.AlertDialog;
@@ -38,7 +39,6 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.app.DialogFragment;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
diff --git a/src/org/sflphone/fragments/HistoryFragment.java b/src/org/sflphone/fragments/HistoryFragment.java
index 0858847..806ef5c 100644
--- a/src/org/sflphone/fragments/HistoryFragment.java
+++ b/src/org/sflphone/fragments/HistoryFragment.java
@@ -34,8 +34,10 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import android.content.AsyncTaskLoader;
-import android.content.Loader;
+import android.support.v4.app.ListFragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.AsyncTaskLoader;
+import android.support.v4.content.Loader;
 import android.view.*;
 import org.sflphone.R;
 import org.sflphone.adapters.ContactPictureTask;
@@ -50,8 +52,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.app.ListFragment;
-import android.app.LoaderManager.LoaderCallbacks;
 import android.util.Log;
 import android.view.View.OnClickListener;
 import android.widget.AdapterView;
@@ -62,7 +62,7 @@
 import android.widget.ListAdapter;
 import android.widget.TextView;
 
-public class HistoryFragment extends ListFragment implements LoaderCallbacks<ArrayList<HistoryEntry>> {
+public class HistoryFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<HistoryEntry>> {
 
     private static final String TAG = HistoryFragment.class.getSimpleName();
 
@@ -309,14 +309,14 @@
     }
 
     @Override
-    public void onLoadFinished(Loader<ArrayList<HistoryEntry>> loader, ArrayList<HistoryEntry> data) {
+    public void onLoadFinished(Loader<ArrayList<HistoryEntry>> arrayListLoader, ArrayList<HistoryEntry> historyEntries) {
         mAdapter.clear();
-        mAdapter.addAll(data);
+        mAdapter.addAll(historyEntries);
         mAdapter.notifyDataSetChanged();
     }
 
     @Override
-    public void onLoaderReset(Loader<ArrayList<HistoryEntry>> loader) {
+    public void onLoaderReset(Loader<ArrayList<HistoryEntry>> arrayListLoader) {
 
     }
 
diff --git a/src/org/sflphone/fragments/HomeFragment.java b/src/org/sflphone/fragments/HomeFragment.java
index 79490f9..fff0dc8 100644
--- a/src/org/sflphone/fragments/HomeFragment.java
+++ b/src/org/sflphone/fragments/HomeFragment.java
@@ -30,6 +30,7 @@
  */
 package org.sflphone.fragments;
 
+import android.support.v4.app.Fragment;
 import org.sflphone.R;
 import org.sflphone.adapters.SectionsPagerAdapter;
 import org.sflphone.views.PagerSlidingTabStrip;
@@ -37,7 +38,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.app.Fragment;
 import android.support.v4.view.ViewPager;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -71,7 +71,7 @@
     @Override
     public void onCreate(Bundle savedBundle) {
         super.onCreate(savedBundle);
-        mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity(), getFragmentManager());
+        mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity(), getChildFragmentManager());
     }
 
     @Override
diff --git a/src/org/sflphone/fragments/MenuFragment.java b/src/org/sflphone/fragments/MenuFragment.java
index daa70b0..f83c4de 100644
--- a/src/org/sflphone/fragments/MenuFragment.java
+++ b/src/org/sflphone/fragments/MenuFragment.java
@@ -32,9 +32,10 @@
 
 import java.util.ArrayList;
 
-import android.app.LoaderManager;
-import android.content.AsyncTaskLoader;
-import android.content.Loader;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.AsyncTaskLoader;
+import android.support.v4.content.Loader;
 import org.sflphone.R;
 import org.sflphone.adapters.AccountSelectionAdapter;
 import org.sflphone.adapters.ContactPictureTask;
@@ -52,8 +53,6 @@
 import android.content.IntentFilter;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.provider.ContactsContract.Profile;
-import android.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/src/org/sflphone/loaders/AccountsLoader.java b/src/org/sflphone/loaders/AccountsLoader.java
index fdb7fd1..81397db 100644
--- a/src/org/sflphone/loaders/AccountsLoader.java
+++ b/src/org/sflphone/loaders/AccountsLoader.java
@@ -34,13 +34,13 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import android.support.v4.content.AsyncTaskLoader;
 import org.sflphone.model.Account;
 import org.sflphone.service.ISipService;
 
 import android.content.Context;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.content.AsyncTaskLoader;
 import android.util.Log;
 
 public class AccountsLoader extends AsyncTaskLoader<Bundle> {
diff --git a/src/org/sflphone/loaders/HistoryLoader.java b/src/org/sflphone/loaders/HistoryLoader.java
index 22810b8..d3432a7 100644
--- a/src/org/sflphone/loaders/HistoryLoader.java
+++ b/src/org/sflphone/loaders/HistoryLoader.java
@@ -31,10 +31,10 @@
 
 package org.sflphone.loaders;
 
-import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.database.Cursor;
 import android.provider.ContactsContract;
+import android.support.v4.content.AsyncTaskLoader;
 import org.sflphone.history.HistoryCall;
 import org.sflphone.history.HistoryEntry;
 import org.sflphone.history.HistoryManager;
