diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index faf8f72..23f3bfe 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -72,7 +72,7 @@
     static final int ACCOUNT_CREATE_REQUEST = 1;
     static final int ACCOUNT_EDIT_REQUEST = 2;
     private SFLPhonePreferenceActivity sflphonePreferenceActivity;
-    private ISipService service;
+    private ISipService service = null;
 
     ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys = null;
     ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys = null;
@@ -106,6 +106,19 @@
 
         Log.i(TAG, "Create Account Management Fragment");
 
+        /*
+         * FIXME if service cannot be obtained from SFLPhonePreferenceActivity,
+         * then get it from Application
+         */
+        service = sflphonePreferenceActivity.getSipService();
+        if (service == null) {
+            service = ((SFLphoneApplication)sflphonePreferenceActivity.getApplication()).getSipService();
+            if (service == null) {
+                Log.e(TAG, "onCreate() service=" + service);
+            }
+        }
+        Log.w(TAG, "onCreate() service=" + service);
+
         setPreferenceScreen(getAccountListPreferenceScreen());
 
         LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
diff --git a/src/com/savoirfairelinux/sflphone/client/CallElementList.java b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
index 961a027..4e68522 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallElementList.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
@@ -83,6 +83,7 @@
     private CallElementAdapter mAdapter;
     private String mCurFilter;
     private SFLPhoneHome sflphoneHome;
+    private SFLphoneApplication sflphoneApplication;
     private ISipService service;
     private AccountSelectionButton mAccountSelectionButton;
     private AccountList mAccountList;
@@ -303,6 +304,8 @@
                 Log.i(TAG, "On Long Click");
                 final CharSequence[] items = {"Hang up Call", "Send Message", "Add to Conference"};
                 final SipCall call = (SipCall) mAdapter.getItem(pos);
+                // FIXME
+                service = sflphoneApplication.getSipService();
                 AlertDialog.Builder builder = new AlertDialog.Builder(context);
                 builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName)
                       .setCancelable(true)
diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
index 5e590d3..d9f5c8b 100644
--- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
@@ -89,6 +89,7 @@
     Activity mContext;
     String mCurFilter;
     private SFLPhoneHome sflphoneHome;
+    private SFLphoneApplication sflphoneApplication;
     private ISipService service;
     private AccountSelectionButton mAccountSelectionButton;
     private AccountList mAccountList;
@@ -103,8 +104,9 @@
     public void onAttach(Activity activity) {
         super.onAttach(activity);
         sflphoneHome = (SFLPhoneHome) activity;
-        service = ((SFLphoneApplication) sflphoneHome.getApplication()).getSipService();
-        mAccountList = ((SFLphoneApplication)sflphoneHome.getApplication()).getAccountList();
+        sflphoneApplication = (SFLphoneApplication) sflphoneHome.getApplication();
+        service = sflphoneApplication.getSipService();
+        mAccountList = sflphoneApplication.getAccountList();
 
         Log.i(TAG, "onAttach() service=" + service + ", mAccountList=" + mAccountList);
     }
@@ -228,6 +230,8 @@
                 // TODO getCallInstnace should be implemented in SipCallList
                 // final SipCall call = SipCall.getCallInstance(info);
                 final SipCall call = new SipCall(info);
+                // FIXME
+                service = sflphoneApplication.getSipService();
                 AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                 builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName)
                       .setCancelable(true)
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index 5070bb3..0a17ff4 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -142,8 +142,8 @@
             mBound = false;
         }
 
-        stopService(new Intent(this, SipService.class));
-        serviceIsOn = false;
+//        stopService(new Intent(this, SipService.class));
+//        serviceIsOn = false;
         super.onDestroy();
     }
 
