diff --git a/Ring/Cartfile b/Ring/Cartfile
index a3b764c392d97dd478cc60cccd5b0aa3f66720af..a1c8010857c2271fcdde915e50293e82855f5a42 100644
--- a/Ring/Cartfile
+++ b/Ring/Cartfile
@@ -1,5 +1,5 @@
-github "RxSwiftCommunity/RxRealm"
-github "RxSwiftCommunity/RxDataSources" == 1.0.3
+github "RxSwiftCommunity/RxRealm" ~> 0.7
+github "RxSwiftCommunity/RxDataSources" ~> 3.0
 github "pkluz/PKHUD"
 github "AliSoftware/Reusable" ~> 4.0
 github "SwiftyBeaver/SwiftyBeaver"
diff --git a/Ring/Cartfile.resolved b/Ring/Cartfile.resolved
index 8e13fb592ddc47183c7c67c6aa71a84147dbcc6c..a68070b65c04d4f669356b89013966942d27ec9c 100644
--- a/Ring/Cartfile.resolved
+++ b/Ring/Cartfile.resolved
@@ -1,10 +1,10 @@
 github "AliSoftware/Reusable" "4.0.1"
-github "ReactiveX/RxSwift" "3.5.0"
-github "RxSwiftCommunity/RxDataSources" "1.0.4"
-github "RxSwiftCommunity/RxRealm" "0.6.0"
+github "ReactiveX/RxSwift" "4.0.0"
+github "RxSwiftCommunity/RxDataSources" "3.0.2"
+github "RxSwiftCommunity/RxRealm" "0.7.4"
 github "SwiftyBeaver/SwiftyBeaver" "1.4.2"
 github "ViccAlexander/Chameleon" "2.2.0"
 github "andreamazz/AMPopTip" "3.0.2"
 github "ashleymills/Reachability.swift" "v4.1.0"
 github "pkluz/PKHUD" "4.2.3"
-github "realm/realm-cocoa" "v2.8.3"
+github "realm/realm-cocoa" "v3.0.1"
diff --git a/Ring/Ring.xcodeproj/project.pbxproj b/Ring/Ring.xcodeproj/project.pbxproj
index a20f47adf27bac5f799fdad9ef0fa1cb4d20f737..9c4b9e61049c282474a8a73ffa93a4dfe5fb9b4c 100644
--- a/Ring/Ring.xcodeproj/project.pbxproj
+++ b/Ring/Ring.xcodeproj/project.pbxproj
@@ -199,6 +199,7 @@
 		56BBC9D41EDC7A6D00CDAF8B /* libargon2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 56BBC9D31EDC7A6D00CDAF8B /* libargon2.a */; };
 		56BBC9DF1EDDC9D300CDAF8B /* LookupNameResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BBC9DE1EDDC9D300CDAF8B /* LookupNameResponse.m */; };
 		56C715FF1F0D36C600770048 /* ContactsAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 56C715FE1F0D36C600770048 /* ContactsAdapter.mm */; };
+		5C093F011FB495830011D90E /* Differentiator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C093F001FB495830011D90E /* Differentiator.framework */; };
 		621231F91F880EDF009B86F0 /* UILabel+Ring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621231F81F880EDF009B86F0 /* UILabel+Ring.swift */; };
 		621231FB1F8D6FEE009B86F0 /* MessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621231FA1F8D6FEE009B86F0 /* MessageCell.swift */; };
 		62A88D371F6C2ED400F8AB18 /* PresenceAdapterDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62A88D361F6C2ED400F8AB18 /* PresenceAdapterDelegate.swift */; };
@@ -447,6 +448,7 @@
 		56C715FE1F0D36C600770048 /* ContactsAdapter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContactsAdapter.mm; sourceTree = "<group>"; };
 		56C716001F0D36D900770048 /* ContactsAdapterDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactsAdapterDelegate.swift; sourceTree = "<group>"; };
 		56C716021F0D466100770048 /* ContactsService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactsService.swift; sourceTree = "<group>"; };
+		5C093F001FB495830011D90E /* Differentiator.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Differentiator.framework; path = Carthage/Build/iOS/Differentiator.framework; sourceTree = "<group>"; };
 		621231F81F880EDF009B86F0 /* UILabel+Ring.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+Ring.swift"; sourceTree = "<group>"; };
 		621231FA1F8D6FEE009B86F0 /* MessageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageCell.swift; sourceTree = "<group>"; };
 		62A88D351F6C2E5F00F8AB18 /* PresenceAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresenceAdapter.h; sourceTree = "<group>"; };
@@ -464,6 +466,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				5C093F011FB495830011D90E /* Differentiator.framework in Frameworks */,
 				0ED666101F9FED1C00743D42 /* AMPopTip.framework in Frameworks */,
 				0EEFBA3C1F83DA21000EDBAD /* libsecp256k1.a in Frameworks */,
 				1A3CA32B1F102BB700283748 /* Chameleon.framework in Frameworks */,
@@ -573,6 +576,7 @@
 		02AED8171DD4C4B000F740BA /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				5C093F001FB495830011D90E /* Differentiator.framework */,
 				0ED6660F1F9FED1C00743D42 /* AMPopTip.framework */,
 				62DFAB2B1F9FF030002D6F9C /* Reachability.framework */,
 				0EEFBA3B1F83DA21000EDBAD /* libsecp256k1.a */,
@@ -1310,6 +1314,7 @@
 				"$(SRCROOT)/Carthage/Build/iOS/Chameleon.framework",
 				"$(SRCROOT)/Carthage/build/iOS/AMPopTip.framework",
 				"$(SRCROOT)/Carthage/Build/iOS/Reachability.framework",
+				"$(SRCROOT)/Carthage/Build/iOS/Differentiator.framework",
 			);
 			name = "⚙️ Copy Frameworks";
 			outputPaths = (
@@ -1324,6 +1329,7 @@
 				"$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SwiftyBeaver.framework",
 				"$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Chameleon.framework",
 				"$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/AMPopTip.framework",
+				"$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Differentiator.framework",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
diff --git a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.storyboard b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.storyboard
index 7dc41fb51a0eea841225b2c9c63788e7e9673f29..9a07b37b9f7a8a00c88512a0e71da29497eaf8fc 100644
--- a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.storyboard
+++ b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.storyboard
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Raw-Ee-7sK">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Raw-Ee-7sK">
     <device id="retina4_7" orientation="portrait">
         <adaptation id="fullscreen"/>
     </device>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13174"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -78,9 +78,6 @@
                                 <color key="tintColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                 <offsetWrapper key="searchFieldBackgroundPositionAdjustment" horizontal="0.0" vertical="0.0"/>
                                 <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="namePhonePad" returnKeyType="done"/>
-                                <connections>
-                                    <outlet property="delegate" destination="Raw-Ee-7sK" id="Gew-Uj-8Rz"/>
-                                </connections>
                             </searchBar>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="HFM-G6-hMN">
                                 <rect key="frame" x="0.0" y="132" width="375" height="535"/>
diff --git a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift
index 546b53c967486f1150be77ac25b6237b75d8517a..c01873446ab3b77e75c146fdecec99808e6a6e47 100644
--- a/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift
+++ b/Ring/Ring/Features/Conversations/SmartList/SmartlistViewController.swift
@@ -136,10 +136,6 @@ class SmartlistViewController: UIViewController, StoryboardBased, ViewModelBased
 
     func setupDataSources() {
 
-        //Create DataSources for conversations and filtered conversations
-        let conversationsDataSource = RxTableViewSectionedReloadDataSource<ConversationSection>()
-        let searchResultsDatasource = RxTableViewSectionedReloadDataSource<ConversationSection>()
-
         //Configure cells closure for the datasources
         let configureCell: (TableViewSectionedDataSource, UITableView, IndexPath, ConversationSection.Item)
             -> UITableViewCell = {
@@ -205,14 +201,15 @@ class SmartlistViewController: UIViewController, StoryboardBased, ViewModelBased
                 return cell
         }
 
+        //Create DataSources for conversations and filtered conversations
+        let conversationsDataSource = RxTableViewSectionedReloadDataSource<ConversationSection>(configureCell: configureCell)
+        let searchResultsDatasource = RxTableViewSectionedReloadDataSource<ConversationSection>(configureCell: configureCell)
+
         //Allows to delete
         conversationsDataSource.canEditRowAtIndexPath = { _ in
             return true
         }
 
-        conversationsDataSource.configureCell = configureCell
-        searchResultsDatasource.configureCell = configureCell
-
         //Bind TableViews to DataSources
         self.viewModel.conversations
             .bind(to: self.conversationsTableView.rx.items(dataSource: conversationsDataSource))
diff --git a/Ring/Ring/Features/Me/Me/MeViewController.swift b/Ring/Ring/Features/Me/Me/MeViewController.swift
index 6d7d34a42d1056d525f9cb99c05bd3d0c7576c6b..ea631c0ecc2d0126dee1fcdfa27c258b7673b617 100644
--- a/Ring/Ring/Features/Me/Me/MeViewController.swift
+++ b/Ring/Ring/Features/Me/Me/MeViewController.swift
@@ -67,8 +67,6 @@ class MeViewController: EditProfileViewController, StoryboardBased, ViewModelBas
 
     func setUpDataSource() {
 
-        let settingsItmeDataSource = RxTableViewSectionedReloadDataSource<SettingsSection>()
-
         let configureCell: (TableViewSectionedDataSource, UITableView, IndexPath, SettingsSection.Item)
             -> UITableViewCell = {
                 ( dataSource: TableViewSectionedDataSource<SettingsSection>,
@@ -98,13 +96,13 @@ class MeViewController: EditProfileViewController, StoryboardBased, ViewModelBas
                 }
         }
 
-        settingsItmeDataSource.configureCell = configureCell
+        let settingsItemDataSource = RxTableViewSectionedReloadDataSource<SettingsSection>(configureCell: configureCell)
         self.viewModel.settings
-            .bind(to: self.settingsTable.rx.items(dataSource: settingsItmeDataSource))
+            .bind(to: self.settingsTable.rx.items(dataSource: settingsItemDataSource))
             .disposed(by: disposeBag)
 
         //Set header titles
-        settingsItmeDataSource.titleForHeaderInSection = { dataSource, index in
+        settingsItemDataSource.titleForHeaderInSection = { dataSource, index in
             return dataSource.sectionModels[index].header
         }
     }