From 11dea3d8bb98f05002f55ed010cf7877fe474c4b Mon Sep 17 00:00:00 2001
From: Bruno Muniz Azevedo Filho <bruno@elixxir.io>
Date: Sat, 12 Nov 2022 03:36:14 -0300
Subject: [PATCH] using di repository

---
 Package.swift                                 | 52 ++++++++-----------
 Sources/App/AppDelegate.swift                 | 14 ++---
 Sources/App/DependencyRegistrator.swift       |  4 +-
 Sources/App/PushRouter.swift                  |  8 +--
 .../Controllers/BackupConfigController.swift  |  2 +-
 .../Controllers/BackupController.swift        |  2 +-
 .../Controllers/BackupSetupController.swift   |  2 +-
 .../BackupFeature/Service/BackupService.swift |  2 +-
 .../ViewModels/BackupConfigViewModel.swift    |  2 +-
 .../ViewModels/BackupSFTPViewModel.swift      |  2 +-
 .../ViewModels/BackupSetupViewModel.swift     |  2 +-
 .../ViewModels/BackupViewModel.swift          |  2 +-
 .../Controllers/GroupChatController.swift     |  4 +-
 .../Controllers/SingleChatController.swift    |  4 +-
 .../ViewModels/GroupChatViewModel.swift       |  2 +-
 .../ViewModels/SingleChatViewModel.swift      |  2 +-
 .../Controller/ChatListController.swift       |  2 +-
 .../ChatListSearchTableController.swift       |  2 +-
 .../Controller/ChatListTableController.swift  |  2 +-
 .../ViewModel/ChatListViewModel.swift         |  2 +-
 .../Controllers/ContactController.swift       |  2 +-
 .../ViewModels/ContactViewModel.swift         |  2 +-
 .../Controllers/ContactListController.swift   |  2 +-
 .../Controllers/CreateGroupController.swift   |  2 +-
 .../ViewModels/ContactListViewModel.swift     |  2 +-
 .../ViewModels/CreateGroupViewModel.swift     |  2 +-
 Sources/Countries/CountryListController.swift |  2 +-
 Sources/Defaults/KeyObject.swift              |  2 +-
 Sources/DependencyInjection/Container.swift   | 27 ----------
 .../DependencyPropertyWrapper.swift           | 20 -------
 .../UnregisteredDependencyError.swift         | 11 ----
 Sources/LaunchFeature/LaunchController.swift  |  2 +-
 .../LaunchViewModel+Database.swift            |  8 +--
 .../LaunchViewModel+Messenger.swift           |  8 +--
 Sources/LaunchFeature/LaunchViewModel.swift   |  2 +-
 .../Controllers/MenuController.swift          |  2 +-
 .../ViewModels/MenuViewModel.swift            |  2 +-
 .../OnboardingCodeController.swift            |  2 +-
 .../OnboardingEmailController.swift           |  2 +-
 .../OnboardingPhoneController.swift           |  2 +-
 .../OnboardingStartController.swift           |  2 +-
 .../OnboardingUsernameController.swift        |  2 +-
 .../OnboardingWelcomeController.swift         |  2 +-
 .../ViewModels/OnboardingCodeViewModel.swift  |  2 +-
 .../ViewModels/OnboardingEmailViewModel.swift |  2 +-
 .../ViewModels/OnboardingPhoneViewModel.swift |  2 +-
 .../OnboardingUsernameViewModel.swift         |  2 +-
 .../RequestPermissionController.swift         |  2 +-
 .../Controllers/ProfileCodeController.swift   |  2 +-
 .../Controllers/ProfileController.swift       |  2 +-
 .../Controllers/ProfileEmailController.swift  |  2 +-
 .../Controllers/ProfilePhoneController.swift  |  2 +-
 .../ViewModels/ProfileCodeViewModel.swift     |  2 +-
 .../ViewModels/ProfileEmailViewModel.swift    |  2 +-
 .../ViewModels/ProfilePhoneViewModel.swift    |  2 +-
 .../ViewModels/ProfileViewModel.swift         |  2 +-
 Sources/PushFeature/PushExtractor.swift       |  2 +-
 Sources/PushFeature/PushHandler.swift         |  2 +-
 .../RequestsContainerController.swift         |  2 +-
 .../RequestsFailedController.swift            |  2 +-
 .../RequestsReceivedController.swift          |  2 +-
 .../Controllers/RequestsSentController.swift  |  2 +-
 .../ViewModels/RequestsFailedViewModel.swift  |  2 +-
 .../RequestsReceivedViewModel.swift           |  2 +-
 .../ViewModels/RequestsSentViewModel.swift    |  2 +-
 .../Controllers/RestoreController.swift       |  2 +-
 .../Controllers/RestoreListController.swift   |  2 +-
 .../Controllers/RestoreSFTPController.swift   |  2 +-
 .../RestoreSuccessController.swift            |  2 +-
 .../ViewModels/RestoreListViewModel.swift     |  2 +-
 .../ViewModels/RestoreSFTPViewModel.swift     |  2 +-
 .../ViewModels/RestoreViewModel.swift         |  2 +-
 .../Controllers/ScanContainerController.swift |  2 +-
 .../Controllers/ScanController.swift          |  2 +-
 .../ViewModels/ScanDisplayViewModel.swift     |  2 +-
 .../ViewModels/ScanViewModel.swift            |  2 +-
 .../SearchContainerController.swift           |  2 +-
 .../Controllers/SearchLeftController.swift    |  2 +-
 .../Controllers/SearchRightController.swift   |  2 +-
 .../ViewModels/SearchContainerViewModel.swift |  2 +-
 .../ViewModels/SearchLeftViewModel.swift      |  2 +-
 .../ViewModels/SearchRightViewModel.swift     |  2 +-
 .../Controllers/AccountDeleteController.swift |  2 +-
 .../SettingsAdvancedController.swift          |  2 +-
 .../Controllers/SettingsController.swift      |  2 +-
 .../ViewModels/AccountDeleteViewModel.swift   |  2 +-
 .../SettingsAdvancedViewModel.swift           |  2 +-
 .../ViewModels/SettingsViewModel.swift        |  2 +-
 .../Controllers/RootViewController.swift      |  2 +-
 .../TermsConditionsController.swift           |  2 +-
 Sources/XXNavigation/Chat/PresentChat.swift   |  2 +-
 .../XXNavigation/Chat/PresentChatList.swift   |  2 +-
 .../XXNavigation/Chat/PresentGroupChat.swift  |  2 +-
 .../XXNavigation/Chat/PresentNewGroup.swift   |  2 +-
 .../XXNavigation/Contact/PresentContact.swift |  2 +-
 .../Contact/PresentContactList.swift          |  2 +-
 .../Onboarding/PresentOnboardingCode.swift    |  2 +-
 .../Onboarding/PresentOnboardingEmail.swift   |  2 +-
 .../Onboarding/PresentOnboardingPhone.swift   |  2 +-
 .../Onboarding/PresentOnboardingStart.swift   |  2 +-
 .../PresentOnboardingUsername.swift           |  2 +-
 .../Onboarding/PresentOnboardingWelcome.swift |  2 +-
 .../PresentTermsAndConditions.swift           |  2 +-
 .../XXNavigation/PresentActivitySheet.swift   |  2 +-
 Sources/XXNavigation/PresentCountryList.swift |  2 +-
 Sources/XXNavigation/PresentDrawer.swift      |  2 +-
 Sources/XXNavigation/PresentMenu.swift        |  2 +-
 .../PresentPermissionRequest.swift            |  2 +-
 .../XXNavigation/PresentPhotoLibrary.swift    |  2 +-
 Sources/XXNavigation/PresentScan.swift        |  2 +-
 Sources/XXNavigation/PresentSearch.swift      |  2 +-
 .../XXNavigation/Profile/PresentProfile.swift |  2 +-
 .../Profile/PresentProfileCode.swift          |  2 +-
 .../Profile/PresentProfileEmail.swift         |  2 +-
 .../Profile/PresentProfilePhone.swift         |  2 +-
 .../RestoreAndBackup/PresentRequests.swift    |  2 +-
 .../RestoreAndBackup/PresentRestoreList.swift |  2 +-
 .../Settings/PresentSettings.swift            |  2 +-
 .../PresentSettingsAccountDelete.swift        |  2 +-
 .../Settings/PresentSettingsAdvanced.swift    |  2 +-
 .../Settings/PresentSettingsBackup.swift      |  2 +-
 Tests/DefaultsTests/KeyObjectTests.swift      |  2 +-
 .../ContainerTests.swift                      | 33 ------------
 .../DependencyPropertyWrapperTests.swift      | 20 -------
 Tests/ThemeTests/ThemeTests.swift             |  2 +-
 .../xcshareddata/swiftpm/Package.resolved     |  9 ++++
 126 files changed, 169 insertions(+), 277 deletions(-)
 delete mode 100644 Sources/DependencyInjection/Container.swift
 delete mode 100644 Sources/DependencyInjection/DependencyPropertyWrapper.swift
 delete mode 100644 Sources/DependencyInjection/UnregisteredDependencyError.swift
 delete mode 100644 Tests/DependencyInjectionTests/ContainerTests.swift
 delete mode 100644 Tests/DependencyInjectionTests/DependencyPropertyWrapperTests.swift

diff --git a/Package.swift b/Package.swift
index 5bf030c0..e9456bac 100644
--- a/Package.swift
+++ b/Package.swift
@@ -42,8 +42,7 @@ let package = Package(
     .library(name: "ChatInputFeature", targets: ["ChatInputFeature"]),
     .library(name: "OnboardingFeature", targets: ["OnboardingFeature"]),
     .library(name: "ContactListFeature", targets: ["ContactListFeature"]),
-    .library(name: "DependencyInjection", targets: ["DependencyInjection"]),
-    .library(name: "ReportingFeature", targets: ["ReportingFeature"]),
+    .library(name: "ReportingFeature", targets: ["ReportingFeature"])
   ],
   dependencies: [
     .package(
@@ -125,6 +124,10 @@ let package = Package(
       url: "https://github.com/pointfreeco/xctest-dynamic-overlay.git",
       .upToNextMajor(from: "0.3.3")
     ),
+    .package(
+      url: "https://git.xx.network/elixxir/xxm-di.git",
+      .upToNextMajor(from: "1.0.0")
+    )
   ],
   targets: [
     .target(
@@ -173,15 +176,6 @@ let package = Package(
     .target(
       name: "VersionChecking"
     ),
-    .target(
-      name: "DependencyInjection"
-    ),
-    .testTarget(
-      name: "DependencyInjectionTests",
-      dependencies: [
-        .target(name: "DependencyInjection"),
-      ]
-    ),
     .target(
       name: "InputField",
       dependencies: [
@@ -193,14 +187,14 @@ let package = Package(
       dependencies: [
         .target(name: "Shared"),
         .target(name: "XXNavigation"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
       ]
     ),
     .target(
       name: "XXNavigation",
       dependencies: [
         .target(name: "DrawerFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "Navigation", package: "Navigation"),
         .product(name: "XXModels", package: "client-ios-db"),
       ]
@@ -210,7 +204,7 @@ let package = Package(
       dependencies: [
         .target(name: "Defaults"),
         .target(name: "ReportingFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "XXDatabase", package: "client-ios-db"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
         .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"),
@@ -231,7 +225,7 @@ let package = Package(
     .target(
       name: "Defaults",
       dependencies: [
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
       ]
     ),
     .target(
@@ -246,7 +240,7 @@ let package = Package(
       dependencies: [
         .target(name: "Shared"),
         .target(name: "XXNavigation"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
       ]
     ),
     .target(
@@ -306,7 +300,7 @@ let package = Package(
         .target(name: "Shared"),
         .target(name: "Presentation"),
         .target(name: "XXNavigation"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "XXDatabase", package: "client-ios-db"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
         .product(name: "CloudFilesDrive", package: "xxm-cloud-providers"),
@@ -339,7 +333,7 @@ let package = Package(
         .target(name: "DrawerFeature"),
         .target(name: "ChatInputFeature"),
         .target(name: "ReportingFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "ChatLayout", package: "ChatLayout"),
         .product(name: "DifferenceKit", package: "DifferenceKit"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
@@ -356,7 +350,7 @@ let package = Package(
         .target(name: "Presentation"),
         .target(name: "ContactFeature"),
         .target(name: "NetworkMonitor"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "Retry", package: "Retry"),
         .product(name: "XXDatabase", package: "client-ios-db"),
       ]
@@ -371,7 +365,7 @@ let package = Package(
         .target(name: "BackupFeature"),
         .target(name: "VersionChecking"),
         .target(name: "ReportingFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
         .product(name: "CloudFilesSFTP", package: "xxm-cloud-providers"),
         .product(name: "CombineSchedulers", package: "combine-schedulers"),
@@ -394,7 +388,7 @@ let package = Package(
       dependencies: [
         .target(name: "Shared"),
         .target(name: "ContactFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "DifferenceKit", package: "DifferenceKit"),
       ]
     ),
@@ -411,7 +405,7 @@ let package = Package(
         .target(name: "Presentation"),
         .target(name: "DrawerFeature"),
         .target(name: "BackupFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "CombineSchedulers", package: "combine-schedulers"),
         .product(name: "ScrollViewController", package: "ScrollViewController"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
@@ -429,7 +423,7 @@ let package = Package(
         .target(name: "ProfileFeature"),
         .target(name: "SettingsFeature"),
         .target(name: "ContactListFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "DifferenceKit", package: "DifferenceKit"),
       ]
     ),
@@ -446,7 +440,7 @@ let package = Package(
         .target(name: "Presentation"),
         .target(name: "DrawerFeature"),
         .target(name: "VersionChecking"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "CombineSchedulers", package: "combine-schedulers"),
         .product(name: "ScrollViewController", package: "ScrollViewController"),
       ]
@@ -460,7 +454,7 @@ let package = Package(
         .target(name: "XXNavigation"),
         .target(name: "DrawerFeature"),
         .target(name: "ReportingFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
       ]
     ),
@@ -472,7 +466,7 @@ let package = Package(
         .target(name: "Presentation"),
         .target(name: "DrawerFeature"),
         .target(name: "NetworkMonitor"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
         .product(name: "CloudFilesSFTP", package: "xxm-cloud-providers"),
         .product(name: "CloudFilesDrive", package: "xxm-cloud-providers"),
@@ -490,7 +484,7 @@ let package = Package(
         .target(name: "Presentation"),
         .target(name: "ContactFeature"),
         .target(name: "NetworkMonitor"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "SnapKit", package: "SnapKit"),
       ]
     ),
@@ -500,7 +494,7 @@ let package = Package(
         .target(name: "Shared"),
         .target(name: "Presentation"),
         .target(name: "ContactFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "DifferenceKit", package: "DifferenceKit"),
       ]
     ),
@@ -517,7 +511,7 @@ let package = Package(
         .target(name: "MenuFeature"),
         .target(name: "Presentation"),
         .target(name: "DrawerFeature"),
-        .target(name: "DependencyInjection"),
+        .product(name: "DependencyInjection", package: "xxm-di"),
         .product(name: "CombineSchedulers", package: "combine-schedulers"),
         .product(name: "ScrollViewController", package: "ScrollViewController"),
       ]
diff --git a/Sources/App/AppDelegate.swift b/Sources/App/AppDelegate.swift
index ec35ad28..2b3b6e9a 100644
--- a/Sources/App/AppDelegate.swift
+++ b/Sources/App/AppDelegate.swift
@@ -6,7 +6,7 @@ import Defaults
 import PushFeature
 import LaunchFeature
 import CrashReporting
-import DependencyInjection
+import DI
 
 import XXModels
 import XXLogger
@@ -54,7 +54,7 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
 
     DependencyRegistrator.registerNavigators(navController)
 
-    DependencyInjection.Container.shared.register(
+    DI.Container.shared.register(
       PushRouter.live(navigationController: navController)
     )
     return true
@@ -65,8 +65,8 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
   }
 
   public func applicationDidEnterBackground(_ application: UIApplication) {
-    if let messenger = try? DependencyInjection.Container.shared.resolve() as Messenger,
-       let database = try? DependencyInjection.Container.shared.resolve() as Database,
+    if let messenger = try? DI.Container.shared.resolve() as Messenger,
+       let database = try? DI.Container.shared.resolve() as Database,
        let cMix = try? messenger.cMix.tryGet() {
       let backgroundTask = application.beginBackgroundTask(withName: "xx.stop.network") {}
 
@@ -111,7 +111,7 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
   }
 
   public func applicationWillTerminate(_ application: UIApplication) {
-    if let messenger = try? DependencyInjection.Container.shared.resolve() as Messenger {
+    if let messenger = try? DI.Container.shared.resolve() as Messenger {
       try? messenger.stop()
     }
   }
@@ -123,7 +123,7 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
       print(">>> Invalidated background timer")
     }
 
-    if let messenger = try? DependencyInjection.Container.shared.resolve() as Messenger,
+    if let messenger = try? DI.Container.shared.resolve() as Messenger,
        let cMix = messenger.cMix.get() {
       guard self.calledStopNetwork == true else { return }
       try? cMix.startNetworkFollower(timeoutMS: 10_000)
@@ -153,7 +153,7 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
     guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
           let incomingURL = userActivity.webpageURL,
           let username = getUsernameFromInvitationDeepLink(incomingURL),
-          let router = try? DependencyInjection.Container.shared.resolve() as PushRouter else {
+          let router = try? DI.Container.shared.resolve() as PushRouter else {
       return false
     }
 
diff --git a/Sources/App/DependencyRegistrator.swift b/Sources/App/DependencyRegistrator.swift
index dfa60146..787aa378 100644
--- a/Sources/App/DependencyRegistrator.swift
+++ b/Sources/App/DependencyRegistrator.swift
@@ -20,7 +20,7 @@ import CrashReporting
 import NetworkMonitor
 import VersionChecking
 import ReportingFeature
-import DependencyInjection
+import DI
 
 // MARK: UI Features
 
@@ -48,7 +48,7 @@ import KeychainAccess
 import XXMessengerClient
 
 struct DependencyRegistrator {
-  static private let container = DependencyInjection.Container.shared
+  static private let container = DI.Container.shared
 
   static func registerDependencies() {
     #if DEBUG
diff --git a/Sources/App/PushRouter.swift b/Sources/App/PushRouter.swift
index 65536c16..acebc7b3 100644
--- a/Sources/App/PushRouter.swift
+++ b/Sources/App/PushRouter.swift
@@ -5,7 +5,7 @@ import SearchFeature
 import LaunchFeature
 import ChatListFeature
 import RequestsFeature
-import DependencyInjection
+import DI
 import XXModels
 import XXMessengerClient
 
@@ -21,7 +21,7 @@ extension PushRouter {
                         navigationController.setViewControllers([RequestsContainerController()], animated: true)
                     }
                 case .search(username: let username):
-                    if let messenger = try? DependencyInjection.Container.shared.resolve() as Messenger,
+                    if let messenger = try? DI.Container.shared.resolve() as Messenger,
                        let _ = try? messenger.ud.get()?.getContact() {
                         if !(navigationController.viewControllers.last is SearchContainerController) {
                             navigationController.setViewControllers([
@@ -33,7 +33,7 @@ extension PushRouter {
                         }
                     }
                 case .contactChat(id: let id):
-                    if let database: Database = try? DependencyInjection.Container.shared.resolve(),
+                    if let database: Database = try? DI.Container.shared.resolve(),
                        let contact = try? database.fetchContacts(.init(id: [id])).first {
                         navigationController.setViewControllers([
                             ChatListController(),
@@ -41,7 +41,7 @@ extension PushRouter {
                         ], animated: true)
                     }
                 case .groupChat(id: let id):
-                    if let database: Database = try? DependencyInjection.Container.shared.resolve(),
+                    if let database: Database = try? DI.Container.shared.resolve(),
                        let info = try? database.fetchGroupInfos(.init(groupId: id)).first {
                         navigationController.setViewControllers([
                             ChatListController(),
diff --git a/Sources/BackupFeature/Controllers/BackupConfigController.swift b/Sources/BackupFeature/Controllers/BackupConfigController.swift
index 79cbd438..3a8cdb14 100644
--- a/Sources/BackupFeature/Controllers/BackupConfigController.swift
+++ b/Sources/BackupFeature/Controllers/BackupConfigController.swift
@@ -4,7 +4,7 @@ import Combine
 import CloudFiles
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 final class BackupConfigController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/BackupFeature/Controllers/BackupController.swift b/Sources/BackupFeature/Controllers/BackupController.swift
index a996d324..aa5b7e8d 100644
--- a/Sources/BackupFeature/Controllers/BackupController.swift
+++ b/Sources/BackupFeature/Controllers/BackupController.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Shared
 import Combine
-import DependencyInjection
+import DI
 
 public final class BackupController: UIViewController {
     private let viewModel = BackupViewModel.live()
diff --git a/Sources/BackupFeature/Controllers/BackupSetupController.swift b/Sources/BackupFeature/Controllers/BackupSetupController.swift
index a9600531..efb0cab4 100644
--- a/Sources/BackupFeature/Controllers/BackupSetupController.swift
+++ b/Sources/BackupFeature/Controllers/BackupSetupController.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Combine
-import DependencyInjection
+import DI
 
 final class BackupSetupController: UIViewController {
     private lazy var screenView = BackupSetupView()
diff --git a/Sources/BackupFeature/Service/BackupService.swift b/Sources/BackupFeature/Service/BackupService.swift
index 18e057f0..2d5e9989 100644
--- a/Sources/BackupFeature/Service/BackupService.swift
+++ b/Sources/BackupFeature/Service/BackupService.swift
@@ -7,7 +7,7 @@ import CloudFilesSFTP
 import NetworkMonitor
 import KeychainAccess
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 public final class BackupService {
   @Dependency var messenger: Messenger
diff --git a/Sources/BackupFeature/ViewModels/BackupConfigViewModel.swift b/Sources/BackupFeature/ViewModels/BackupConfigViewModel.swift
index edaf65b5..d8e916d4 100644
--- a/Sources/BackupFeature/ViewModels/BackupConfigViewModel.swift
+++ b/Sources/BackupFeature/ViewModels/BackupConfigViewModel.swift
@@ -5,7 +5,7 @@ import XXClient
 import Defaults
 import Foundation
 
-import DependencyInjection
+import DI
 
 import CloudFiles
 import XXNavigation
diff --git a/Sources/BackupFeature/ViewModels/BackupSFTPViewModel.swift b/Sources/BackupFeature/ViewModels/BackupSFTPViewModel.swift
index 14931edd..80cdb784 100644
--- a/Sources/BackupFeature/ViewModels/BackupSFTPViewModel.swift
+++ b/Sources/BackupFeature/ViewModels/BackupSFTPViewModel.swift
@@ -6,7 +6,7 @@ import Combine
 import Foundation
 import CloudFiles
 import CloudFilesSFTP
-import DependencyInjection
+import DI
 
 struct SFTPViewState {
   var host: String = ""
diff --git a/Sources/BackupFeature/ViewModels/BackupSetupViewModel.swift b/Sources/BackupFeature/ViewModels/BackupSetupViewModel.swift
index 0d44658b..35575aff 100644
--- a/Sources/BackupFeature/ViewModels/BackupSetupViewModel.swift
+++ b/Sources/BackupFeature/ViewModels/BackupSetupViewModel.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import CloudFiles
-import DependencyInjection
+import DI
 
 struct BackupSetupViewModel {
     var didTapService: (CloudService, UIViewController) -> Void
diff --git a/Sources/BackupFeature/ViewModels/BackupViewModel.swift b/Sources/BackupFeature/ViewModels/BackupViewModel.swift
index 23c4cc9d..17fca00a 100644
--- a/Sources/BackupFeature/ViewModels/BackupViewModel.swift
+++ b/Sources/BackupFeature/ViewModels/BackupViewModel.swift
@@ -1,5 +1,5 @@
 import Combine
-import DependencyInjection
+import DI
 
 enum BackupViewState: Equatable {
     case setup
diff --git a/Sources/ChatFeature/Controllers/GroupChatController.swift b/Sources/ChatFeature/Controllers/GroupChatController.swift
index 0634e2cc..c780effb 100644
--- a/Sources/ChatFeature/Controllers/GroupChatController.swift
+++ b/Sources/ChatFeature/Controllers/GroupChatController.swift
@@ -1,3 +1,4 @@
+import DI
 import UIKit
 import Shared
 import Combine
@@ -9,7 +10,6 @@ import DrawerFeature
 import DifferenceKit
 import ReportingFeature
 import ChatInputFeature
-import DependencyInjection
 
 typealias OutgoingGroupTextCell = CollectionCell<FlexibleSpace, StackMessageView>
 typealias IncomingGroupTextCell = CollectionCell<StackMessageView, FlexibleSpace>
@@ -50,7 +50,7 @@ public final class GroupChatController: UIViewController {
       initialState: .init(canAddAttachments: false),
       reducer: chatInputReducer,
       environment: .init(
-        voxophone: try! DependencyInjection.Container.shared.resolve() as Voxophone,
+        voxophone: try! DI.Container.shared.resolve() as Voxophone,
         sendAudio: { _ in },
         didTapCamera: {},
         didTapLibrary: {},
diff --git a/Sources/ChatFeature/Controllers/SingleChatController.swift b/Sources/ChatFeature/Controllers/SingleChatController.swift
index 5c3a7b27..c320ad1d 100644
--- a/Sources/ChatFeature/Controllers/SingleChatController.swift
+++ b/Sources/ChatFeature/Controllers/SingleChatController.swift
@@ -11,7 +11,7 @@ import DrawerFeature
 import DifferenceKit
 import ChatInputFeature
 import ReportingFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 extension FlexibleSpace: CollectionCellContent {
@@ -65,7 +65,7 @@ public final class SingleChatController: UIViewController {
       initialState: .init(canAddAttachments: true),
       reducer: chatInputReducer,
       environment: .init(
-        voxophone: try! DependencyInjection.Container.shared.resolve() as Voxophone,
+        voxophone: try! DI.Container.shared.resolve() as Voxophone,
         sendAudio: { viewModel.didSendAudio(url: $0) },
         didTapCamera: { viewModel.didTest(permission: .camera) },
         didTapLibrary: { viewModel.didTest(permission: .library) },
diff --git a/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift b/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift
index 324d01dc..aa2481e2 100644
--- a/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift
+++ b/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift
@@ -6,7 +6,7 @@ import Defaults
 import Foundation
 import DifferenceKit
 import ReportingFeature
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 import struct XXModels.Message
diff --git a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift
index 5aa7c08a..8dde807b 100644
--- a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift
+++ b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift
@@ -9,7 +9,7 @@ import Foundation
 import Permissions
 import DifferenceKit
 import ReportingFeature
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 import struct XXModels.Message
diff --git a/Sources/ChatListFeature/Controller/ChatListController.swift b/Sources/ChatListFeature/Controller/ChatListController.swift
index 35768fd4..071e61e2 100644
--- a/Sources/ChatListFeature/Controller/ChatListController.swift
+++ b/Sources/ChatListFeature/Controller/ChatListController.swift
@@ -4,7 +4,7 @@ import Combine
 import XXModels
 import MenuFeature
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class ChatListController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ChatListFeature/Controller/ChatListSearchTableController.swift b/Sources/ChatListFeature/Controller/ChatListSearchTableController.swift
index 3ea3a782..999049ff 100644
--- a/Sources/ChatListFeature/Controller/ChatListSearchTableController.swift
+++ b/Sources/ChatListFeature/Controller/ChatListSearchTableController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 class ChatSearchListTableViewDiffableDataSource: UITableViewDiffableDataSource<SearchSection, SearchItem> {
   override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
diff --git a/Sources/ChatListFeature/Controller/ChatListTableController.swift b/Sources/ChatListFeature/Controller/ChatListTableController.swift
index 744b95cc..74e58324 100644
--- a/Sources/ChatListFeature/Controller/ChatListTableController.swift
+++ b/Sources/ChatListFeature/Controller/ChatListTableController.swift
@@ -5,7 +5,7 @@ import XXModels
 import XXNavigation
 import DifferenceKit
 import DrawerFeature
-import DependencyInjection
+import DI
 
 extension ChatInfo: Differentiable {
   public var differenceIdentifier: ChatInfo.ID { id }
diff --git a/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift b/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift
index f9214da7..18384608 100644
--- a/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift
+++ b/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift
@@ -5,7 +5,7 @@ import XXModels
 import Defaults
 import XXMessengerClient
 import ReportingFeature
-import DependencyInjection
+import DI
 
 import struct XXModels.Group
 import XXClient
diff --git a/Sources/ContactFeature/Controllers/ContactController.swift b/Sources/ContactFeature/Controllers/ContactController.swift
index 11e82eaa..06147dd9 100644
--- a/Sources/ContactFeature/Controllers/ContactController.swift
+++ b/Sources/ContactFeature/Controllers/ContactController.swift
@@ -4,7 +4,7 @@ import Combine
 import XXModels
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class ContactController: UIViewController {
diff --git a/Sources/ContactFeature/ViewModels/ContactViewModel.swift b/Sources/ContactFeature/ViewModels/ContactViewModel.swift
index 43e861d7..14345700 100644
--- a/Sources/ContactFeature/ViewModels/ContactViewModel.swift
+++ b/Sources/ContactFeature/ViewModels/ContactViewModel.swift
@@ -6,7 +6,7 @@ import Defaults
 import XXClient
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 struct ContactViewState: Equatable {
   var title: String?
diff --git a/Sources/ContactListFeature/Controllers/ContactListController.swift b/Sources/ContactListFeature/Controllers/ContactListController.swift
index a21f9ae9..12fe939a 100644
--- a/Sources/ContactListFeature/Controllers/ContactListController.swift
+++ b/Sources/ContactListFeature/Controllers/ContactListController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class ContactListController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ContactListFeature/Controllers/CreateGroupController.swift b/Sources/ContactListFeature/Controllers/CreateGroupController.swift
index d772b630..2e848091 100644
--- a/Sources/ContactListFeature/Controllers/CreateGroupController.swift
+++ b/Sources/ContactListFeature/Controllers/CreateGroupController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXModels
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class CreateGroupController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ContactListFeature/ViewModels/ContactListViewModel.swift b/Sources/ContactListFeature/ViewModels/ContactListViewModel.swift
index 93de50cd..838a7b12 100644
--- a/Sources/ContactListFeature/ViewModels/ContactListViewModel.swift
+++ b/Sources/ContactListFeature/ViewModels/ContactListViewModel.swift
@@ -2,7 +2,7 @@ import Combine
 import XXModels
 import Defaults
 import ReportingFeature
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 import Foundation
diff --git a/Sources/ContactListFeature/ViewModels/CreateGroupViewModel.swift b/Sources/ContactListFeature/ViewModels/CreateGroupViewModel.swift
index d24fd2e9..74d9745b 100644
--- a/Sources/ContactListFeature/ViewModels/CreateGroupViewModel.swift
+++ b/Sources/ContactListFeature/ViewModels/CreateGroupViewModel.swift
@@ -7,7 +7,7 @@ import XXClient
 import ReportingFeature
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class CreateGroupViewModel {
   @KeyObject(.username, defaultValue: "") var username: String
diff --git a/Sources/Countries/CountryListController.swift b/Sources/Countries/CountryListController.swift
index 4a526743..c49f954b 100644
--- a/Sources/Countries/CountryListController.swift
+++ b/Sources/Countries/CountryListController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class CountryListController: UIViewController, UITableViewDelegate {
   @Dependency var navigator: Navigator
diff --git a/Sources/Defaults/KeyObject.swift b/Sources/Defaults/KeyObject.swift
index c864b9f9..fc350c60 100644
--- a/Sources/Defaults/KeyObject.swift
+++ b/Sources/Defaults/KeyObject.swift
@@ -1,5 +1,5 @@
 import Foundation
-import DependencyInjection
+import DI
 
 public enum Key: String {
     // MARK: Profile
diff --git a/Sources/DependencyInjection/Container.swift b/Sources/DependencyInjection/Container.swift
deleted file mode 100644
index cd7bf2fc..00000000
--- a/Sources/DependencyInjection/Container.swift
+++ /dev/null
@@ -1,27 +0,0 @@
-public final class Container {
-    public static let shared = Container()
-
-    public init() {}
-
-    public func register<T>(_ dependency: T) {
-        dependencies[key(for: T.self)] = dependency
-    }
-
-    public func unregister<T>(_ dependencyType: T.Type) {
-        dependencies.removeValue(forKey: String(describing: dependencyType))
-    }
-
-    public func resolve<T>() throws -> T {
-        let key = self.key(for: T.self)
-        guard let dependency = dependencies[key] as? T else {
-            throw UnregisteredDependencyError(type: key)
-        }
-        return dependency
-    }
-
-    var dependencies = [String: Any]()
-
-    func key<T>(for dependencyType: T.Type) -> String {
-        String(describing: dependencyType)
-    }
-}
diff --git a/Sources/DependencyInjection/DependencyPropertyWrapper.swift b/Sources/DependencyInjection/DependencyPropertyWrapper.swift
deleted file mode 100644
index ef7067ac..00000000
--- a/Sources/DependencyInjection/DependencyPropertyWrapper.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-@propertyWrapper
-public struct Dependency<T> {
-    public init(container: Container = .shared, file: StaticString = #file, line: UInt = #line) {
-        self.container = container
-        self.file = file
-        self.line = line
-    }
-
-    public var wrappedValue: T {
-        do {
-            return try container.resolve()
-        } catch {
-            fatalError(error.localizedDescription, file: file, line: line)
-        }
-    }
-
-    let container: Container
-    let file: StaticString
-    let line: UInt
-}
diff --git a/Sources/DependencyInjection/UnregisteredDependencyError.swift b/Sources/DependencyInjection/UnregisteredDependencyError.swift
deleted file mode 100644
index 8ad955e6..00000000
--- a/Sources/DependencyInjection/UnregisteredDependencyError.swift
+++ /dev/null
@@ -1,11 +0,0 @@
-import Foundation
-
-public struct UnregisteredDependencyError: Error, Equatable {
-    public var type: String
-}
-
-extension UnregisteredDependencyError: LocalizedError {
-    public var errorDescription: String? {
-        "Resolving unregistered dependency <\(type)>"
-    }
-}
diff --git a/Sources/LaunchFeature/LaunchController.swift b/Sources/LaunchFeature/LaunchController.swift
index 8207138c..092facf9 100644
--- a/Sources/LaunchFeature/LaunchController.swift
+++ b/Sources/LaunchFeature/LaunchController.swift
@@ -4,7 +4,7 @@ import Combine
 import PushFeature
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class LaunchController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/LaunchFeature/LaunchViewModel+Database.swift b/Sources/LaunchFeature/LaunchViewModel+Database.swift
index 15a88e81..e2c7558b 100644
--- a/Sources/LaunchFeature/LaunchViewModel+Database.swift
+++ b/Sources/LaunchFeature/LaunchViewModel+Database.swift
@@ -1,7 +1,7 @@
 import XXModels
 import Foundation
 import XXDatabase
-import DependencyInjection
+import DI
 import XXLegacyDatabaseMigrator
 
 extension LaunchViewModel {
@@ -40,7 +40,7 @@ extension LaunchViewModel {
       try FileManager.default.moveItem(atPath: legacyPath, toPath: legacyPath.appending("-backup"))
     }
 
-    DependencyInjection.Container.shared.register(database)
+    DI.Container.shared.register(database)
 
     _ = try? database.bulkUpdateContacts(.init(authStatus: [.requesting]), .init(authStatus: .requestFailed))
     _ = try? database.bulkUpdateContacts(.init(authStatus: [.confirming]), .init(authStatus: .confirmationFailed))
@@ -54,7 +54,7 @@ extension LaunchViewModel {
       isBanned: reportingStatus.isEnabled() ? false : nil
     )
 
-    guard let database: Database = try? DependencyInjection.Container.shared.resolve(),
+    guard let database: Database = try? DI.Container.shared.resolve(),
           let contact = try? database.fetchContacts(query).first else {
       return nil
     }
@@ -65,7 +65,7 @@ extension LaunchViewModel {
   func getGroupInfoWith(groupId: Data) -> GroupInfo? {
     let query = GroupInfo.Query(groupId: groupId)
 
-    guard let database: Database = try? DependencyInjection.Container.shared.resolve(),
+    guard let database: Database = try? DI.Container.shared.resolve(),
           let info = try? database.fetchGroupInfos(query).first else {
       return nil
     }
diff --git a/Sources/LaunchFeature/LaunchViewModel+Messenger.swift b/Sources/LaunchFeature/LaunchViewModel+Messenger.swift
index 0fa99f35..cd52d720 100644
--- a/Sources/LaunchFeature/LaunchViewModel+Messenger.swift
+++ b/Sources/LaunchFeature/LaunchViewModel+Messenger.swift
@@ -4,7 +4,7 @@ import XXModels
 import XXLogger
 import Foundation
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 extension LaunchViewModel {
   func setupBackupCallback() {
@@ -177,7 +177,7 @@ extension LaunchViewModel {
     ))
 
     do {
-      let messenger: Messenger = try DependencyInjection.Container.shared.resolve()
+      let messenger: Messenger = try DI.Container.shared.resolve()
       try messenger.waitForNetwork()
 
       if try messenger.verifyContact(contact) {
@@ -367,7 +367,7 @@ extension LaunchViewModel {
       })
     )
 
-    DependencyInjection.Container.shared.register(manager)
+    DI.Container.shared.register(manager)
   }
 
   func generateTransferManager() throws {
@@ -393,7 +393,7 @@ extension LaunchViewModel {
       cMixId: messenger.e2e()!.getId()
     )
 
-    DependencyInjection.Container.shared.register(manager)
+    DI.Container.shared.register(manager)
     try! manager.setStatus(dummyTrafficOn)
   }
 
diff --git a/Sources/LaunchFeature/LaunchViewModel.swift b/Sources/LaunchFeature/LaunchViewModel.swift
index 74d77143..2097750b 100644
--- a/Sources/LaunchFeature/LaunchViewModel.swift
+++ b/Sources/LaunchFeature/LaunchViewModel.swift
@@ -14,7 +14,7 @@ import ReportingFeature
 import CombineSchedulers
 import CloudFilesDropbox
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 import class XXClient.Cancellable
 
diff --git a/Sources/MenuFeature/Controllers/MenuController.swift b/Sources/MenuFeature/Controllers/MenuController.swift
index b14abe7b..12415b6a 100644
--- a/Sources/MenuFeature/Controllers/MenuController.swift
+++ b/Sources/MenuFeature/Controllers/MenuController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class MenuController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/MenuFeature/ViewModels/MenuViewModel.swift b/Sources/MenuFeature/ViewModels/MenuViewModel.swift
index 9d56f10a..322aae91 100644
--- a/Sources/MenuFeature/ViewModels/MenuViewModel.swift
+++ b/Sources/MenuFeature/ViewModels/MenuViewModel.swift
@@ -4,7 +4,7 @@ import XXClient
 import Defaults
 import Foundation
 import ReportingFeature
-import DependencyInjection
+import DI
 
 final class MenuViewModel {
     @Dependency var database: Database
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingCodeController.swift b/Sources/OnboardingFeature/Controllers/OnboardingCodeController.swift
index 4fd0f373..a2e1e353 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingCodeController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingCodeController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class OnboardingCodeController: UIViewController {
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingEmailController.swift b/Sources/OnboardingFeature/Controllers/OnboardingEmailController.swift
index 0c52a7a1..1804e216 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingEmailController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingEmailController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class OnboardingEmailController: UIViewController {
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingPhoneController.swift b/Sources/OnboardingFeature/Controllers/OnboardingPhoneController.swift
index 62c8d846..aa696246 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingPhoneController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingPhoneController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class OnboardingPhoneController: UIViewController {
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift b/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
index c6307fc9..f0251cd3 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class OnboardingStartController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingUsernameController.swift b/Sources/OnboardingFeature/Controllers/OnboardingUsernameController.swift
index ef80c659..0959b1d1 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingUsernameController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingUsernameController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class OnboardingUsernameController: UIViewController {
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingWelcomeController.swift b/Sources/OnboardingFeature/Controllers/OnboardingWelcomeController.swift
index 0aaa842a..72a1347a 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingWelcomeController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingWelcomeController.swift
@@ -4,7 +4,7 @@ import Combine
 import Defaults
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class OnboardingWelcomeController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/OnboardingFeature/ViewModels/OnboardingCodeViewModel.swift b/Sources/OnboardingFeature/ViewModels/OnboardingCodeViewModel.swift
index 98826365..35dc2c99 100644
--- a/Sources/OnboardingFeature/ViewModels/OnboardingCodeViewModel.swift
+++ b/Sources/OnboardingFeature/ViewModels/OnboardingCodeViewModel.swift
@@ -6,7 +6,7 @@ import InputField
 import Foundation
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class OnboardingCodeViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/OnboardingFeature/ViewModels/OnboardingEmailViewModel.swift b/Sources/OnboardingFeature/ViewModels/OnboardingEmailViewModel.swift
index 29c0f4b2..6d3295db 100644
--- a/Sources/OnboardingFeature/ViewModels/OnboardingEmailViewModel.swift
+++ b/Sources/OnboardingFeature/ViewModels/OnboardingEmailViewModel.swift
@@ -5,7 +5,7 @@ import InputField
 import Foundation
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class OnboardingEmailViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/OnboardingFeature/ViewModels/OnboardingPhoneViewModel.swift b/Sources/OnboardingFeature/ViewModels/OnboardingPhoneViewModel.swift
index 4f66f0bb..bc6550f0 100644
--- a/Sources/OnboardingFeature/ViewModels/OnboardingPhoneViewModel.swift
+++ b/Sources/OnboardingFeature/ViewModels/OnboardingPhoneViewModel.swift
@@ -6,7 +6,7 @@ import InputField
 import Foundation
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class OnboardingPhoneViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift b/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift
index 06a5f5fa..051e9783 100644
--- a/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift
+++ b/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift
@@ -7,7 +7,7 @@ import InputField
 import Foundation
 import XXMessengerClient
 import CombineSchedulers
-import DependencyInjection
+import DI
 
 final class OnboardingUsernameViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/Permissions/RequestPermissionController.swift b/Sources/Permissions/RequestPermissionController.swift
index cde2e784..0cdc65b0 100644
--- a/Sources/Permissions/RequestPermissionController.swift
+++ b/Sources/Permissions/RequestPermissionController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class RequestPermissionController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ProfileFeature/Controllers/ProfileCodeController.swift b/Sources/ProfileFeature/Controllers/ProfileCodeController.swift
index dedb64d4..d55d52f3 100644
--- a/Sources/ProfileFeature/Controllers/ProfileCodeController.swift
+++ b/Sources/ProfileFeature/Controllers/ProfileCodeController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class ProfileCodeController: UIViewController {
diff --git a/Sources/ProfileFeature/Controllers/ProfileController.swift b/Sources/ProfileFeature/Controllers/ProfileController.swift
index 49ac0ea4..ca2abe5a 100644
--- a/Sources/ProfileFeature/Controllers/ProfileController.swift
+++ b/Sources/ProfileFeature/Controllers/ProfileController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class ProfileController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ProfileFeature/Controllers/ProfileEmailController.swift b/Sources/ProfileFeature/Controllers/ProfileEmailController.swift
index 3bfa34e1..0a4599c0 100644
--- a/Sources/ProfileFeature/Controllers/ProfileEmailController.swift
+++ b/Sources/ProfileFeature/Controllers/ProfileEmailController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class ProfileEmailController: UIViewController {
diff --git a/Sources/ProfileFeature/Controllers/ProfilePhoneController.swift b/Sources/ProfileFeature/Controllers/ProfilePhoneController.swift
index 60e1aef4..061521d5 100644
--- a/Sources/ProfileFeature/Controllers/ProfilePhoneController.swift
+++ b/Sources/ProfileFeature/Controllers/ProfilePhoneController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class ProfilePhoneController: UIViewController {
diff --git a/Sources/ProfileFeature/ViewModels/ProfileCodeViewModel.swift b/Sources/ProfileFeature/ViewModels/ProfileCodeViewModel.swift
index 28027074..9a1638ec 100644
--- a/Sources/ProfileFeature/ViewModels/ProfileCodeViewModel.swift
+++ b/Sources/ProfileFeature/ViewModels/ProfileCodeViewModel.swift
@@ -6,7 +6,7 @@ import InputField
 import Foundation
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class ProfileCodeViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/ProfileFeature/ViewModels/ProfileEmailViewModel.swift b/Sources/ProfileFeature/ViewModels/ProfileEmailViewModel.swift
index d2fd3b5a..fd27e4f0 100644
--- a/Sources/ProfileFeature/ViewModels/ProfileEmailViewModel.swift
+++ b/Sources/ProfileFeature/ViewModels/ProfileEmailViewModel.swift
@@ -5,7 +5,7 @@ import Foundation
 import InputField
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class ProfileEmailViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/ProfileFeature/ViewModels/ProfilePhoneViewModel.swift b/Sources/ProfileFeature/ViewModels/ProfilePhoneViewModel.swift
index c341c598..a71cb16b 100644
--- a/Sources/ProfileFeature/ViewModels/ProfilePhoneViewModel.swift
+++ b/Sources/ProfileFeature/ViewModels/ProfilePhoneViewModel.swift
@@ -6,7 +6,7 @@ import InputField
 import Foundation
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class ProfilePhoneViewModel {
   struct ViewState: Equatable {
diff --git a/Sources/ProfileFeature/ViewModels/ProfileViewModel.swift b/Sources/ProfileFeature/ViewModels/ProfileViewModel.swift
index 72ef8593..1b0803ad 100644
--- a/Sources/ProfileFeature/ViewModels/ProfileViewModel.swift
+++ b/Sources/ProfileFeature/ViewModels/ProfileViewModel.swift
@@ -9,7 +9,7 @@ import Permissions
 import BackupFeature
 import XXMessengerClient
 import CombineSchedulers
-import DependencyInjection
+import DI
 
 enum ProfileNavigationRoutes {
   case none
diff --git a/Sources/PushFeature/PushExtractor.swift b/Sources/PushFeature/PushExtractor.swift
index dd00bcbe..d1dc67f5 100644
--- a/Sources/PushFeature/PushExtractor.swift
+++ b/Sources/PushFeature/PushExtractor.swift
@@ -2,7 +2,7 @@ import XXModels
 import Foundation
 import XXClient
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 public struct PushExtractor {
   enum Constants {
diff --git a/Sources/PushFeature/PushHandler.swift b/Sources/PushFeature/PushHandler.swift
index c22b66dd..1be9e28d 100644
--- a/Sources/PushFeature/PushHandler.swift
+++ b/Sources/PushFeature/PushHandler.swift
@@ -5,7 +5,7 @@ import XXModels
 import XXDatabase
 import XXMessengerClient
 import ReportingFeature
-import DependencyInjection
+import DI
 
 public final class PushHandler: PushHandling {
   private enum Constants {
diff --git a/Sources/RequestsFeature/Controllers/RequestsContainerController.swift b/Sources/RequestsFeature/Controllers/RequestsContainerController.swift
index 464890cd..03cf57c1 100644
--- a/Sources/RequestsFeature/Controllers/RequestsContainerController.swift
+++ b/Sources/RequestsFeature/Controllers/RequestsContainerController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import ContactFeature
-import DependencyInjection
+import DI
 
 public final class RequestsContainerController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/RequestsFeature/Controllers/RequestsFailedController.swift b/Sources/RequestsFeature/Controllers/RequestsFailedController.swift
index 94d4a382..7f3f63fa 100644
--- a/Sources/RequestsFeature/Controllers/RequestsFailedController.swift
+++ b/Sources/RequestsFeature/Controllers/RequestsFailedController.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Combine
-import DependencyInjection
+import DI
 
 final class RequestsFailedController: UIViewController {
     private lazy var screenView = RequestsFailedView()
diff --git a/Sources/RequestsFeature/Controllers/RequestsReceivedController.swift b/Sources/RequestsFeature/Controllers/RequestsReceivedController.swift
index 3ebd5792..1ab20d49 100644
--- a/Sources/RequestsFeature/Controllers/RequestsReceivedController.swift
+++ b/Sources/RequestsFeature/Controllers/RequestsReceivedController.swift
@@ -5,7 +5,7 @@ import XXModels
 import Countries
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 final class RequestsReceivedController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/RequestsFeature/Controllers/RequestsSentController.swift b/Sources/RequestsFeature/Controllers/RequestsSentController.swift
index ff9e0384..25a35aae 100644
--- a/Sources/RequestsFeature/Controllers/RequestsSentController.swift
+++ b/Sources/RequestsFeature/Controllers/RequestsSentController.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Combine
-import DependencyInjection
+import DI
 
 final class RequestsSentController: UIViewController {
     var connectionsPublisher: AnyPublisher<Void, Never> {
diff --git a/Sources/RequestsFeature/ViewModels/RequestsFailedViewModel.swift b/Sources/RequestsFeature/ViewModels/RequestsFailedViewModel.swift
index 1f54896a..5354509e 100644
--- a/Sources/RequestsFeature/ViewModels/RequestsFailedViewModel.swift
+++ b/Sources/RequestsFeature/ViewModels/RequestsFailedViewModel.swift
@@ -5,7 +5,7 @@ import XXModels
 import Defaults
 import XXClient
 import CombineSchedulers
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 final class RequestsFailedViewModel {
diff --git a/Sources/RequestsFeature/ViewModels/RequestsReceivedViewModel.swift b/Sources/RequestsFeature/ViewModels/RequestsReceivedViewModel.swift
index 64ec6595..46605034 100644
--- a/Sources/RequestsFeature/ViewModels/RequestsReceivedViewModel.swift
+++ b/Sources/RequestsFeature/ViewModels/RequestsReceivedViewModel.swift
@@ -7,7 +7,7 @@ import XXClient
 import DrawerFeature
 import ReportingFeature
 import CombineSchedulers
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 import struct XXModels.Group
diff --git a/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift b/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
index 718b673f..c527b0fb 100644
--- a/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
+++ b/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
@@ -7,7 +7,7 @@ import Defaults
 import XXClient
 import ReportingFeature
 import CombineSchedulers
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 struct RequestSent: Hashable, Equatable {
diff --git a/Sources/RestoreFeature/Controllers/RestoreController.swift b/Sources/RestoreFeature/Controllers/RestoreController.swift
index d1a57aa2..50d9f0e7 100644
--- a/Sources/RestoreFeature/Controllers/RestoreController.swift
+++ b/Sources/RestoreFeature/Controllers/RestoreController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class RestoreController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/RestoreFeature/Controllers/RestoreListController.swift b/Sources/RestoreFeature/Controllers/RestoreListController.swift
index 84ebee37..7cf56651 100644
--- a/Sources/RestoreFeature/Controllers/RestoreListController.swift
+++ b/Sources/RestoreFeature/Controllers/RestoreListController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class RestoreListController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/RestoreFeature/Controllers/RestoreSFTPController.swift b/Sources/RestoreFeature/Controllers/RestoreSFTPController.swift
index 3486ea10..ea56e1d6 100644
--- a/Sources/RestoreFeature/Controllers/RestoreSFTPController.swift
+++ b/Sources/RestoreFeature/Controllers/RestoreSFTPController.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Combine
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class RestoreSFTPController: UIViewController {
diff --git a/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift b/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
index 83c70aa5..f2c0aa2c 100644
--- a/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
+++ b/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class RestoreSuccessController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/RestoreFeature/ViewModels/RestoreListViewModel.swift b/Sources/RestoreFeature/ViewModels/RestoreListViewModel.swift
index 249ab05d..0e306794 100644
--- a/Sources/RestoreFeature/ViewModels/RestoreListViewModel.swift
+++ b/Sources/RestoreFeature/ViewModels/RestoreListViewModel.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import CloudFiles
 import CloudFilesSFTP
-import DependencyInjection
+import DI
 
 public struct RestorationDetails {
   var provider: CloudService
diff --git a/Sources/RestoreFeature/ViewModels/RestoreSFTPViewModel.swift b/Sources/RestoreFeature/ViewModels/RestoreSFTPViewModel.swift
index d7ffd3e5..7b5eeaa3 100644
--- a/Sources/RestoreFeature/ViewModels/RestoreSFTPViewModel.swift
+++ b/Sources/RestoreFeature/ViewModels/RestoreSFTPViewModel.swift
@@ -4,7 +4,7 @@ import Combine
 import Foundation
 import CloudFiles
 import CloudFilesSFTP
-import DependencyInjection
+import DI
 
 struct SFTPViewState {
   var host: String = ""
diff --git a/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift b/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift
index c3d2cbe2..8555ff7d 100644
--- a/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift
+++ b/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import Defaults
 import CloudFiles
-import DependencyInjection
+import DI
 
 import XXClient
 import XXModels
diff --git a/Sources/ScanFeature/Controllers/ScanContainerController.swift b/Sources/ScanFeature/Controllers/ScanContainerController.swift
index ab6dc5f9..b669014e 100644
--- a/Sources/ScanFeature/Controllers/ScanContainerController.swift
+++ b/Sources/ScanFeature/Controllers/ScanContainerController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class ScanContainerController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ScanFeature/Controllers/ScanController.swift b/Sources/ScanFeature/Controllers/ScanController.swift
index 8482be4d..af705b25 100644
--- a/Sources/ScanFeature/Controllers/ScanController.swift
+++ b/Sources/ScanFeature/Controllers/ScanController.swift
@@ -4,7 +4,7 @@ import Combine
 import Permissions
 import XXNavigation
 import CombineSchedulers
-import DependencyInjection
+import DI
 
 final class ScanController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/ScanFeature/ViewModels/ScanDisplayViewModel.swift b/Sources/ScanFeature/ViewModels/ScanDisplayViewModel.swift
index d67716bc..17b985d8 100644
--- a/Sources/ScanFeature/ViewModels/ScanDisplayViewModel.swift
+++ b/Sources/ScanFeature/ViewModels/ScanDisplayViewModel.swift
@@ -4,7 +4,7 @@ import Combine
 import Defaults
 import Countries
 import XXClient
-import DependencyInjection
+import DI
 import XXMessengerClient
 
 struct ScanDisplayViewState: Equatable {
diff --git a/Sources/ScanFeature/ViewModels/ScanViewModel.swift b/Sources/ScanFeature/ViewModels/ScanViewModel.swift
index c46965ca..1e4a79a9 100644
--- a/Sources/ScanFeature/ViewModels/ScanViewModel.swift
+++ b/Sources/ScanFeature/ViewModels/ScanViewModel.swift
@@ -4,7 +4,7 @@ import XXModels
 import XXClient
 import Foundation
 import ReportingFeature
-import DependencyInjection
+import DI
 
 enum ScanStatus: Equatable {
     case reading
diff --git a/Sources/SearchFeature/Controllers/SearchContainerController.swift b/Sources/SearchFeature/Controllers/SearchContainerController.swift
index 6e81b0df..db43b620 100644
--- a/Sources/SearchFeature/Controllers/SearchContainerController.swift
+++ b/Sources/SearchFeature/Controllers/SearchContainerController.swift
@@ -4,7 +4,7 @@ import Combine
 import XXModels
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public final class SearchContainerController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/SearchFeature/Controllers/SearchLeftController.swift b/Sources/SearchFeature/Controllers/SearchLeftController.swift
index 3db6a1dc..106c328f 100644
--- a/Sources/SearchFeature/Controllers/SearchLeftController.swift
+++ b/Sources/SearchFeature/Controllers/SearchLeftController.swift
@@ -6,7 +6,7 @@ import Defaults
 import Countries
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 final class SearchLeftController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/SearchFeature/Controllers/SearchRightController.swift b/Sources/SearchFeature/Controllers/SearchRightController.swift
index cbd97898..fb7283c5 100644
--- a/Sources/SearchFeature/Controllers/SearchRightController.swift
+++ b/Sources/SearchFeature/Controllers/SearchRightController.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 final class SearchRightController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/SearchFeature/ViewModels/SearchContainerViewModel.swift b/Sources/SearchFeature/ViewModels/SearchContainerViewModel.swift
index 011442d5..7e5767a3 100644
--- a/Sources/SearchFeature/ViewModels/SearchContainerViewModel.swift
+++ b/Sources/SearchFeature/ViewModels/SearchContainerViewModel.swift
@@ -3,7 +3,7 @@ import Combine
 import Defaults
 import XXClient
 import PushFeature
-import DependencyInjection
+import DI
 
 final class SearchContainerViewModel {
     @Dependency var pushHandler: PushHandling
diff --git a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
index 93fe554a..3ade6d3f 100644
--- a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
+++ b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
@@ -11,7 +11,7 @@ import NetworkMonitor
 import ReportingFeature
 import CombineSchedulers
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 typealias SearchSnapshot = NSDiffableDataSourceSnapshot<SearchSection, SearchItem>
 
diff --git a/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift b/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
index d4361d50..46d54a46 100644
--- a/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
+++ b/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
@@ -7,7 +7,7 @@ import Foundation
 import Permissions
 import ReportingFeature
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 enum ScanningStatus: Equatable {
     case reading
diff --git a/Sources/SettingsFeature/Controllers/AccountDeleteController.swift b/Sources/SettingsFeature/Controllers/AccountDeleteController.swift
index e46450c2..b695ec08 100644
--- a/Sources/SettingsFeature/Controllers/AccountDeleteController.swift
+++ b/Sources/SettingsFeature/Controllers/AccountDeleteController.swift
@@ -5,7 +5,7 @@ import Defaults
 import XXNavigation
 import DrawerFeature
 import ScrollViewController
-import DependencyInjection
+import DI
 
 public final class AccountDeleteController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift b/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift
index a0e33f9b..5399ca6a 100644
--- a/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift
+++ b/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift
@@ -2,7 +2,7 @@ import UIKit
 import Shared
 import Combine
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class SettingsAdvancedController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/SettingsFeature/Controllers/SettingsController.swift b/Sources/SettingsFeature/Controllers/SettingsController.swift
index 08dce114..6dd584cf 100644
--- a/Sources/SettingsFeature/Controllers/SettingsController.swift
+++ b/Sources/SettingsFeature/Controllers/SettingsController.swift
@@ -3,7 +3,7 @@ import Shared
 import Combine
 import XXNavigation
 import DrawerFeature
-import DependencyInjection
+import DI
 import ScrollViewController
 
 public final class SettingsController: UIViewController {
diff --git a/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift b/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift
index 55f48f6c..08d8d574 100644
--- a/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift
+++ b/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift
@@ -7,7 +7,7 @@ import XXModels
 import XXClient
 import Foundation
 import XXMessengerClient
-import DependencyInjection
+import DI
 
 final class AccountDeleteViewModel {
   @Dependency var database: Database
diff --git a/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift b/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift
index 42814774..09985d18 100644
--- a/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift
+++ b/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift
@@ -4,7 +4,7 @@ import Defaults
 import Foundation
 import CrashReporting
 import ReportingFeature
-import DependencyInjection
+import DI
 
 struct AdvancedViewState: Equatable {
   var isRecordingLogs = false
diff --git a/Sources/SettingsFeature/ViewModels/SettingsViewModel.swift b/Sources/SettingsFeature/ViewModels/SettingsViewModel.swift
index 63d3713b..48b97ddc 100644
--- a/Sources/SettingsFeature/ViewModels/SettingsViewModel.swift
+++ b/Sources/SettingsFeature/ViewModels/SettingsViewModel.swift
@@ -8,7 +8,7 @@ import XXClient
 import XXMessengerClient
 import UserNotifications
 import CombineSchedulers
-import DependencyInjection
+import DI
 
 struct SettingsViewState: Equatable {
   var isHideActiveApps: Bool = false
diff --git a/Sources/Shared/Controllers/RootViewController.swift b/Sources/Shared/Controllers/RootViewController.swift
index ee367e2e..a0ca01e5 100644
--- a/Sources/Shared/Controllers/RootViewController.swift
+++ b/Sources/Shared/Controllers/RootViewController.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Combine
-import DependencyInjection
+import DI
 
 public final class RootViewController: UIViewController {
   @Dependency var barStylist: StatusBarStylist
diff --git a/Sources/TermsFeature/TermsConditionsController.swift b/Sources/TermsFeature/TermsConditionsController.swift
index 8d722933..95c43432 100644
--- a/Sources/TermsFeature/TermsConditionsController.swift
+++ b/Sources/TermsFeature/TermsConditionsController.swift
@@ -4,7 +4,7 @@ import Shared
 import Combine
 import Defaults
 import XXNavigation
-import DependencyInjection
+import DI
 
 public final class TermsConditionsController: UIViewController {
   @Dependency var navigator: Navigator
diff --git a/Sources/XXNavigation/Chat/PresentChat.swift b/Sources/XXNavigation/Chat/PresentChat.swift
index 52593d96..06fa031d 100644
--- a/Sources/XXNavigation/Chat/PresentChat.swift
+++ b/Sources/XXNavigation/Chat/PresentChat.swift
@@ -1,7 +1,7 @@
 import UIKit
 import XXModels
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentChat: Navigation.Action {
   public var contact: Contact
diff --git a/Sources/XXNavigation/Chat/PresentChatList.swift b/Sources/XXNavigation/Chat/PresentChatList.swift
index 8fc96301..14059d98 100644
--- a/Sources/XXNavigation/Chat/PresentChatList.swift
+++ b/Sources/XXNavigation/Chat/PresentChatList.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentChatList: Navigation.Action {
   public var animated: Bool = true
diff --git a/Sources/XXNavigation/Chat/PresentGroupChat.swift b/Sources/XXNavigation/Chat/PresentGroupChat.swift
index 7770475e..a4e74db1 100644
--- a/Sources/XXNavigation/Chat/PresentGroupChat.swift
+++ b/Sources/XXNavigation/Chat/PresentGroupChat.swift
@@ -1,7 +1,7 @@
 import UIKit
 import XXModels
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentGroupChat: Navigation.Action {
   public var model: GroupInfo
diff --git a/Sources/XXNavigation/Chat/PresentNewGroup.swift b/Sources/XXNavigation/Chat/PresentNewGroup.swift
index e04adf50..d827f553 100644
--- a/Sources/XXNavigation/Chat/PresentNewGroup.swift
+++ b/Sources/XXNavigation/Chat/PresentNewGroup.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentNewGroup: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Contact/PresentContact.swift b/Sources/XXNavigation/Contact/PresentContact.swift
index 4addb00c..b662609b 100644
--- a/Sources/XXNavigation/Contact/PresentContact.swift
+++ b/Sources/XXNavigation/Contact/PresentContact.swift
@@ -1,7 +1,7 @@
 import UIKit
 import XXModels
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentContact: Navigation.Action {
   public var contact: Contact
diff --git a/Sources/XXNavigation/Contact/PresentContactList.swift b/Sources/XXNavigation/Contact/PresentContactList.swift
index f6f328f4..4758d801 100644
--- a/Sources/XXNavigation/Contact/PresentContactList.swift
+++ b/Sources/XXNavigation/Contact/PresentContactList.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentContactList: Navigation.Action {
   public var animated: Bool = true
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingCode.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingCode.swift
index be83f0d1..1853c774 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingCode.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingCode.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingCode: Navigation.Action {
   public var isEmail: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingEmail.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingEmail.swift
index 4d8905ad..c1786594 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingEmail.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingEmail.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingEmail: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingPhone.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingPhone.swift
index e890add3..95c6e958 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingPhone.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingPhone.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingPhone: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingStart.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingStart.swift
index c7dfbc31..943b31d7 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingStart.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingStart.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingStart: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingUsername.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingUsername.swift
index 48fa7be5..91817a3f 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingUsername.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingUsername.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingUsername: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentOnboardingWelcome.swift b/Sources/XXNavigation/Onboarding/PresentOnboardingWelcome.swift
index 7a55f0e6..64a0fdd7 100644
--- a/Sources/XXNavigation/Onboarding/PresentOnboardingWelcome.swift
+++ b/Sources/XXNavigation/Onboarding/PresentOnboardingWelcome.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentOnboardingWelcome: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Onboarding/PresentTermsAndConditions.swift b/Sources/XXNavigation/Onboarding/PresentTermsAndConditions.swift
index a71b7f79..0ec1ae5c 100644
--- a/Sources/XXNavigation/Onboarding/PresentTermsAndConditions.swift
+++ b/Sources/XXNavigation/Onboarding/PresentTermsAndConditions.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentTermsAndConditions: Navigation.Action {
   public var popAllowed: Bool
diff --git a/Sources/XXNavigation/PresentActivitySheet.swift b/Sources/XXNavigation/PresentActivitySheet.swift
index c13c1faa..ae08e595 100644
--- a/Sources/XXNavigation/PresentActivitySheet.swift
+++ b/Sources/XXNavigation/PresentActivitySheet.swift
@@ -1,7 +1,7 @@
 import UIKit
 import XXModels
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentActivitySheet: Navigation.Action {
   public var items: [Any]
diff --git a/Sources/XXNavigation/PresentCountryList.swift b/Sources/XXNavigation/PresentCountryList.swift
index 2a8504ea..bd162148 100644
--- a/Sources/XXNavigation/PresentCountryList.swift
+++ b/Sources/XXNavigation/PresentCountryList.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Shared
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentCountryList: Navigation.Action {
   public var completion: ((Country) -> Void)
diff --git a/Sources/XXNavigation/PresentDrawer.swift b/Sources/XXNavigation/PresentDrawer.swift
index fe5812eb..9d659610 100644
--- a/Sources/XXNavigation/PresentDrawer.swift
+++ b/Sources/XXNavigation/PresentDrawer.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Navigation
 import DrawerFeature
-import DependencyInjection
+import DI
 
 public struct PresentDrawer: Navigation.Action {
   public var items: [DrawerItem]
diff --git a/Sources/XXNavigation/PresentMenu.swift b/Sources/XXNavigation/PresentMenu.swift
index 12976625..ab9a82ec 100644
--- a/Sources/XXNavigation/PresentMenu.swift
+++ b/Sources/XXNavigation/PresentMenu.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Shared
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentMenu: Navigation.Action {
   public var currentItem: MenuItem
diff --git a/Sources/XXNavigation/PresentPermissionRequest.swift b/Sources/XXNavigation/PresentPermissionRequest.swift
index f8d5e5e1..d126d596 100644
--- a/Sources/XXNavigation/PresentPermissionRequest.swift
+++ b/Sources/XXNavigation/PresentPermissionRequest.swift
@@ -1,7 +1,7 @@
 import UIKit
 import Shared
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentPermissionRequest: Navigation.Action {
   public var type: PermissionType
diff --git a/Sources/XXNavigation/PresentPhotoLibrary.swift b/Sources/XXNavigation/PresentPhotoLibrary.swift
index d0170d0a..8174fe21 100644
--- a/Sources/XXNavigation/PresentPhotoLibrary.swift
+++ b/Sources/XXNavigation/PresentPhotoLibrary.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentPhotoLibrary: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/PresentScan.swift b/Sources/XXNavigation/PresentScan.swift
index def9482e..87cec305 100644
--- a/Sources/XXNavigation/PresentScan.swift
+++ b/Sources/XXNavigation/PresentScan.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentScan: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/PresentSearch.swift b/Sources/XXNavigation/PresentSearch.swift
index d62a767b..6f5d2aba 100644
--- a/Sources/XXNavigation/PresentSearch.swift
+++ b/Sources/XXNavigation/PresentSearch.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentSearch: Navigation.Action {
   public var searching: String?
diff --git a/Sources/XXNavigation/Profile/PresentProfile.swift b/Sources/XXNavigation/Profile/PresentProfile.swift
index 4eb70e97..6dfdd650 100644
--- a/Sources/XXNavigation/Profile/PresentProfile.swift
+++ b/Sources/XXNavigation/Profile/PresentProfile.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentProfile: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Profile/PresentProfileCode.swift b/Sources/XXNavigation/Profile/PresentProfileCode.swift
index 887c88b0..3c6a9134 100644
--- a/Sources/XXNavigation/Profile/PresentProfileCode.swift
+++ b/Sources/XXNavigation/Profile/PresentProfileCode.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentProfileCode: Navigation.Action {
   public var isEmail: Bool
diff --git a/Sources/XXNavigation/Profile/PresentProfileEmail.swift b/Sources/XXNavigation/Profile/PresentProfileEmail.swift
index 0a150af8..c4844038 100644
--- a/Sources/XXNavigation/Profile/PresentProfileEmail.swift
+++ b/Sources/XXNavigation/Profile/PresentProfileEmail.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentProfileEmail: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Profile/PresentProfilePhone.swift b/Sources/XXNavigation/Profile/PresentProfilePhone.swift
index 37966c9d..37235bb9 100644
--- a/Sources/XXNavigation/Profile/PresentProfilePhone.swift
+++ b/Sources/XXNavigation/Profile/PresentProfilePhone.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentProfilePhone: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/RestoreAndBackup/PresentRequests.swift b/Sources/XXNavigation/RestoreAndBackup/PresentRequests.swift
index 812da622..a72fbe33 100644
--- a/Sources/XXNavigation/RestoreAndBackup/PresentRequests.swift
+++ b/Sources/XXNavigation/RestoreAndBackup/PresentRequests.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentRequests: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/RestoreAndBackup/PresentRestoreList.swift b/Sources/XXNavigation/RestoreAndBackup/PresentRestoreList.swift
index 23b40ab0..e1121be7 100644
--- a/Sources/XXNavigation/RestoreAndBackup/PresentRestoreList.swift
+++ b/Sources/XXNavigation/RestoreAndBackup/PresentRestoreList.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentRestoreList: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Settings/PresentSettings.swift b/Sources/XXNavigation/Settings/PresentSettings.swift
index 932a1868..387bc789 100644
--- a/Sources/XXNavigation/Settings/PresentSettings.swift
+++ b/Sources/XXNavigation/Settings/PresentSettings.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentSettings: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Settings/PresentSettingsAccountDelete.swift b/Sources/XXNavigation/Settings/PresentSettingsAccountDelete.swift
index 74119fe2..76b73f1e 100644
--- a/Sources/XXNavigation/Settings/PresentSettingsAccountDelete.swift
+++ b/Sources/XXNavigation/Settings/PresentSettingsAccountDelete.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentSettingsAccountDelete: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Settings/PresentSettingsAdvanced.swift b/Sources/XXNavigation/Settings/PresentSettingsAdvanced.swift
index fd258eba..0c008515 100644
--- a/Sources/XXNavigation/Settings/PresentSettingsAdvanced.swift
+++ b/Sources/XXNavigation/Settings/PresentSettingsAdvanced.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentSettingsAdvanced: Navigation.Action {
   public var animated: Bool
diff --git a/Sources/XXNavigation/Settings/PresentSettingsBackup.swift b/Sources/XXNavigation/Settings/PresentSettingsBackup.swift
index 62a6e243..85856658 100644
--- a/Sources/XXNavigation/Settings/PresentSettingsBackup.swift
+++ b/Sources/XXNavigation/Settings/PresentSettingsBackup.swift
@@ -1,6 +1,6 @@
 import UIKit
 import Navigation
-import DependencyInjection
+import DI
 
 public struct PresentSettingsBackup: Navigation.Action {
   public var animated: Bool
diff --git a/Tests/DefaultsTests/KeyObjectTests.swift b/Tests/DefaultsTests/KeyObjectTests.swift
index ffa4794f..1b3bf380 100644
--- a/Tests/DefaultsTests/KeyObjectTests.swift
+++ b/Tests/DefaultsTests/KeyObjectTests.swift
@@ -1,5 +1,5 @@
 import XCTest
-import DependencyInjection
+import DI
 
 @testable import Defaults
 
diff --git a/Tests/DependencyInjectionTests/ContainerTests.swift b/Tests/DependencyInjectionTests/ContainerTests.swift
deleted file mode 100644
index b9de7d2e..00000000
--- a/Tests/DependencyInjectionTests/ContainerTests.swift
+++ /dev/null
@@ -1,33 +0,0 @@
-import XCTest
-
-@testable import DependencyInjection
-
-final class ContainerTests: XCTestCase {
-    func testRegisterAndResolveDependency() {
-        let container = Container()
-        let dependency = TestDependency()
-        container.register(dependency as TestDependencyProtocol)
-        let resolvedDependency: TestDependencyProtocol = try! container.resolve()
-        
-        XCTAssert(resolvedDependency === dependency)
-    }
-    
-    func testResolveUnregisterredDependency() {
-        let container = Container()
-        do {
-            let _: TestDependencyProtocol = try container.resolve()
-            XCTFail("expected to throw an error")
-        } catch {
-            XCTAssertEqual(
-                error as? UnregisteredDependencyError,
-                UnregisteredDependencyError(
-                    type: String(describing: TestDependencyProtocol.self)
-                )
-            )
-        }
-    }
-}
-
-private protocol TestDependencyProtocol: AnyObject {}
-
-private class TestDependency: TestDependencyProtocol {}
diff --git a/Tests/DependencyInjectionTests/DependencyPropertyWrapperTests.swift b/Tests/DependencyInjectionTests/DependencyPropertyWrapperTests.swift
deleted file mode 100644
index 97bf45ef..00000000
--- a/Tests/DependencyInjectionTests/DependencyPropertyWrapperTests.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-import XCTest
-@testable import DependencyInjection
-
-final class DependencyPropertyWrapperTests: XCTestCase {
-    func testPropertyGetter() {
-        struct Context {
-            static let container = Container()
-            @Dependency(container: container) var property: TestDependencyProtocol
-        }
-        
-        let dependency = TestDependency()
-        Context.container.register(dependency as TestDependencyProtocol)
-        
-        XCTAssert(Context().property === dependency)
-    }
-}
-
-private protocol TestDependencyProtocol: AnyObject {}
-
-private class TestDependency: TestDependencyProtocol {}
diff --git a/Tests/ThemeTests/ThemeTests.swift b/Tests/ThemeTests/ThemeTests.swift
index 44f88ab5..3cdf37a0 100644
--- a/Tests/ThemeTests/ThemeTests.swift
+++ b/Tests/ThemeTests/ThemeTests.swift
@@ -2,7 +2,7 @@ import Quick
 import Nimble
 import Defaults
 import Foundation
-import DependencyInjection
+import DI
 
 @testable import Theme
 
diff --git a/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved
index 6006a39d..b17678ed 100644
--- a/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved
+++ b/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -386,6 +386,15 @@
         "revision" : "16e6409ee82e1b81390bdffbf217b9c08ab32784",
         "version" : "0.5.0"
       }
+    },
+    {
+      "identity" : "xxm-di",
+      "kind" : "remoteSourceControl",
+      "location" : "https://git.xx.network/elixxir/xxm-di.git",
+      "state" : {
+        "revision" : "43b1e12c32109f1753fcc62e5b0b21e479ee27e3",
+        "version" : "1.0.0"
+      }
     }
   ],
   "version" : 2
-- 
GitLab