diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
index 03c8442cf0431924977536d9b3e84a6318087279..8e3f48dc36217c97ad7f782db7b892c65b0a4487 100644
--- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
+++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
@@ -1,4 +1,5 @@
 import AppCore
+import ContactFeature
 import Foundation
 import HomeFeature
 import RegisterFeature
@@ -55,7 +56,12 @@ extension AppEnvironment {
                 UserSearchResultEnvironment()
               },
               contact: {
-                ContactEnvironment()
+                ContactEnvironment(
+                  messenger: messenger,
+                  db: dbManager.getDB,
+                  mainQueue: mainQueue,
+                  bgQueue: bgQueue
+                )
               }
             )
           }
diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift
index 98344db8c7ac419eb96ca2abcab5f9af60ad8887..80fbcc81f5d01ff10dac71a6f2bc831f4d4f91dd 100644
--- a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift
+++ b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift
@@ -1,8 +1,25 @@
+import AppCore
 import ComposableArchitecture
+import Foundation
 import XCTestDynamicOverlay
+import XXClient
+import XXMessengerClient
+import XXModels
 
 public struct ContactState: Equatable {
-  public init() {}
+  public init(
+    id: Data,
+    dbContact: XXModels.Contact? = nil,
+    xxContact: XXClient.Contact? = nil
+  ) {
+    self.id = id
+    self.dbContact = dbContact
+    self.xxContact = xxContact
+  }
+
+  public var id: Data
+  public var dbContact: XXModels.Contact?
+  public var xxContact: XXClient.Contact?
 }
 
 public enum ContactAction: Equatable {
@@ -10,12 +27,32 @@ public enum ContactAction: Equatable {
 }
 
 public struct ContactEnvironment {
-  public init() {}
+  public init(
+    messenger: Messenger,
+    db: DBManagerGetDB,
+    mainQueue: AnySchedulerOf<DispatchQueue>,
+    bgQueue: AnySchedulerOf<DispatchQueue>
+  ) {
+    self.messenger = messenger
+    self.db = db
+    self.mainQueue = mainQueue
+    self.bgQueue = bgQueue
+  }
+
+  public var messenger: Messenger
+  public var db: DBManagerGetDB
+  public var mainQueue: AnySchedulerOf<DispatchQueue>
+  public var bgQueue: AnySchedulerOf<DispatchQueue>
 }
 
 #if DEBUG
 extension ContactEnvironment {
-  public static let unimplemented = ContactEnvironment()
+  public static let unimplemented = ContactEnvironment(
+    messenger: .unimplemented,
+    db: .unimplemented,
+    mainQueue: .unimplemented,
+    bgQueue: .unimplemented
+  )
 }
 #endif
 
diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift
index 2b403a21eb556fed4fa52729192b48cd91c30f3c..a050747e31f2a0ee861bd9e8e17cf93e2777c0bf 100644
--- a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift
+++ b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift
@@ -26,7 +26,9 @@ public struct ContactView: View {
 public struct ContactView_Previews: PreviewProvider {
   public static var previews: some View {
     ContactView(store: Store(
-      initialState: ContactState(),
+      initialState: ContactState(
+        id: "contact-id".data(using: .utf8)!
+      ),
       reducer: .empty,
       environment: ()
     ))
diff --git a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift
index 425832e26ee67b4a71bf3bd6086fd3269c26dbad..e8cb92c04697660c545f3f4fb1e1b4de40147296 100644
--- a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift
+++ b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift
@@ -120,7 +120,10 @@ public let userSearchReducer = Reducer<UserSearchState, UserSearchAction, UserSe
     return .none
 
   case .result(let id, action: .tapped):
-    state.contact = ContactState()
+    state.contact = ContactState(
+      id: id,
+      xxContact: state.results[id: id]?.xxContact
+    )
     return .none
 
   case .binding(_), .result(_, _), .contact(_):
diff --git a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift
index e22cd95b8f13461d3487452453a14b3dbe6bb070..4711a13269fa4b8576b8280f7a3b90e717fa25a5 100644
--- a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift
@@ -5,7 +5,9 @@ import XCTest
 final class ContactFeatureTests: XCTestCase {
   func testStart() {
     let store = TestStore(
-      initialState: ContactState(),
+      initialState: ContactState(
+        id: "contact-id".data(using: .utf8)!
+      ),
       reducer: contactReducer,
       environment: .unimplemented
     )
diff --git a/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift
index 285d359e7a8582ba52a10a8308f447f1f251b198..c457327c86722f020ffe2ffc55c251c3261fcc8a 100644
--- a/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift
@@ -104,14 +104,19 @@ final class UserSearchFeatureTests: XCTestCase {
     )
 
     store.send(.result(id: "contact-id".data(using: .utf8)!, action: .tapped)) {
-      $0.contact = ContactState()
+      $0.contact = ContactState(
+        id: "contact-id".data(using: .utf8)!,
+        xxContact: .unimplemented("contact-data".data(using: .utf8)!)
+      )
     }
   }
 
   func testDismissingContact() {
     let store = TestStore(
       initialState: UserSearchState(
-        contact: ContactState()
+        contact: ContactState(
+          id: "contact-id".data(using: .utf8)!
+        )
       ),
       reducer: userSearchReducer,
       environment: .unimplemented