diff --git a/src/org/sflphone/fragments/AccountCreationFragment.java b/src/org/sflphone/fragments/AccountCreationFragment.java
index 48e461b..7181015 100644
--- a/src/org/sflphone/fragments/AccountCreationFragment.java
+++ b/src/org/sflphone/fragments/AccountCreationFragment.java
@@ -7,7 +7,7 @@
 import org.sflphone.account.AccountDetailBasic;
 import org.sflphone.account.AccountDetailSrtp;
 import org.sflphone.account.AccountDetailTls;
-import org.sflphone.client.SFLPhonePreferenceActivity;
+import org.sflphone.client.SettingsActivity;
 import org.sflphone.service.ISipService;
 
 import android.app.Activity;
@@ -56,7 +56,6 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        // mAdapter = new HistoryAdapter(getActivity(),new ArrayList<HashMap<String, String>>());
     }
 
     @Override
@@ -252,7 +251,7 @@
 
         createNewAccount(accountDetails);
 
-        Intent resultIntent = new Intent(getActivity(), SFLPhonePreferenceActivity.class);
+        Intent resultIntent = new Intent(getActivity(), SettingsActivity.class);
         getActivity().setResult(Activity.RESULT_OK, resultIntent);
         resultIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
         startActivity(resultIntent);
diff --git a/src/org/sflphone/fragments/HistoryFragment.java b/src/org/sflphone/fragments/HistoryFragment.java
index 52f5a48..30c1d92 100644
--- a/src/org/sflphone/fragments/HistoryFragment.java
+++ b/src/org/sflphone/fragments/HistoryFragment.java
@@ -31,7 +31,6 @@
 package org.sflphone.fragments;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -45,6 +44,7 @@
 import android.app.Activity;
 import android.app.ListFragment;
 import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
 import android.content.Loader;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -59,6 +59,7 @@
 import android.widget.Button;
 import android.widget.ImageButton;
 import android.widget.ImageView;
+import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.TextView;
 
diff --git a/src/org/sflphone/fragments/MenuFragment.java b/src/org/sflphone/fragments/MenuFragment.java
index 6dfbba3..e1234f5 100644
--- a/src/org/sflphone/fragments/MenuFragment.java
+++ b/src/org/sflphone/fragments/MenuFragment.java
@@ -37,8 +37,8 @@
 import org.sflphone.adapters.ContactPictureTask;
 import org.sflphone.adapters.MenuAdapter;
 import org.sflphone.client.ActivityHolder;
-import org.sflphone.client.SFLPhoneHomeActivity;
-import org.sflphone.client.SFLPhonePreferenceActivity;
+import org.sflphone.client.HomeActivity;
+import org.sflphone.client.SettingsActivity;
 import org.sflphone.interfaces.AccountsInterface;
 import org.sflphone.loaders.AccountsLoader;
 import org.sflphone.loaders.LoaderConstants;
@@ -123,14 +123,14 @@
         accountReceiver = new AccountsReceiver(this);
 
         String[] categories = getResources().getStringArray(R.array.menu_categories);
-//        ArrayAdapter<String> paramAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray(
-//                R.array.menu_items_param));
-//        ArrayAdapter<String> helpAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray(
-//                R.array.menu_items_help));
+        // ArrayAdapter<String> paramAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray(
+        // R.array.menu_items_param));
+        // ArrayAdapter<String> helpAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray(
+        // R.array.menu_items_help));
 
         // Add Sections
-        //mAdapter.addSection(categories[0], paramAdapter);
-        //mAdapter.addSection(categories[1], helpAdapter);
+        // mAdapter.addSection(categories[0], paramAdapter);
+        // mAdapter.addSection(categories[1], helpAdapter);
 
     }
 
@@ -165,8 +165,8 @@
                 Intent in = new Intent();
                 switch (pos) {
                 case 0:
-                    in.setClass(getActivity(), SFLPhonePreferenceActivity.class);
-                    getActivity().startActivityForResult(in, SFLPhoneHomeActivity.REQUEST_CODE_PREFERENCES);
+                    in.setClass(getActivity(), SettingsActivity.class);
+                    getActivity().startActivityForResult(in, HomeActivity.REQUEST_CODE_PREFERENCES);
                     break;
                 case 1:
                     in.putExtra("ActivityHolder.args", ActivityHolder.args.FRAG_ABOUT);
