diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift
index 4dad2c2bf992cff93e37f2f6f7dcfd24356602c9..d863e016e9f28069ddcc36104793639aef96be33 100644
--- a/Examples/xx-messenger/Package.swift
+++ b/Examples/xx-messenger/Package.swift
@@ -119,10 +119,8 @@ let package = Package(
     .target(
       name: "BackupFeature",
       dependencies: [
-        .target(name: "AppCore"),
         .product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
         .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"),
-        .product(name: "XXModels", package: "client-ios-db"),
       ],
       swiftSettings: swiftSettings
     ),
diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
index cd5d752e89186c7c417cc5696ccf2e1a1367b57e..ce52387f7624f3d3583f0be4e95571926327b754 100644
--- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
+++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
@@ -164,7 +164,6 @@ extension AppEnvironment {
           backup: {
             BackupEnvironment(
               messenger: messenger,
-              db: dbManager.getDB,
               backupStorage: backupStorage,
               mainQueue: mainQueue,
               bgQueue: bgQueue
diff --git a/Examples/xx-messenger/Sources/BackupFeature/BackupFeature.swift b/Examples/xx-messenger/Sources/BackupFeature/BackupFeature.swift
index 431dd8ea7c546a4ac05715f6a90c59ddde85a04b..8010f17d1d0727c4621841dd124a93dcda0e0b5d 100644
--- a/Examples/xx-messenger/Sources/BackupFeature/BackupFeature.swift
+++ b/Examples/xx-messenger/Sources/BackupFeature/BackupFeature.swift
@@ -1,10 +1,8 @@
-import AppCore
 import Combine
 import ComposableArchitecture
 import Foundation
 import XXClient
 import XXMessengerClient
-import XXModels
 
 public struct BackupState: Equatable {
   public enum Field: String, Hashable {
@@ -12,8 +10,7 @@ public struct BackupState: Equatable {
   }
 
   public enum Error: String, Swift.Error, Equatable {
-    case dbContactNotFound
-    case dbContactUsernameMissing
+    case contactUsernameMissing
   }
 
   public init(
@@ -71,20 +68,17 @@ public enum BackupAction: Equatable, BindableAction {
 public struct BackupEnvironment {
   public init(
     messenger: Messenger,
-    db: DBManagerGetDB,
     backupStorage: BackupStorage,
     mainQueue: AnySchedulerOf<DispatchQueue>,
     bgQueue: AnySchedulerOf<DispatchQueue>
   ) {
     self.messenger = messenger
-    self.db = db
     self.backupStorage = backupStorage
     self.mainQueue = mainQueue
     self.bgQueue = bgQueue
   }
 
   public var messenger: Messenger
-  public var db: DBManagerGetDB
   public var backupStorage: BackupStorage
   public var mainQueue: AnySchedulerOf<DispatchQueue>
   public var bgQueue: AnySchedulerOf<DispatchQueue>
@@ -94,7 +88,6 @@ public struct BackupEnvironment {
 extension BackupEnvironment {
   public static let unimplemented = BackupEnvironment(
     messenger: .unimplemented,
-    db: .unimplemented,
     backupStorage: .unimplemented,
     mainQueue: .unimplemented,
     bgQueue: .unimplemented
@@ -129,15 +122,9 @@ public let backupReducer = Reducer<BackupState, BackupAction, BackupEnvironment>
     state.focusedField = nil
     return Effect.run { [state] subscriber in
       do {
-        let e2e: E2E = try env.messenger.e2e.tryGet()
-        let contactID = try e2e.getContact().getId()
-        let db = try env.db()
-        let query = XXModels.Contact.Query(id: [contactID])
-        guard let contact = try db.fetchContacts(query).first else {
-          throw BackupState.Error.dbContactNotFound
-        }
-        guard let username = contact.username else {
-          throw BackupState.Error.dbContactUsernameMissing
+        let contact = try env.messenger.myContact(includeFacts: .types([.username]))
+        guard let username = try contact.getFact(.username)?.value else {
+          throw BackupState.Error.contactUsernameMissing
         }
         try env.messenger.startBackup(
           password: state.passphrase,
diff --git a/Examples/xx-messenger/Tests/BackupFeatureTests/BackupFeatureTests.swift b/Examples/xx-messenger/Tests/BackupFeatureTests/BackupFeatureTests.swift
index b916ddc0719ad73eaf9c0fa04eb6ab52250a0350..d0c69eb87e2efea29f635fce84656b04d2e35cba 100644
--- a/Examples/xx-messenger/Tests/BackupFeatureTests/BackupFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/BackupFeatureTests/BackupFeatureTests.swift
@@ -2,7 +2,6 @@ import ComposableArchitecture
 import XCTest
 import XXClient
 import XXMessengerClient
-import XXModels
 @testable import BackupFeature
 
 final class BackupFeatureTests: XCTestCase {
@@ -65,11 +64,7 @@ final class BackupFeatureTests: XCTestCase {
   func testStartBackup() {
     var actions: [Action]!
     var isBackupRunning: [Bool] = [true]
-    let contactID = "contact-id".data(using: .utf8)!
-    let dbContact = XXModels.Contact(
-      id: contactID,
-      username: "db-contact-username"
-    )
+    let username = "test-username"
     let passphrase = "backup-password"
 
     let store = TestStore(
@@ -79,26 +74,18 @@ final class BackupFeatureTests: XCTestCase {
     )
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
+    store.environment.messenger.myContact.run = { includeFacts in
+      actions.append(.didGetMyContact(includingFacts: includeFacts))
+      var contact = Contact.unimplemented("contact-data".data(using: .utf8)!)
+      contact.getFactsFromContact.run = { _ in [Fact(type: .username, value: username)] }
+      return contact
+    }
     store.environment.messenger.startBackup.run = { passphrase, params in
       actions.append(.didStartBackup(passphrase: passphrase, params: params))
     }
     store.environment.messenger.isBackupRunning.run = {
       isBackupRunning.removeFirst()
     }
-    store.environment.messenger.e2e.get = {
-      var e2e: E2E = .unimplemented
-      e2e.getContact.run = {
-        var contact: XXClient.Contact = .unimplemented(Data())
-        contact.getIdFromContact.run = { _ in contactID }
-        return contact
-      }
-      return e2e
-    }
-    store.environment.db.run = {
-      var db: Database = .unimplemented
-      db.fetchContacts.run = { _ in return [dbContact] }
-      return db
-    }
 
     actions = []
     store.send(.set(\.$focusedField, .passphrase)) {
@@ -117,9 +104,12 @@ final class BackupFeatureTests: XCTestCase {
     }
 
     XCTAssertNoDifference(actions, [
+      .didGetMyContact(
+        includingFacts: .types([.username])
+      ),
       .didStartBackup(
         passphrase: passphrase,
-        params: .init(username: dbContact.username!)
+        params: .init(username: username)
       )
     ])
 
@@ -130,9 +120,8 @@ final class BackupFeatureTests: XCTestCase {
     }
   }
 
-  func testStartBackupWithoutDbContact() {
+  func testStartBackupWithoutContactUsername() {
     var isBackupRunning: [Bool] = [false]
-    let contactID = "contact-id".data(using: .utf8)!
 
     let store = TestStore(
       initialState: BackupState(
@@ -143,29 +132,20 @@ final class BackupFeatureTests: XCTestCase {
     )
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
+    store.environment.messenger.myContact.run = { _ in
+      var contact = Contact.unimplemented("contact-data".data(using: .utf8)!)
+      contact.getFactsFromContact.run = { _ in [] }
+      return contact
+    }
     store.environment.messenger.isBackupRunning.run = {
       isBackupRunning.removeFirst()
     }
-    store.environment.messenger.e2e.get = {
-      var e2e: E2E = .unimplemented
-      e2e.getContact.run = {
-        var contact: XXClient.Contact = .unimplemented(Data())
-        contact.getIdFromContact.run = { _ in contactID }
-        return contact
-      }
-      return e2e
-    }
-    store.environment.db.run = {
-      var db: Database = .unimplemented
-      db.fetchContacts.run = { _ in [] }
-      return db
-    }
 
     store.send(.startTapped) {
       $0.isStarting = true
     }
 
-    let failure = BackupState.Error.dbContactNotFound
+    let failure = BackupState.Error.contactUsernameMissing
     store.receive(.didStart(failure: failure as NSError)) {
       $0.isRunning = false
       $0.isStarting = false
@@ -173,13 +153,10 @@ final class BackupFeatureTests: XCTestCase {
     }
   }
 
-  func testStartBackupWithoutDbContactUsername() {
+  func testStartBackupMyContactFailure() {
+    struct Failure: Error {}
+    let failure = Failure()
     var isBackupRunning: [Bool] = [false]
-    let contactID = "contact-id".data(using: .utf8)!
-    let dbContact = XXModels.Contact(
-      id: contactID,
-      username: nil
-    )
 
     let store = TestStore(
       initialState: BackupState(
@@ -190,29 +167,15 @@ final class BackupFeatureTests: XCTestCase {
     )
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
+    store.environment.messenger.myContact.run = { _ in throw failure }
     store.environment.messenger.isBackupRunning.run = {
       isBackupRunning.removeFirst()
     }
-    store.environment.messenger.e2e.get = {
-      var e2e: E2E = .unimplemented
-      e2e.getContact.run = {
-        var contact: XXClient.Contact = .unimplemented(Data())
-        contact.getIdFromContact.run = { _ in contactID }
-        return contact
-      }
-      return e2e
-    }
-    store.environment.db.run = {
-      var db: Database = .unimplemented
-      db.fetchContacts.run = { _ in [dbContact] }
-      return db
-    }
 
     store.send(.startTapped) {
       $0.isStarting = true
     }
 
-    let failure = BackupState.Error.dbContactUsernameMissing
     store.receive(.didStart(failure: failure as NSError)) {
       $0.isRunning = false
       $0.isStarting = false
@@ -220,15 +183,10 @@ final class BackupFeatureTests: XCTestCase {
     }
   }
 
-  func testStartBackupFailure() {
+  func testStartBackupStartFailure() {
     struct Failure: Error {}
     let failure = Failure()
     var isBackupRunning: [Bool] = [false]
-    let contactID = "contact-id".data(using: .utf8)!
-    let dbContact = XXModels.Contact(
-      id: contactID,
-      username: "db-contact-username"
-    )
 
     let store = TestStore(
       initialState: BackupState(
@@ -239,26 +197,17 @@ final class BackupFeatureTests: XCTestCase {
     )
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
+    store.environment.messenger.myContact.run = { _ in
+      var contact = Contact.unimplemented("data".data(using: .utf8)!)
+      contact.getFactsFromContact.run = { _ in [Fact(type: .username, value: "username")] }
+      return contact
+    }
     store.environment.messenger.startBackup.run = { _, _ in
       throw failure
     }
     store.environment.messenger.isBackupRunning.run = {
       isBackupRunning.removeFirst()
     }
-    store.environment.messenger.e2e.get = {
-      var e2e: E2E = .unimplemented
-      e2e.getContact.run = {
-        var contact: XXClient.Contact = .unimplemented(Data())
-        contact.getIdFromContact.run = { _ in contactID }
-        return contact
-      }
-      return e2e
-    }
-    store.environment.db.run = {
-      var db: Database = .unimplemented
-      db.fetchContacts.run = { _ in return [dbContact] }
-      return db
-    }
 
     store.send(.startTapped) {
       $0.isStarting = true
@@ -463,5 +412,5 @@ private enum Action: Equatable {
   case didResumeBackup
   case didStopBackup
   case didRemoveBackup
-  case didFetchContacts(XXModels.Contact.Query)
+  case didGetMyContact(includingFacts: MessengerMyContact.IncludeFacts?)
 }