diff --git a/ring-android/app/src/main/java/cx/ring/application/RingApplication.java b/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
index 9125a77db6a44349bca859458aa7993e3ca03bb5..1e6519aed55f5c84a8fc4a16c0506becc9e5e96e 100644
--- a/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
+++ b/ring-android/app/src/main/java/cx/ring/application/RingApplication.java
@@ -70,7 +70,7 @@ import cx.ring.services.DaemonService;
 import cx.ring.services.DeviceRuntimeService;
 import cx.ring.services.HardwareService;
 import cx.ring.services.PresenceService;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.utils.FutureUtils;
 import cx.ring.utils.Log;
 
@@ -126,7 +126,7 @@ public class RingApplication extends Application {
     HardwareService mHardwareService;
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     @Inject
     DeviceRuntimeService mDeviceRuntimeService;
@@ -243,7 +243,7 @@ public class RingApplication extends Application {
         sendBroadcast(intent);
 
         // load accounts from Daemon
-        mAccountService.loadAccountsFromDaemon(mSettingsService.isConnectedWifiAndMobile());
+        mAccountService.loadAccountsFromDaemon(mSharedPreferencesService.isConnectedWifiAndMobile());
     }
 
     public void restartVideo() {
diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
index 4d31ee52de2bf2381daef6325444a71c7c70c4d3..c16e6b9a6cfcd1749e2376dfb856d80f1cb4adcc 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
@@ -81,7 +81,7 @@ import cx.ring.service.LocalService;
 import cx.ring.services.AccountService;
 import cx.ring.services.DeviceRuntimeService;
 import cx.ring.services.NotificationService;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.settings.SettingsFragment;
 import cx.ring.share.ShareFragment;
 import cx.ring.contactrequests.PendingContactRequestsFragment;
@@ -130,7 +130,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
     DeviceRuntimeService mDeviceRuntimeService;
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     @Inject
     AccountService mAccountService;
@@ -326,7 +326,7 @@ public class HomeActivity extends AppCompatActivity implements LocalService.Call
             perms.add(Manifest.permission.RECORD_AUDIO);
         }
 
-        Settings settings = mSettingsService.loadSettings();
+        Settings settings = mSharedPreferencesService.loadSettings();
 
         if (settings.isAllowSystemContacts() && !mDeviceRuntimeService.hasContactPermission()) {
             perms.add(Manifest.permission.READ_CONTACTS);
diff --git a/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java b/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
index 6ac4e05417c79e45a46fe6d672f6a8fb98cdd62d..82ebee03f6b49f9ef4ea0a035ee625568d55d58d 100755
--- a/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
+++ b/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
@@ -60,7 +60,7 @@ import cx.ring.services.HardwareService;
 import cx.ring.services.HistoryServiceImpl;
 import cx.ring.services.NotificationServiceImpl;
 import cx.ring.services.PresenceService;
-import cx.ring.services.SettingsServiceImpl;
+import cx.ring.services.SharedPreferencesServiceImpl;
 import cx.ring.settings.SettingsFragment;
 import cx.ring.settings.SettingsPresenter;
 import cx.ring.share.ShareFragment;
@@ -135,7 +135,7 @@ public interface RingInjectionComponent {
 
     void inject(HardwareService service);
 
-    void inject(SettingsServiceImpl service);
+    void inject(SharedPreferencesServiceImpl service);
 
     void inject(HistoryServiceImpl service);
 
diff --git a/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java b/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
index 9b5c0b87a5ecaac631f1ee0e15eed582096ab0c0..4e70ff4ad035e941528bfe606903a3328245be1b 100755
--- a/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
+++ b/ring-android/app/src/main/java/cx/ring/dependencyinjection/ServiceInjectionModule.java
@@ -46,8 +46,8 @@ import cx.ring.services.LogServiceImpl;
 import cx.ring.services.NotificationService;
 import cx.ring.services.NotificationServiceImpl;
 import cx.ring.services.PresenceService;
-import cx.ring.services.SettingsService;
-import cx.ring.services.SettingsServiceImpl;
+import cx.ring.services.SharedPreferencesService;
+import cx.ring.services.SharedPreferencesServiceImpl;
 import cx.ring.utils.Log;
 import cx.ring.utils.MediaManager;
 import dagger.Module;
@@ -64,8 +64,8 @@ public class ServiceInjectionModule {
 
     @Provides
     @Singleton
-    SettingsService provideSettingsService() {
-        SettingsServiceImpl settingsService = new SettingsServiceImpl();
+    SharedPreferencesService provideSettingsService() {
+        SharedPreferencesServiceImpl settingsService = new SharedPreferencesServiceImpl();
         mRingApplication.getRingInjectionComponent().inject(settingsService);
         return settingsService;
     }
@@ -147,7 +147,7 @@ public class ServiceInjectionModule {
 
     @Provides
     @Singleton
-    ContactService provideContactService(SettingsService settingsService) {
+    ContactService provideContactService(SharedPreferencesService sharedPreferencesService) {
         ContactServiceImpl contactService = new ContactServiceImpl();
         mRingApplication.getRingInjectionComponent().inject(contactService);
         return contactService;
diff --git a/ring-android/app/src/main/java/cx/ring/service/BootReceiver.java b/ring-android/app/src/main/java/cx/ring/service/BootReceiver.java
index ee90e81917b01056a79b9efc073d5db568310477..297530150080aca2cd2a2e88dea2349e1259c107 100644
--- a/ring-android/app/src/main/java/cx/ring/service/BootReceiver.java
+++ b/ring-android/app/src/main/java/cx/ring/service/BootReceiver.java
@@ -8,13 +8,13 @@ import android.util.Log;
 import javax.inject.Inject;
 
 import cx.ring.application.RingApplication;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 
 public class BootReceiver extends BroadcastReceiver {
     private static final String TAG = BootReceiver.class.getSimpleName();
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     public BootReceiver() {
     }
@@ -25,7 +25,7 @@ public class BootReceiver extends BroadcastReceiver {
         if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
 
             ((RingApplication) context.getApplicationContext()).getRingInjectionComponent().inject(this);
-            boolean isAllowRingOnStartup = mSettingsService.loadSettings().isAllowRingOnStartup();
+            boolean isAllowRingOnStartup = mSharedPreferencesService.loadSettings().isAllowRingOnStartup();
 
             if (isAllowRingOnStartup) {
                 Log.w(TAG, "Starting Ring on boot");
diff --git a/ring-android/app/src/main/java/cx/ring/service/LocalService.java b/ring-android/app/src/main/java/cx/ring/service/LocalService.java
index 7b3e34b35bbb64f71c8d61712532a706bb0942c0..ce93f2de2bc774ffd6e17c3dac2a614698b60bec 100644
--- a/ring-android/app/src/main/java/cx/ring/service/LocalService.java
+++ b/ring-android/app/src/main/java/cx/ring/service/LocalService.java
@@ -53,7 +53,7 @@ import cx.ring.services.AccountService;
 import cx.ring.services.ContactService;
 import cx.ring.services.DeviceRuntimeService;
 import cx.ring.services.NotificationService;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.utils.ActionHelper;
 import cx.ring.utils.ContentUriHandler;
 import cx.ring.utils.Observable;
@@ -75,7 +75,7 @@ public class LocalService extends Service implements Observer<ServiceEvent> {
     static public final String ACTION_CONV_ACCEPT = BuildConfig.APPLICATION_ID + ".action.CONV_ACCEPT";
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     @Inject
     AccountService mAccountService;
@@ -161,7 +161,7 @@ public class LocalService extends Service implements Observer<ServiceEvent> {
         // temporary listen for history modifications
         // When MVP/DI injection will be done, only the concerned presenters should listen
         // for model modifications
-        mSettingsService.addObserver(this);
+        mSharedPreferencesService.addObserver(this);
         mAccountService.addObserver(this);
         mContactService.addObserver(this);
         mConversationFacade.addObserver(this);
@@ -190,7 +190,7 @@ public class LocalService extends Service implements Observer<ServiceEvent> {
     public void onDestroy() {
         super.onDestroy();
         Log.e(TAG, "onDestroy");
-        mSettingsService.removeObserver(this);
+        mSharedPreferencesService.removeObserver(this);
         mAccountService.removeObserver(this);
         mContactService.removeObserver(this);
         mConversationFacade.removeObserver(this);
@@ -256,7 +256,7 @@ public class LocalService extends Service implements Observer<ServiceEvent> {
     private void updateConnectivityState() {
         if (dringStarted) {
             try {
-                getRemoteService().setAccountsActive(mSettingsService.isConnectedWifiAndMobile());
+                getRemoteService().setAccountsActive(mSharedPreferencesService.isConnectedWifiAndMobile());
                 getRemoteService().connectivityChanged();
             } catch (RemoteException e) {
                 Log.e(TAG, "updateConnectivityState", e);
@@ -389,7 +389,7 @@ public class LocalService extends Service implements Observer<ServiceEvent> {
 
     @Override
     public void update(Observable observable, ServiceEvent arg) {
-        if (observable instanceof SettingsService) {
+        if (observable instanceof SharedPreferencesService) {
             refreshContacts();
             updateConnectivityState();
         }
diff --git a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
index e69e9c89178b667697019760034d1958ad2f06a8..d89da5839d8c244d883c9631f4d12c206ad4d751 100644
--- a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
@@ -35,6 +35,7 @@ import android.text.format.DateUtils;
 
 import java.util.HashMap;
 import java.util.Random;
+import java.util.Set;
 import java.util.TreeMap;
 
 import javax.inject.Inject;
@@ -82,6 +83,12 @@ public class NotificationServiceImpl extends NotificationService implements Obse
     @Inject
     protected AccountService mAccountService;
 
+    @Inject
+    DeviceRuntimeService mDeviceRuntimeService;
+
+    @Inject
+    protected SharedPreferencesService mSharedPreferencesService;
+
     private NotificationManagerCompat notificationManager;
 
     private HashMap<Integer, NotificationCompat.Builder> mNotificationBuilders;
@@ -422,7 +429,12 @@ public class NotificationServiceImpl extends NotificationService implements Obse
                     final String accountID = arg.getEventInput(ServiceEvent.EventInput.ACCOUNT_ID, String.class);
                     final String from = arg.getEventInput(ServiceEvent.EventInput.FROM, String.class);
                     if (accountID != null && from != null) {
-                        showIncomingTrustRequestNotification(accountID, from);
+                        Set<String> requests = mSharedPreferencesService.loadRequestsPreferences(accountID);
+                        if (requests == null || !requests.contains(from)) {
+                            showIncomingTrustRequestNotification(accountID, from);
+
+                            mSharedPreferencesService.saveRequestPreferences(accountID, from);
+                        }
                     }
                     break;
                 }
diff --git a/ring-android/app/src/main/java/cx/ring/services/SettingsServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
similarity index 68%
rename from ring-android/app/src/main/java/cx/ring/services/SettingsServiceImpl.java
rename to ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
index e89fe18abab3b7822d8515184d95a4dc60e9a8f2..8f45f74c41e615095c2c674cf52a7f85c094ff05 100644
--- a/ring-android/app/src/main/java/cx/ring/services/SettingsServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
@@ -22,14 +22,18 @@ package cx.ring.services;
 import android.content.Context;
 import android.content.SharedPreferences;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.inject.Inject;
 
 import cx.ring.model.Settings;
 import cx.ring.utils.NetworkUtils;
 
-public class SettingsServiceImpl extends SettingsService {
+public class SharedPreferencesServiceImpl extends SharedPreferencesService {
 
     public static final String RING_SETTINGS = "ring_settings";
+    public static final String RING_REQUESTS = "ring_requests";
 
     public static final String RING_MOBILE_DATA = "mobile_data";
     public static final String RING_SYSTEM_CONTACTS = "system_contacts";
@@ -39,7 +43,7 @@ public class SettingsServiceImpl extends SettingsService {
     @Inject
     protected Context mContext;
 
-    public SettingsServiceImpl() {
+    public SharedPreferencesServiceImpl() {
         mUserSettings = null;
     }
 
@@ -86,6 +90,42 @@ public class SettingsServiceImpl extends SettingsService {
         return mUserSettings;
     }
 
+    private void saveRequests(String accountId, Set<String> requests) {
+        SharedPreferences preferences = mContext.getSharedPreferences(RING_REQUESTS, Context.MODE_PRIVATE);
+        SharedPreferences.Editor edit = preferences.edit();
+        edit.clear();
+        edit.putStringSet(accountId, requests);
+        edit.apply();
+    }
+
+    @Override
+    public void saveRequestPreferences(String accountId, String contactId) {
+        Set<String> requests = loadRequestsPreferences(accountId);
+        if (requests == null) {
+            requests = new HashSet<>();
+        }
+
+        requests.add(contactId);
+        saveRequests(accountId, requests);
+    }
+
+    @Override
+    public Set<String> loadRequestsPreferences(String accountId) {
+        SharedPreferences preferences = mContext.getSharedPreferences(RING_REQUESTS, Context.MODE_PRIVATE);
+        return preferences.getStringSet(accountId, null);
+    }
+
+    @Override
+    public void removeRequestPreferences(String accountId, String contactId) {
+        Set<String> requests = loadRequestsPreferences(accountId);
+        if (requests == null) {
+            return;
+        }
+
+        requests.remove(contactId);
+        saveRequests(accountId, requests);
+    }
+
     public boolean isConnectedWifiAndMobile() {
         return NetworkUtils.isConnectedWifi(mContext)
                 || (NetworkUtils.isConnectedMobile(mContext) && getUserSettings().isAllowMobileData());
diff --git a/ring-android/libringclient/src/main/java/cx/ring/contactrequests/PendingContactRequestsPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/contactrequests/PendingContactRequestsPresenter.java
index 30facd348f2b860269e4838eb1139ebfdc4fa2b3..a014910ee835f3b549613d14acef287bf5a160ae 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/contactrequests/PendingContactRequestsPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/contactrequests/PendingContactRequestsPresenter.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
+import cx.ring.daemon.Blob;
 import cx.ring.model.Account;
 import cx.ring.model.ServiceEvent;
 import cx.ring.model.TrustRequest;
@@ -33,6 +34,7 @@ import cx.ring.services.AccountService;
 import cx.ring.services.DeviceRuntimeService;
 import cx.ring.services.NotificationService;
 import cx.ring.services.ContactService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.utils.Log;
 import cx.ring.utils.Observable;
 import cx.ring.utils.Observer;
@@ -49,6 +51,8 @@ public class PendingContactRequestsPresenter extends RootPresenter<PendingContac
     private NotificationService mNotificationService;
     private ContactService mContactService;
     private DeviceRuntimeService mDeviceRuntimeService;
+    private SharedPreferencesService mSharedPreferencesService;
+
     private String mAccountID;
     private ArrayList<PendingContactRequestsViewModel> mContactRequestsViewModels;
 
@@ -56,11 +60,13 @@ public class PendingContactRequestsPresenter extends RootPresenter<PendingContac
     public PendingContactRequestsPresenter(AccountService accountService,
                                            NotificationService notificationService,
                                            ContactService contactService,
-                                           DeviceRuntimeService deviceRuntimeService) {
+                                           DeviceRuntimeService deviceRuntimeService,
+                                           SharedPreferencesService sharedPreferencesService) {
         mAccountService = accountService;
         mNotificationService = notificationService;
         mContactService = contactService;
         mDeviceRuntimeService = deviceRuntimeService;
+        mSharedPreferencesService = sharedPreferencesService;
     }
 
     final private List<TrustRequest> mTrustRequests = new ArrayList<>();
@@ -153,12 +159,15 @@ public class PendingContactRequestsPresenter extends RootPresenter<PendingContac
             }
         }
 
+        mSharedPreferencesService.removeRequestPreferences(accountId, contactId);
         updateList(false);
     }
 
     public void refuseTrustRequest(PendingContactRequestsViewModel viewModel) {
         String accountId = mAccountID == null ? mAccountService.getCurrentAccount().getAccountID() : mAccountID;
-        mAccountService.discardTrustRequest(accountId, viewModel.getContactId());
+        String contactId = viewModel.getContactId();
+        mAccountService.discardTrustRequest(accountId, contactId);
+        mSharedPreferencesService.removeRequestPreferences(accountId, contactId);
         updateList(true);
     }
 
@@ -167,6 +176,7 @@ public class PendingContactRequestsPresenter extends RootPresenter<PendingContac
         String contactId = viewModel.getContactId();
         mAccountService.discardTrustRequest(accountId, contactId);
         mContactService.removeContact(accountId, contactId);
+        mSharedPreferencesService.removeRequestPreferences(accountId, contactId);
         updateList(true);
     }
 
@@ -178,8 +188,21 @@ public class PendingContactRequestsPresenter extends RootPresenter<PendingContac
         Log.d(TAG, "update " + event.getEventType());
 
         switch (event.getEventType()) {
-            case ACCOUNTS_CHANGED:
             case INCOMING_TRUST_REQUEST:
+                final String accountId = event.getEventInput(ServiceEvent.EventInput.ACCOUNT_ID, String.class);
+                final String from = event.getEventInput(ServiceEvent.EventInput.FROM, String.class);
+                final String payload = event.getEventInput(ServiceEvent.EventInput.MESSAGE, Blob.class).toJavaString();
+                TrustRequest request = new TrustRequest(accountId, from);
+                Tuple<VCard, String> tuple = TrustRequestUtils.parsePayload(payload);
+                request.setVCard(tuple.first);
+                request.setMessage(tuple.second);
+                if (!mTrustRequestsTmp.contains(request) && !mTrustRequests.contains(request)) {
+                    mTrustRequestsTmp.add(request);
+                    mAccountService.lookupAddress("", "", from);
+                    updateList(false);
+                }
+                break;
+            case ACCOUNTS_CHANGED:
                 updateList(true);
                 break;
             case REGISTERED_NAME_FOUND:
diff --git a/ring-android/libringclient/src/main/java/cx/ring/services/ContactService.java b/ring-android/libringclient/src/main/java/cx/ring/services/ContactService.java
index 166b89206fa9484568bd0ec3f569a3cd46a9b2b7..a60a46b9c1e29afc0f2ebbb46c3121446f096e05 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/services/ContactService.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/services/ContactService.java
@@ -64,7 +64,7 @@ public abstract class ContactService extends Observable {
     private final static String TAG = ContactService.class.getName();
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     @Inject
     DeviceRuntimeService mDeviceRuntimeService;
@@ -132,7 +132,7 @@ public abstract class ContactService extends Observable {
         mApplicationExecutor.submit(new Runnable() {
             @Override
             public void run() {
-                Settings settings = mSettingsService.loadSettings();
+                Settings settings = mSharedPreferencesService.loadSettings();
                 if (settings.isAllowSystemContacts() && mDeviceRuntimeService.hasContactPermission()) {
                     mContactList = loadContactsFromSystem(loadRingContacts, loadSipContacts);
                 }
@@ -204,6 +204,7 @@ public abstract class ContactService extends Observable {
 
         return contacts;
     }
+
     public Collection<CallContact> getContactsConfirmed() {
         List<CallContact> contacts = new ArrayList<>(getContacts());
         Iterator<CallContact> it = contacts.iterator();
@@ -242,7 +243,7 @@ public abstract class ContactService extends Observable {
             return null;
         }
 
-        Settings settings = mSettingsService.loadSettings();
+        Settings settings = mSharedPreferencesService.loadSettings();
 
         CallContact contact = mContactList.get(id);
         if (contact == null && (settings.isAllowSystemContacts() && mDeviceRuntimeService.hasContactPermission())) {
@@ -266,7 +267,7 @@ public abstract class ContactService extends Observable {
             return null;
         }
 
-        Settings settings = mSettingsService.loadSettings();
+        Settings settings = mSharedPreferencesService.loadSettings();
 
         String searchedCanonicalNumber = CallContact.canonicalNumber(number);
 
diff --git a/ring-android/libringclient/src/main/java/cx/ring/services/SettingsService.java b/ring-android/libringclient/src/main/java/cx/ring/services/SharedPreferencesService.java
similarity index 78%
rename from ring-android/libringclient/src/main/java/cx/ring/services/SettingsService.java
rename to ring-android/libringclient/src/main/java/cx/ring/services/SharedPreferencesService.java
index f193edef80295a0d6ce9c8729086fae0d3fdf4b1..142919bdfb0cc6bf01f36a43b1af62a752c7b9cf 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/services/SettingsService.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/services/SharedPreferencesService.java
@@ -19,10 +19,12 @@
  */
 package cx.ring.services;
 
+import java.util.Set;
+
 import cx.ring.model.Settings;
 import cx.ring.utils.Observable;
 
-public abstract class SettingsService extends Observable {
+public abstract class SharedPreferencesService extends Observable {
 
     protected Settings mUserSettings;
 
@@ -35,4 +37,10 @@ public abstract class SettingsService extends Observable {
     }
 
     public abstract boolean isConnectedWifiAndMobile();
+
+    public abstract void saveRequestPreferences(String accountId, String contactId);
+
+    public abstract Set<String> loadRequestsPreferences(String accountId);
+
+    public abstract void removeRequestPreferences(String accountId, String contactId);
 }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/settings/SettingsPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/settings/SettingsPresenter.java
index ee603e1c2120a8dfdb4a26424d732b77383b0f01..4de349614bd614492d5127f4c909a3f254949261 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/settings/SettingsPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/settings/SettingsPresenter.java
@@ -26,14 +26,14 @@ import cx.ring.model.Settings;
 import cx.ring.mvp.GenericView;
 import cx.ring.mvp.RootPresenter;
 import cx.ring.services.HistoryService;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.utils.Observable;
 import cx.ring.utils.Observer;
 
 public class SettingsPresenter extends RootPresenter<GenericView<SettingsViewModel>> implements Observer<ServiceEvent> {
 
     @Inject
-    SettingsService mSettingsService;
+    SharedPreferencesService mSharedPreferencesService;
 
     @Inject
     HistoryService mHistoryService;
@@ -41,7 +41,7 @@ public class SettingsPresenter extends RootPresenter<GenericView<SettingsViewMod
     @Override
     public void afterInjection() {
         // We observe the application settings changes
-        mSettingsService.addObserver(this);
+        mSharedPreferencesService.addObserver(this);
         // no need to observe the history changes
         // only the smartlist should do so
     }
@@ -52,14 +52,14 @@ public class SettingsPresenter extends RootPresenter<GenericView<SettingsViewMod
         }
 
         // load the app settings
-        Settings settings = mSettingsService.loadSettings();
+        Settings settings = mSharedPreferencesService.loadSettings();
 
         // let the view display the associated ViewModel
         getView().showViewModel(new SettingsViewModel(settings));
     }
 
     public void saveSettings(Settings settings) {
-        mSettingsService.saveSettings(settings);
+        mSharedPreferencesService.saveSettings(settings);
     }
 
     public void clearHistory() {
@@ -68,7 +68,7 @@ public class SettingsPresenter extends RootPresenter<GenericView<SettingsViewMod
 
     @Override
     public void update(Observable observable, ServiceEvent o) {
-        if (observable instanceof SettingsService) {
+        if (observable instanceof SharedPreferencesService) {
             loadSettings();
         }
     }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
index 57e8b73e05338a33c109fa96a3d37fb7ef672c17..b5d45fb2dc969578ebfff35db274574be477aea6 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
@@ -40,7 +40,7 @@ import cx.ring.services.AccountService;
 import cx.ring.services.ContactService;
 import cx.ring.services.HistoryService;
 import cx.ring.services.PresenceService;
-import cx.ring.services.SettingsService;
+import cx.ring.services.SharedPreferencesService;
 import cx.ring.utils.BlockchainInputHandler;
 import cx.ring.utils.Log;
 import cx.ring.utils.Observable;
@@ -57,7 +57,7 @@ public class SmartListPresenter extends RootPresenter<SmartListView> implements
 
     private HistoryService mHistoryService;
 
-    private SettingsService mSettingsService;
+    private SharedPreferencesService mSharedPreferencesService;
 
     private ConversationFacade mConversationFacade;
 
@@ -72,11 +72,11 @@ public class SmartListPresenter extends RootPresenter<SmartListView> implements
     @Inject
     public SmartListPresenter(AccountService accountService, ContactService contactService,
                               HistoryService historyService, ConversationFacade conversationFacade,
-                              SettingsService settingsService, PresenceService presenceService) {
+                              PresenceService presenceService, SharedPreferencesService sharedPreferencesService) {
         this.mAccountService = accountService;
         this.mContactService = contactService;
         this.mHistoryService = historyService;
-        this.mSettingsService = settingsService;
+        this.mSharedPreferencesService = sharedPreferencesService;
         this.mConversationFacade = conversationFacade;
         this.mPresenceService = presenceService;
     }
@@ -104,10 +104,10 @@ public class SmartListPresenter extends RootPresenter<SmartListView> implements
 
     public void refresh(boolean isConnectedWifi, boolean isConnectedMobile) {
         boolean isConnected = isConnectedWifi
-                || (isConnectedMobile && mSettingsService.getUserSettings().isAllowMobileData());
+                || (isConnectedMobile && mSharedPreferencesService.getUserSettings().isAllowMobileData());
 
         boolean isMobileAndNotAllowed = isConnectedMobile
-                && !mSettingsService.getUserSettings().isAllowMobileData();
+                && !mSharedPreferencesService.getUserSettings().isAllowMobileData();
 
         if (isConnected) {
             getView().hideErrorPanel();