diff --git a/Docs/XXMessengerClient.md b/Docs/XXMessengerClient.md
index fd9ac7eef329ea33485bea1b18029150665f021a..2dc192467d54a9bac7a862cf4a19ffbad9fb4f0d 100644
--- a/Docs/XXMessengerClient.md
+++ b/Docs/XXMessengerClient.md
@@ -8,7 +8,7 @@ Example:
 
 ```swift
 // setup environment:
-var environment: Environment = .live()
+var environment: MessengerEnvironment = .live()
 
 // change cMix NDF environment if needed:
 environment.ndfEnvironment = ...
@@ -60,4 +60,4 @@ func start(messenger: Messenger) throws {
     }
   }
 }
-```
+```
\ No newline at end of file
diff --git a/Sources/XXMessengerClient/Functors/IsConnected.swift b/Sources/XXMessengerClient/Functors/IsConnected.swift
deleted file mode 100644
index 923d29df78c1228724a67261fa82d85d36a68688..0000000000000000000000000000000000000000
--- a/Sources/XXMessengerClient/Functors/IsConnected.swift
+++ /dev/null
@@ -1,25 +0,0 @@
-import XXClient
-import XCTestDynamicOverlay
-
-public struct IsConnected {
-  public var run: () -> Bool
-
-  public func callAsFunction() -> Bool {
-    run()
-  }
-}
-
-extension IsConnected {
-  public static func live(_ env: Environment) -> IsConnected {
-    IsConnected {
-      env.e2e() != nil
-    }
-  }
-}
-
-extension IsConnected {
-  public static let unimplemented = IsConnected(
-    run: XCTUnimplemented()
-  )
-}
-
diff --git a/Sources/XXMessengerClient/Functors/IsCreated.swift b/Sources/XXMessengerClient/Functors/IsCreated.swift
deleted file mode 100644
index c9f55cffa30a5160f1f01b4d6931a934aeabd741..0000000000000000000000000000000000000000
--- a/Sources/XXMessengerClient/Functors/IsCreated.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-import XXClient
-import XCTestDynamicOverlay
-
-public struct IsCreated {
-  public var run: () -> Bool
-
-  public func callAsFunction() -> Bool {
-    run()
-  }
-}
-
-extension IsCreated {
-  public static func live(_ env: Environment) -> IsCreated {
-    IsCreated {
-      env.directoryManager.isEmpty(env.storageDir) == false
-    }
-  }
-}
-
-extension IsCreated {
-  public static let unimplemented = IsCreated(
-    run: XCTUnimplemented()
-  )
-}
diff --git a/Sources/XXMessengerClient/Functors/IsLoaded.swift b/Sources/XXMessengerClient/Functors/IsLoaded.swift
deleted file mode 100644
index e3365cc35b2dd7f07ec721da24c447cf2e5975a1..0000000000000000000000000000000000000000
--- a/Sources/XXMessengerClient/Functors/IsLoaded.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-import XXClient
-import XCTestDynamicOverlay
-
-public struct IsLoaded {
-  public var run: () -> Bool
-
-  public func callAsFunction() -> Bool {
-    run()
-  }
-}
-
-extension IsLoaded {
-  public static func live(_ env: Environment) -> IsLoaded {
-    IsLoaded {
-      env.cMix() != nil
-    }
-  }
-}
-
-extension IsLoaded {
-  public static let unimplemented = IsLoaded(
-    run: XCTUnimplemented()
-  )
-}
diff --git a/Sources/XXMessengerClient/Functors/IsLoggedIn.swift b/Sources/XXMessengerClient/Functors/IsLoggedIn.swift
deleted file mode 100644
index bcf0dfdf3e5626e394f96808732ea4a82dfda6e9..0000000000000000000000000000000000000000
--- a/Sources/XXMessengerClient/Functors/IsLoggedIn.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-import XXClient
-import XCTestDynamicOverlay
-
-public struct IsLoggedIn {
-  public var run: () -> Bool
-
-  public func callAsFunction() -> Bool {
-    run()
-  }
-}
-
-extension IsLoggedIn {
-  public static func live(_ env: Environment) -> IsLoggedIn {
-    IsLoggedIn {
-      env.ud() != nil
-    }
-  }
-}
-
-extension IsLoggedIn {
-  public static let unimplemented = IsLoggedIn(
-    run: XCTUnimplemented()
-  )
-}
diff --git a/Sources/XXMessengerClient/Functors/Connect.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerConnect.swift
similarity index 67%
rename from Sources/XXMessengerClient/Functors/Connect.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerConnect.swift
index 47d649fe9e5f877e6c2d0c8e259c2cf545bda6de..8cebb73a648773e63137a86a4481142fe2f5b173 100644
--- a/Sources/XXMessengerClient/Functors/Connect.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerConnect.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Connect {
+public struct MessengerConnect {
   public enum Error: Swift.Error, Equatable {
     case notLoaded
   }
@@ -13,9 +13,9 @@ public struct Connect {
   }
 }
 
-extension Connect {
-  public static func live(_ env: Environment) -> Connect {
-    Connect {
+extension MessengerConnect {
+  public static func live(_ env: MessengerEnvironment) -> MessengerConnect {
+    MessengerConnect {
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -28,8 +28,8 @@ extension Connect {
   }
 }
 
-extension Connect {
-  public static let unimplemented = Connect(
+extension MessengerConnect {
+  public static let unimplemented = MessengerConnect(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/Create.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
similarity index 61%
rename from Sources/XXMessengerClient/Functors/Create.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
index 275722c72371002d7c793dbb204edd394b20bca7..b36b55b447956d139f227887a154bec71d109312 100644
--- a/Sources/XXMessengerClient/Functors/Create.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Create {
+public struct MessengerCreate {
   public var run: () throws -> Void
 
   public func callAsFunction() throws {
@@ -9,15 +9,15 @@ public struct Create {
   }
 }
 
-extension Create {
-  public static func live(_ env: Environment) -> Create {
-    Create {
+extension MessengerCreate {
+  public static func live(_ env: MessengerEnvironment) -> MessengerCreate {
+    MessengerCreate {
       let ndfData = try env.downloadNDF(env.ndfEnvironment)
       let password = env.generateSecret()
       try env.passwordStorage.save(password)
       let storageDir = env.storageDir
-      try env.directoryManager.remove(storageDir)
-      try env.directoryManager.create(storageDir)
+      try env.fileManager.removeDirectory(storageDir)
+      try env.fileManager.createDirectory(storageDir)
       try env.newCMix(
         ndfJSON: String(data: ndfData, encoding: .utf8)!,
         storageDir: storageDir,
@@ -28,8 +28,8 @@ extension Create {
   }
 }
 
-extension Create {
-  public static let unimplemented = Create(
+extension MessengerCreate {
+  public static let unimplemented = MessengerCreate(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsConnected.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsConnected.swift
new file mode 100644
index 0000000000000000000000000000000000000000..c30437faeb6b4cbc8b0a66df811bc55bd5618e28
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsConnected.swift
@@ -0,0 +1,25 @@
+import XXClient
+import XCTestDynamicOverlay
+
+public struct MessengerIsConnected {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension MessengerIsConnected {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsConnected {
+    MessengerIsConnected {
+      env.e2e() != nil
+    }
+  }
+}
+
+extension MessengerIsConnected {
+  public static let unimplemented = MessengerIsConnected(
+    run: XCTUnimplemented()
+  )
+}
+
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift
new file mode 100644
index 0000000000000000000000000000000000000000..c848518c2483e49acbdbfe3d6d0b9e0c7fc2ce32
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift
@@ -0,0 +1,24 @@
+import XXClient
+import XCTestDynamicOverlay
+
+public struct MessengerIsCreated {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension MessengerIsCreated {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsCreated {
+    MessengerIsCreated {
+      env.fileManager.isDirectoryEmpty(env.storageDir) == false
+    }
+  }
+}
+
+extension MessengerIsCreated {
+  public static let unimplemented = MessengerIsCreated(
+    run: XCTUnimplemented()
+  )
+}
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoaded.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoaded.swift
new file mode 100644
index 0000000000000000000000000000000000000000..dc0b42165efe5b39071674a5019a7e11860d53f5
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoaded.swift
@@ -0,0 +1,24 @@
+import XXClient
+import XCTestDynamicOverlay
+
+public struct MessengerIsLoaded {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension MessengerIsLoaded {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsLoaded {
+    MessengerIsLoaded {
+      env.cMix() != nil
+    }
+  }
+}
+
+extension MessengerIsLoaded {
+  public static let unimplemented = MessengerIsLoaded(
+    run: XCTUnimplemented()
+  )
+}
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoggedIn.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoggedIn.swift
new file mode 100644
index 0000000000000000000000000000000000000000..7c54c5785fc472c4815f3a91f626575881cf2dcd
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsLoggedIn.swift
@@ -0,0 +1,24 @@
+import XXClient
+import XCTestDynamicOverlay
+
+public struct MessengerIsLoggedIn {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension MessengerIsLoggedIn {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsLoggedIn {
+    MessengerIsLoggedIn {
+      env.ud() != nil
+    }
+  }
+}
+
+extension MessengerIsLoggedIn {
+  public static let unimplemented = MessengerIsLoggedIn(
+    run: XCTUnimplemented()
+  )
+}
diff --git a/Sources/XXMessengerClient/Functors/IsRegistered.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsRegistered.swift
similarity index 59%
rename from Sources/XXMessengerClient/Functors/IsRegistered.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerIsRegistered.swift
index 4ccc2ce7db4cf7386845235dc5ab7928f3d0857d..bf3cafa541fa67847f749325419c683e9edd34c6 100644
--- a/Sources/XXMessengerClient/Functors/IsRegistered.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsRegistered.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct IsRegistered {
+public struct MessengerIsRegistered {
   public enum Error: Swift.Error, Equatable {
     case notConnected
   }
@@ -13,9 +13,9 @@ public struct IsRegistered {
   }
 }
 
-extension IsRegistered {
-  public static func live(_ env: Environment) -> IsRegistered {
-    IsRegistered {
+extension MessengerIsRegistered {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsRegistered {
+    MessengerIsRegistered {
       guard let e2e = env.e2e() else {
         throw Error.notConnected
       }
@@ -24,8 +24,8 @@ extension IsRegistered {
   }
 }
 
-extension IsRegistered {
-  public static let unimplemented = IsRegistered(
+extension MessengerIsRegistered {
+  public static let unimplemented = MessengerIsRegistered(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/Load.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
similarity index 61%
rename from Sources/XXMessengerClient/Functors/Load.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
index 03010a22603644d4e15c8b2f666d668f87ff0452..29f281688d0cb6e4611cbf50a5ee2f7844df07f1 100644
--- a/Sources/XXMessengerClient/Functors/Load.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Load {
+public struct MessengerLoad {
   public var run: () throws -> Void
 
   public func callAsFunction() throws {
@@ -9,9 +9,9 @@ public struct Load {
   }
 }
 
-extension Load {
-  public static func live(_ env: Environment) -> Load {
-    Load {
+extension MessengerLoad {
+  public static func live(_ env: MessengerEnvironment) -> MessengerLoad {
+    MessengerLoad {
       env.cMix.set(try env.loadCMix(
         storageDir: env.storageDir,
         password: try env.passwordStorage.load(),
@@ -21,8 +21,8 @@ extension Load {
   }
 }
 
-extension Load {
-  public static let unimplemented = Load(
+extension MessengerLoad {
+  public static let unimplemented = MessengerLoad(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/LogIn.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
similarity index 79%
rename from Sources/XXMessengerClient/Functors/LogIn.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
index db2c34f95dd97ecd696db4de017473d539e34007..d0f86d8bcfa8ea7f7c0251d573a5dc591b59ddc0 100644
--- a/Sources/XXMessengerClient/Functors/LogIn.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct LogIn {
+public struct MessengerLogIn {
   public enum Error: Swift.Error, Equatable {
     case notLoaded
     case notConnected
@@ -14,9 +14,9 @@ public struct LogIn {
   }
 }
 
-extension LogIn {
-  public static func live(_ env: Environment) -> LogIn {
-    LogIn {
+extension MessengerLogIn {
+  public static func live(_ env: MessengerEnvironment) -> MessengerLogIn {
+    MessengerLogIn {
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -40,8 +40,8 @@ extension LogIn {
   }
 }
 
-extension LogIn {
-  public static let unimplemented = LogIn(
+extension MessengerLogIn {
+  public static let unimplemented = MessengerLogIn(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/Register.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
similarity index 78%
rename from Sources/XXMessengerClient/Functors/Register.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
index 3608ea93829609d6ff1a4a301925de9100317811..6f4296318c4eccf771ccb505cb584db458b74f8b 100644
--- a/Sources/XXMessengerClient/Functors/Register.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Register {
+public struct MessengerRegister {
   public enum Error: Swift.Error, Equatable {
     case notLoaded
     case notConnected
@@ -16,9 +16,9 @@ public struct Register {
   }
 }
 
-extension Register {
-  public static func live(_ env: Environment) -> Register {
-    Register { username in
+extension MessengerRegister {
+  public static func live(_ env: MessengerEnvironment) -> MessengerRegister {
+    MessengerRegister { username in
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -42,8 +42,8 @@ extension Register {
   }
 }
 
-extension Register {
-  public static let unimplemented = Register(
+extension MessengerRegister {
+  public static let unimplemented = MessengerRegister(
     run: XCTUnimplemented()
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/Start.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerStart.swift
similarity index 68%
rename from Sources/XXMessengerClient/Functors/Start.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerStart.swift
index 77e32812e6fdf4d162054b80e1b419be502a6306..cc3363ec543ee2c3ed6c2414ac79d1ceaa0ccc33 100644
--- a/Sources/XXMessengerClient/Functors/Start.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerStart.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Start {
+public struct MessengerStart {
   public enum Error: Swift.Error {
     case notLoaded
   }
@@ -15,9 +15,9 @@ public struct Start {
   }
 }
 
-extension Start {
-  public static func live(_ env: Environment) -> Start {
-    Start { timeoutMS in
+extension MessengerStart {
+  public static func live(_ env: MessengerEnvironment) -> MessengerStart {
+    MessengerStart { timeoutMS in
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -29,8 +29,8 @@ extension Start {
   }
 }
 
-extension Start {
-  public static let unimplemented = Start(
+extension MessengerStart {
+  public static let unimplemented = MessengerStart(
     run: XCTUnimplemented("\(Self.self)")
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/WaitForNetwork.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNetwork.swift
similarity index 62%
rename from Sources/XXMessengerClient/Functors/WaitForNetwork.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNetwork.swift
index 976e64233741c6aac98e0031cc47c7898a1eb572..8fe8cf3e4750f1d3bff8a7191574a143639466c7 100644
--- a/Sources/XXMessengerClient/Functors/WaitForNetwork.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNetwork.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct WaitForNetwork {
+public struct MessengerWaitForNetwork {
   public enum Error: Swift.Error {
     case notLoaded
     case timeout
@@ -16,9 +16,9 @@ public struct WaitForNetwork {
   }
 }
 
-extension WaitForNetwork {
-  public static func live(_ env: Environment) -> WaitForNetwork {
-    WaitForNetwork { timeoutMS in
+extension MessengerWaitForNetwork {
+  public static func live(_ env: MessengerEnvironment) -> MessengerWaitForNetwork {
+    MessengerWaitForNetwork { timeoutMS in
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -29,8 +29,8 @@ extension WaitForNetwork {
   }
 }
 
-extension WaitForNetwork {
-  public static let unimplemented = WaitForNetwork(
+extension MessengerWaitForNetwork {
+  public static let unimplemented = MessengerWaitForNetwork(
     run: XCTUnimplemented("\(Self.self)")
   )
 }
diff --git a/Sources/XXMessengerClient/Functors/WaitForNodes.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
similarity index 75%
rename from Sources/XXMessengerClient/Functors/WaitForNodes.swift
rename to Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
index f08a29661db38acff406d8b3cba921deddfa9941..b87acc2f13caf51d2998d3a864a6484f897dc528 100644
--- a/Sources/XXMessengerClient/Functors/WaitForNodes.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
@@ -1,7 +1,7 @@
 import XXClient
 import XCTestDynamicOverlay
 
-public struct WaitForNodes {
+public struct MessengerWaitForNodes {
   public typealias Progress = (NodeRegistrationReport) -> Void
 
   public enum Error: Swift.Error {
@@ -21,9 +21,9 @@ public struct WaitForNodes {
   }
 }
 
-extension WaitForNodes {
-  public static func live(_ env: Environment) -> WaitForNodes {
-    WaitForNodes { targetRatio, sleepMS, retries, onProgress in
+extension MessengerWaitForNodes {
+  public static func live(_ env: MessengerEnvironment) -> MessengerWaitForNodes {
+    MessengerWaitForNodes { targetRatio, sleepMS, retries, onProgress in
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
@@ -46,8 +46,8 @@ extension WaitForNodes {
   }
 }
 
-extension WaitForNodes {
-  public static let unimplemented = WaitForNodes(
+extension MessengerWaitForNodes {
+  public static let unimplemented = MessengerWaitForNodes(
     run: XCTUnimplemented("\(Self.self)")
   )
 }
diff --git a/Sources/XXMessengerClient/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift
similarity index 65%
rename from Sources/XXMessengerClient/Messenger.swift
rename to Sources/XXMessengerClient/Messenger/Messenger.swift
index b3ad9a58c9a1296b492333dfd78a7874b604af97..30d63efdfac2716a0d3efc7f0a614eafeaf2e852 100644
--- a/Sources/XXMessengerClient/Messenger.swift
+++ b/Sources/XXMessengerClient/Messenger/Messenger.swift
@@ -4,23 +4,23 @@ public struct Messenger {
   public var cMix: Stored<CMix?>
   public var e2e: Stored<E2E?>
   public var ud: Stored<UserDiscovery?>
-  public var isCreated: IsCreated
-  public var create: Create
-  public var isLoaded: IsLoaded
-  public var load: Load
-  public var start: Start
-  public var isConnected: IsConnected
-  public var connect: Connect
-  public var isRegistered: IsRegistered
-  public var register: Register
-  public var isLoggedIn: IsLoggedIn
-  public var logIn: LogIn
-  public var waitForNetwork: WaitForNetwork
-  public var waitForNodes: WaitForNodes
+  public var isCreated: MessengerIsCreated
+  public var create: MessengerCreate
+  public var isLoaded: MessengerIsLoaded
+  public var load: MessengerLoad
+  public var start: MessengerStart
+  public var isConnected: MessengerIsConnected
+  public var connect: MessengerConnect
+  public var isRegistered: MessengerIsRegistered
+  public var register: MessengerRegister
+  public var isLoggedIn: MessengerIsLoggedIn
+  public var logIn: MessengerLogIn
+  public var waitForNetwork: MessengerWaitForNetwork
+  public var waitForNodes: MessengerWaitForNodes
 }
 
 extension Messenger {
-  public static func live(_ env: Environment) -> Messenger {
+  public static func live(_ env: MessengerEnvironment) -> Messenger {
     Messenger(
       cMix: env.cMix,
       e2e: env.e2e,
diff --git a/Sources/XXMessengerClient/Environment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
similarity index 83%
rename from Sources/XXMessengerClient/Environment.swift
rename to Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
index 58b18db91b05832f6855883083e091c339a36f9e..0918142a1f92dd6bbc5392bb562113464f349b20 100644
--- a/Sources/XXMessengerClient/Environment.swift
+++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
@@ -2,11 +2,11 @@ import Foundation
 import XXClient
 import XCTestDynamicOverlay
 
-public struct Environment {
+public struct MessengerEnvironment {
   public var cMix: Stored<CMix?>
-  public var directoryManager: DirectoryManager
   public var downloadNDF: DownloadAndVerifySignedNdf
   public var e2e: Stored<E2E?>
+  public var fileManager: MessengerFileManager
   public var generateSecret: GenerateSecret
   public var getCMixParams: GetCMixParams
   public var getE2EParams: GetE2EParams
@@ -25,19 +25,19 @@ public struct Environment {
   public var udContact: Data?
 }
 
-extension Environment {
+extension MessengerEnvironment {
   public static let defaultStorageDir = FileManager.default
     .urls(for: .applicationSupportDirectory, in: .userDomainMask)
     .first!
     .appendingPathComponent("xx.network.client")
     .path
 
-  public static func live() -> Environment {
-    Environment(
+  public static func live() -> MessengerEnvironment {
+    MessengerEnvironment(
       cMix: .inMemory(),
-      directoryManager: .live(),
       downloadNDF: .live,
       e2e: .inMemory(),
+      fileManager: .live(),
       generateSecret: .live,
       getCMixParams: .liveDefault,
       getE2EParams: .liveDefault,
@@ -49,7 +49,7 @@ extension Environment {
       newOrLoadUd: .live,
       passwordStorage: .keychain,
       sleep: { Foundation.sleep(UInt32($0)) },
-      storageDir: Environment.defaultStorageDir,
+      storageDir: MessengerEnvironment.defaultStorageDir,
       ud: .inMemory(),
       udAddress: nil,
       udCert: nil,
@@ -58,12 +58,12 @@ extension Environment {
   }
 }
 
-extension Environment {
-  public static let unimplemented = Environment(
+extension MessengerEnvironment {
+  public static let unimplemented = MessengerEnvironment(
     cMix: .unimplemented(),
-    directoryManager: .unimplemented,
     downloadNDF: .unimplemented,
     e2e: .unimplemented(),
+    fileManager: .unimplemented,
     generateSecret: .unimplemented,
     getCMixParams: .unimplemented,
     getE2EParams: .unimplemented,
diff --git a/Sources/XXMessengerClient/Utils/DirectoryManager.swift b/Sources/XXMessengerClient/Utils/DirectoryManager.swift
deleted file mode 100644
index 16b9238effdeca0eabc1f235f852b42553f4c3e7..0000000000000000000000000000000000000000
--- a/Sources/XXMessengerClient/Utils/DirectoryManager.swift
+++ /dev/null
@@ -1,40 +0,0 @@
-import Foundation
-import XCTestDynamicOverlay
-
-public struct DirectoryManager {
-  public var isEmpty: (String) -> Bool
-  public var remove: (String) throws -> Void
-  public var create: (String) throws -> Void
-}
-
-extension DirectoryManager {
-  public static func live(
-    fileManager: FileManager = .default
-  ) -> DirectoryManager {
-    DirectoryManager(
-      isEmpty: { path in
-        let contents = try? fileManager.contentsOfDirectory(atPath: path)
-        return contents?.isEmpty ?? true
-      },
-      remove: { path in
-        if fileManager.fileExists(atPath: path) {
-          try fileManager.removeItem(atPath: path)
-        }
-      },
-      create: { path in
-        try fileManager.createDirectory(
-          atPath: path,
-          withIntermediateDirectories: true
-        )
-      }
-    )
-  }
-}
-
-extension DirectoryManager {
-  public static let unimplemented = DirectoryManager(
-    isEmpty: XCTUnimplemented("\(Self.self).isDirectoryEmpty"),
-    remove: XCTUnimplemented("\(Self.self).removeDirectory"),
-    create: XCTUnimplemented("\(Self.self).createDirectory")
-  )
-}
diff --git a/Sources/XXMessengerClient/Utils/MessengerFileManager.swift b/Sources/XXMessengerClient/Utils/MessengerFileManager.swift
new file mode 100644
index 0000000000000000000000000000000000000000..4ff49c5fe155e612852860d1d7276124729017d3
--- /dev/null
+++ b/Sources/XXMessengerClient/Utils/MessengerFileManager.swift
@@ -0,0 +1,40 @@
+import Foundation
+import XCTestDynamicOverlay
+
+public struct MessengerFileManager {
+  public var isDirectoryEmpty: (String) -> Bool
+  public var removeDirectory: (String) throws -> Void
+  public var createDirectory: (String) throws -> Void
+}
+
+extension MessengerFileManager {
+  public static func live(
+    fileManager: FileManager = .default
+  ) -> MessengerFileManager {
+    MessengerFileManager(
+      isDirectoryEmpty: { path in
+        let contents = try? fileManager.contentsOfDirectory(atPath: path)
+        return contents?.isEmpty ?? true
+      },
+      removeDirectory: { path in
+        if fileManager.fileExists(atPath: path) {
+          try fileManager.removeItem(atPath: path)
+        }
+      },
+      createDirectory: { path in
+        try fileManager.createDirectory(
+          atPath: path,
+          withIntermediateDirectories: true
+        )
+      }
+    )
+  }
+}
+
+extension MessengerFileManager {
+  public static let unimplemented = MessengerFileManager(
+    isDirectoryEmpty: XCTUnimplemented("\(Self.self).isDirectoryEmpty"),
+    removeDirectory: XCTUnimplemented("\(Self.self).removeDirectory"),
+    createDirectory: XCTUnimplemented("\(Self.self).createDirectory")
+  )
+}
diff --git a/Tests/XXMessengerClientTests/Functors/IsConnectedTests.swift b/Tests/XXMessengerClientTests/Functors/IsConnectedTests.swift
deleted file mode 100644
index 05972e05d07917c6e7fa8ba40c6b0416c5a002f8..0000000000000000000000000000000000000000
--- a/Tests/XXMessengerClientTests/Functors/IsConnectedTests.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-import XCTest
-@testable import XXMessengerClient
-
-final class IsConnectedTests: XCTestCase {
-  func testWithE2E() {
-    var env: Environment = .unimplemented
-    env.e2e.get = { .unimplemented }
-    let isConnected: IsConnected = .live(env)
-
-    XCTAssertTrue(isConnected())
-  }
-
-  func testWithoutE2E() {
-    var env: Environment = .unimplemented
-    env.e2e.get = { nil }
-    let isConnected: IsConnected = .live(env)
-
-    XCTAssertFalse(isConnected())
-  }
-}
diff --git a/Tests/XXMessengerClientTests/Functors/IsLoadedTests.swift b/Tests/XXMessengerClientTests/Functors/IsLoadedTests.swift
deleted file mode 100644
index 37adffbe44546cc4b2fbd5baa2560ae337a10ea2..0000000000000000000000000000000000000000
--- a/Tests/XXMessengerClientTests/Functors/IsLoadedTests.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-import XCTest
-@testable import XXMessengerClient
-
-final class IsLoadedTests: XCTestCase {
-  func testWithCMix() {
-    var env: Environment = .unimplemented
-    env.cMix.get = { .unimplemented }
-    let isLoaded: IsLoaded = .live(env)
-
-    XCTAssertTrue(isLoaded())
-  }
-
-  func testWithoutCMix() {
-    var env: Environment = .unimplemented
-    env.cMix.get = { nil }
-    let isLoaded: IsLoaded = .live(env)
-
-    XCTAssertFalse(isLoaded())
-  }
-}
diff --git a/Tests/XXMessengerClientTests/Functors/IsLoggedInTests.swift b/Tests/XXMessengerClientTests/Functors/IsLoggedInTests.swift
deleted file mode 100644
index 31f6032528ec592da23f65009dc581b2290cecde..0000000000000000000000000000000000000000
--- a/Tests/XXMessengerClientTests/Functors/IsLoggedInTests.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-import XCTest
-@testable import XXMessengerClient
-
-final class IsLoggedInTests: XCTestCase {
-  func testWithUD() {
-    var env: Environment = .unimplemented
-    env.ud.get = { .unimplemented }
-    let isLoggedIn: IsLoggedIn = .live(env)
-
-    XCTAssertTrue(isLoggedIn())
-  }
-
-  func testWithoutUD() {
-    var env: Environment = .unimplemented
-    env.ud.get = { nil }
-    let isLoggedIn: IsLoggedIn = .live(env)
-
-    XCTAssertFalse(isLoggedIn())
-  }
-}
diff --git a/Tests/XXMessengerClientTests/Functors/ConnectTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerConnectTests.swift
similarity index 83%
rename from Tests/XXMessengerClientTests/Functors/ConnectTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerConnectTests.swift
index caac4d6a53865934a814fd2e2c2fbd59d1e8b6a7..fb780353631b32f3f4bcf686bf60f3c3e38703c3 100644
--- a/Tests/XXMessengerClientTests/Functors/ConnectTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerConnectTests.swift
@@ -3,7 +3,7 @@ import XXClient
 import XCTest
 @testable import XXMessengerClient
 
-final class ConnectTests: XCTestCase {
+final class MessengerConnectTests: XCTestCase {
   func testConnect() throws {
     struct DidLogIn: Equatable {
       var ephemeral: Bool
@@ -20,7 +20,7 @@ final class ConnectTests: XCTestCase {
     let receptionId = ReceptionIdentity.stub
     let e2eParams = "e2e-params".data(using: .utf8)!
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getId.run = { cMixId }
@@ -39,7 +39,7 @@ final class ConnectTests: XCTestCase {
       ))
       return .unimplemented
     }
-    let connect: Connect = .live(env)
+    let connect: MessengerConnect = .live(env)
 
     try connect()
 
@@ -56,14 +56,14 @@ final class ConnectTests: XCTestCase {
   }
 
   func testConnectWithoutCMix() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let connect: Connect = .live(env)
+    let connect: MessengerConnect = .live(env)
 
     XCTAssertThrowsError(try connect()) { error in
       XCTAssertEqual(
-        error as? Connect.Error,
-        Connect.Error.notLoaded
+        error as? MessengerConnect.Error,
+        MessengerConnect.Error.notLoaded
       )
     }
   }
@@ -72,14 +72,14 @@ final class ConnectTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getId.run = { 1234 }
       cMix.makeLegacyReceptionIdentity.run = { throw error }
       return cMix
     }
-    let connect: Connect = .live(env)
+    let connect: MessengerConnect = .live(env)
 
     XCTAssertThrowsError(try connect()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -90,7 +90,7 @@ final class ConnectTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getId.run = { 1234 }
@@ -99,7 +99,7 @@ final class ConnectTests: XCTestCase {
     }
     env.getE2EParams.run = { "e2e-params".data(using: .utf8)! }
     env.login.run = { _, _, _, _, _ in throw error }
-    let connect: Connect = .live(env)
+    let connect: MessengerConnect = .live(env)
 
     XCTAssertThrowsError(try connect()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/CreateTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
similarity index 80%
rename from Tests/XXMessengerClientTests/Functors/CreateTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
index 0ef9e0d7501ae8fb442d80ba36d0203e211a24ca..2180dda3db578b74a892b2166e66a9beb20357dd 100644
--- a/Tests/XXMessengerClientTests/Functors/CreateTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
@@ -3,7 +3,7 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class CreateTests: XCTestCase {
+final class MessengerCreateTests: XCTestCase {
   func testCreate() throws {
     struct DidNewCMix: Equatable {
       var ndfJSON: String
@@ -23,7 +23,7 @@ final class CreateTests: XCTestCase {
     let password = "password".data(using: .utf8)!
     let storageDir = "storage-dir"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { ndfEnvironment in
       didDownloadNDF.append(ndfEnvironment)
@@ -37,10 +37,10 @@ final class CreateTests: XCTestCase {
       didSavePassword.append(password)
     }
     env.storageDir = storageDir
-    env.directoryManager.remove = { path in
+    env.fileManager.removeDirectory = { path in
       didRemoveDirectory.append(path)
     }
-    env.directoryManager.create = { path in
+    env.fileManager.createDirectory = { path in
       didCreateDirectory.append(path)
     }
     env.newCMix.run = { ndfJSON, storageDir, password, registrationCode in
@@ -51,7 +51,7 @@ final class CreateTests: XCTestCase {
         registrationCode: registrationCode
       ))
     }
-    let create: Create = .live(env)
+    let create: MessengerCreate = .live(env)
 
     try create()
 
@@ -72,10 +72,10 @@ final class CreateTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { _ in throw error }
-    let create: Create = .live(env)
+    let create: MessengerCreate = .live(env)
 
     XCTAssertThrowsError(try create()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -86,12 +86,12 @@ final class CreateTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
     env.generateSecret.run = { _ in "password".data(using: .utf8)! }
     env.passwordStorage.save = { _ in throw error }
-    let create: Create = .live(env)
+    let create: MessengerCreate = .live(env)
 
     XCTAssertThrowsError(try create()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -102,14 +102,14 @@ final class CreateTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
     env.generateSecret.run = { _ in "password".data(using: .utf8)! }
     env.passwordStorage.save = { _ in }
     env.storageDir = "storage-dir"
-    env.directoryManager.remove = { _ in throw error }
-    let create: Create = .live(env)
+    env.fileManager.removeDirectory = { _ in throw error }
+    let create: MessengerCreate = .live(env)
 
     XCTAssertThrowsError(try create()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -120,15 +120,15 @@ final class CreateTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
     env.generateSecret.run = { _ in "password".data(using: .utf8)! }
     env.passwordStorage.save = { _ in }
     env.storageDir = "storage-dir"
-    env.directoryManager.remove = { _ in }
-    env.directoryManager.create = { _ in throw error }
-    let create: Create = .live(env)
+    env.fileManager.removeDirectory = { _ in }
+    env.fileManager.createDirectory = { _ in throw error }
+    let create: MessengerCreate = .live(env)
 
     XCTAssertThrowsError(try create()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -139,16 +139,16 @@ final class CreateTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.ndfEnvironment = .unimplemented
     env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
     env.generateSecret.run = { _ in "password".data(using: .utf8)! }
     env.passwordStorage.save = { _ in }
     env.storageDir = "storage-dir"
-    env.directoryManager.remove = { _ in }
-    env.directoryManager.create = { _ in }
+    env.fileManager.removeDirectory = { _ in }
+    env.fileManager.createDirectory = { _ in }
     env.newCMix.run = { _, _, _, _ in throw error }
-    let create: Create = .live(env)
+    let create: MessengerCreate = .live(env)
 
     XCTAssertThrowsError(try create()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsConnectedTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsConnectedTests.swift
new file mode 100644
index 0000000000000000000000000000000000000000..c7c5de8bc78a79257ce08725a32524a5ce78da50
--- /dev/null
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsConnectedTests.swift
@@ -0,0 +1,20 @@
+import XCTest
+@testable import XXMessengerClient
+
+final class MessengerIsConnectedTests: XCTestCase {
+  func testWithE2E() {
+    var env: MessengerEnvironment = .unimplemented
+    env.e2e.get = { .unimplemented }
+    let isConnected: MessengerIsConnected = .live(env)
+
+    XCTAssertTrue(isConnected())
+  }
+
+  func testWithoutE2E() {
+    var env: MessengerEnvironment = .unimplemented
+    env.e2e.get = { nil }
+    let isConnected: MessengerIsConnected = .live(env)
+
+    XCTAssertFalse(isConnected())
+  }
+}
diff --git a/Tests/XXMessengerClientTests/Functors/IsCreatedTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
similarity index 65%
rename from Tests/XXMessengerClientTests/Functors/IsCreatedTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
index dbdd340702a968abed19b2207083cbc1f7cdbade..246be9d3be6c04c58748ce024149da79fa8b63f7 100644
--- a/Tests/XXMessengerClientTests/Functors/IsCreatedTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
@@ -2,18 +2,18 @@ import CustomDump
 import XCTest
 @testable import XXMessengerClient
 
-final class IsCreatedTests: XCTestCase {
+final class MessengerIsCreatedTests: XCTestCase {
   func testStorageDirNotEmpty() {
     var didIsDirectoryEmpty: [String] = []
     let storageDir = "storage-dir"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.storageDir = storageDir
-    env.directoryManager.isEmpty = { path in
+    env.fileManager.isDirectoryEmpty = { path in
       didIsDirectoryEmpty.append(path)
       return false
     }
-    let isCreated: IsCreated = .live(env)
+    let isCreated: MessengerIsCreated = .live(env)
 
     XCTAssertTrue(isCreated())
     XCTAssertNoDifference(didIsDirectoryEmpty, [storageDir])
@@ -23,13 +23,13 @@ final class IsCreatedTests: XCTestCase {
     var didIsDirectoryEmpty: [String] = []
     let storageDir = "storage-dir"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.storageDir = storageDir
-    env.directoryManager.isEmpty = { path in
+    env.fileManager.isDirectoryEmpty = { path in
       didIsDirectoryEmpty.append(path)
       return true
     }
-    let isCreated: IsCreated = .live(env)
+    let isCreated: MessengerIsCreated = .live(env)
 
     XCTAssertFalse(isCreated())
     XCTAssertNoDifference(didIsDirectoryEmpty, [storageDir])
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoadedTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoadedTests.swift
new file mode 100644
index 0000000000000000000000000000000000000000..6f0591e264cbac1a12cf707b462b0be12d65aa74
--- /dev/null
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoadedTests.swift
@@ -0,0 +1,20 @@
+import XCTest
+@testable import XXMessengerClient
+
+final class MessengerIsLoadedTests: XCTestCase {
+  func testWithCMix() {
+    var env: MessengerEnvironment = .unimplemented
+    env.cMix.get = { .unimplemented }
+    let isLoaded: MessengerIsLoaded = .live(env)
+
+    XCTAssertTrue(isLoaded())
+  }
+
+  func testWithoutCMix() {
+    var env: MessengerEnvironment = .unimplemented
+    env.cMix.get = { nil }
+    let isLoaded: MessengerIsLoaded = .live(env)
+
+    XCTAssertFalse(isLoaded())
+  }
+}
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoggedInTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoggedInTests.swift
new file mode 100644
index 0000000000000000000000000000000000000000..c6ea87e64f2c300f9ab7090b8b56fc7e730ee765
--- /dev/null
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsLoggedInTests.swift
@@ -0,0 +1,20 @@
+import XCTest
+@testable import XXMessengerClient
+
+final class MessengerIsLoggedInTests: XCTestCase {
+  func testWithUD() {
+    var env: MessengerEnvironment = .unimplemented
+    env.ud.get = { .unimplemented }
+    let isLoggedIn: MessengerIsLoggedIn = .live(env)
+
+    XCTAssertTrue(isLoggedIn())
+  }
+
+  func testWithoutUD() {
+    var env: MessengerEnvironment = .unimplemented
+    env.ud.get = { nil }
+    let isLoggedIn: MessengerIsLoggedIn = .live(env)
+
+    XCTAssertFalse(isLoggedIn())
+  }
+}
diff --git a/Tests/XXMessengerClientTests/Functors/IsRegisteredTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsRegisteredTests.swift
similarity index 67%
rename from Tests/XXMessengerClientTests/Functors/IsRegisteredTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsRegisteredTests.swift
index 1069fb5efbd806a14fbc2522dc4e33bb4838d627..b6dca3e9e4a09b5cc78b84b3d9a56ea12b032e3a 100644
--- a/Tests/XXMessengerClientTests/Functors/IsRegisteredTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsRegisteredTests.swift
@@ -2,11 +2,11 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class IsRegisteredTests: XCTestCase {
+final class MessengerIsRegisteredTests: XCTestCase {
   func testRegistered() throws {
     var didIsRegisteredWithUD: [Int] = []
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.e2e.get = {
       var e2e: E2E = .unimplemented
       e2e.getId.run = { 1234 }
@@ -16,34 +16,34 @@ final class IsRegisteredTests: XCTestCase {
       didIsRegisteredWithUD.append(e2eId)
       return true
     }
-    let isRegistered: IsRegistered = .live(env)
+    let isRegistered: MessengerIsRegistered = .live(env)
 
     XCTAssertTrue(try isRegistered())
     XCTAssertEqual(didIsRegisteredWithUD, [1234])
   }
 
   func testNotRegistered() throws {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.e2e.get = {
       var e2e: E2E = .unimplemented
       e2e.getId.run = { 1234 }
       return e2e
     }
     env.isRegisteredWithUD.run = { _ in false }
-    let isRegistered: IsRegistered = .live(env)
+    let isRegistered: MessengerIsRegistered = .live(env)
 
     XCTAssertFalse(try isRegistered())
   }
 
   func testWithoutE2E() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.e2e.get = { nil }
-    let isRegistered: IsRegistered = .live(env)
+    let isRegistered: MessengerIsRegistered = .live(env)
 
     XCTAssertThrowsError(try isRegistered()) { err in
       XCTAssertEqual(
-        err as? IsRegistered.Error,
-        IsRegistered.Error.notConnected
+        err as? MessengerIsRegistered.Error,
+        MessengerIsRegistered.Error.notConnected
       )
     }
   }
@@ -52,14 +52,14 @@ final class IsRegisteredTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.e2e.get = {
       var e2e: E2E = .unimplemented
       e2e.getId.run = { 1234 }
       return e2e
     }
     env.isRegisteredWithUD.run = { _ in throw error }
-    let isRegistered: IsRegistered = .live(env)
+    let isRegistered: MessengerIsRegistered = .live(env)
 
     XCTAssertThrowsError(try isRegistered()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/LoadTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
similarity index 85%
rename from Tests/XXMessengerClientTests/Functors/LoadTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
index fc07659b62c205ce64932a26cc0eaae984be5929..5eb90e3ae5379959c4891a5c0b36032827b8eae7 100644
--- a/Tests/XXMessengerClientTests/Functors/LoadTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
@@ -3,7 +3,7 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class LoadTests: XCTestCase {
+final class MessengerLoadTests: XCTestCase {
   func testLoad() throws {
     struct DidLoadCMix: Equatable {
       var storageDir: String
@@ -17,7 +17,7 @@ final class LoadTests: XCTestCase {
     let password = "password".data(using: .utf8)!
     let cMixParams = "cmix-params".data(using: .utf8)!
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.set = { didSetCMix.append($0) }
     env.storageDir = storageDir
     env.passwordStorage.load = { password }
@@ -30,7 +30,7 @@ final class LoadTests: XCTestCase {
       ))
       return .unimplemented
     }
-    let load: Load = .live(env)
+    let load: MessengerLoad = .live(env)
 
     try load()
 
@@ -45,10 +45,10 @@ final class LoadTests: XCTestCase {
   }
 
   func testMissingPassword() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.storageDir = "storage-dir"
     env.passwordStorage.load = { throw PasswordStorage.MissingPasswordError() }
-    let load: Load = .live(env)
+    let load: MessengerLoad = .live(env)
 
     XCTAssertThrowsError(try load()) { err in
       XCTAssertEqual(
@@ -62,12 +62,12 @@ final class LoadTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.storageDir = "storage-dir"
     env.passwordStorage.load = { "password".data(using: .utf8)! }
     env.getCMixParams.run = { "cmix-params".data(using: .utf8)! }
     env.loadCMix.run = { _, _, _ in throw error }
-    let load: Load = .live(env)
+    let load: MessengerLoad = .live(env)
 
     XCTAssertThrowsError(try load()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/LogInTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
similarity index 85%
rename from Tests/XXMessengerClientTests/Functors/LogInTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
index cf8a37080dcf2ab88e7cfbf0a81af2611a0c9bc3..83dd2cd02fc79fcb5d460d244c025d05590a2233 100644
--- a/Tests/XXMessengerClientTests/Functors/LogInTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
@@ -3,7 +3,7 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class LogInTests: XCTestCase {
+final class MessengerLogInTests: XCTestCase {
   func testLogin() throws {
     var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
     var didNewOrLoadUDWithFollower: [UdNetworkStatus] = []
@@ -15,7 +15,7 @@ final class LogInTests: XCTestCase {
     let udContactFromNDF = "ndf-ud-contact".data(using: .utf8)!
     let udAddressFromNDF = "ndf-ud-address"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { networkFollowerStatus }
@@ -38,7 +38,7 @@ final class LogInTests: XCTestCase {
       didNewOrLoadUDWithFollower.append(follower)
       return .unimplemented
     }
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
     try logIn()
 
     XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
@@ -66,7 +66,7 @@ final class LogInTests: XCTestCase {
     let altUdContact = "alt-ud-contact".data(using: .utf8)!
     let altUdAddress = "alt-ud-address"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -85,7 +85,7 @@ final class LogInTests: XCTestCase {
       didNewOrLoadUDWithParams.append(params)
       return .unimplemented
     }
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
     try logIn()
 
     XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
@@ -100,28 +100,28 @@ final class LogInTests: XCTestCase {
   }
 
   func testLoginWithoutCMix() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
 
     XCTAssertThrowsError(try logIn()) { error in
       XCTAssertEqual(
-        error as? LogIn.Error,
-        LogIn.Error.notLoaded
+        error as? MessengerLogIn.Error,
+        MessengerLogIn.Error.notLoaded
       )
     }
   }
 
   func testLoginWithoutE2E() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { .unimplemented }
     env.e2e.get = { nil }
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
 
     XCTAssertThrowsError(try logIn()) { error in
       XCTAssertEqual(
-        error as? LogIn.Error,
-        LogIn.Error.notConnected
+        error as? MessengerLogIn.Error,
+        MessengerLogIn.Error.notConnected
       )
     }
   }
@@ -130,7 +130,7 @@ final class LogInTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -145,7 +145,7 @@ final class LogInTests: XCTestCase {
     }
     env.udCert = nil
     env.udContact = nil
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
 
     XCTAssertThrowsError(try logIn()) { err in
       XCTAssertEqual(err as? Error, error)
@@ -156,7 +156,7 @@ final class LogInTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -171,7 +171,7 @@ final class LogInTests: XCTestCase {
     env.udContact = "ud-contact".data(using: .utf8)!
     env.udAddress = "ud-address"
     env.newOrLoadUd.run = { _, _ in throw error }
-    let logIn: LogIn = .live(env)
+    let logIn: MessengerLogIn = .live(env)
 
     XCTAssertThrowsError(try logIn()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/RegisterTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
similarity index 86%
rename from Tests/XXMessengerClientTests/Functors/RegisterTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
index b43e967ad5c5d78dabb24d560d66c6097e6b5098..ef96b25197a388e7b258a341638e053cb63ff3ad 100644
--- a/Tests/XXMessengerClientTests/Functors/RegisterTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
@@ -3,7 +3,7 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class RegisterTests: XCTestCase {
+final class MessengerRegisterTests: XCTestCase {
   func testRegister() throws {
     var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
     var didNewOrLoadUDWithFollower: [UdNetworkStatus] = []
@@ -17,7 +17,7 @@ final class RegisterTests: XCTestCase {
     let udAddressFromNDF = "ndf-ud-address"
     let username = "new-user-name"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { networkFollowerStatus }
@@ -43,7 +43,7 @@ final class RegisterTests: XCTestCase {
       didNewOrLoadUDWithFollower.append(follower)
       return .unimplemented
     }
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
     try register(username: username)
 
     XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
@@ -73,7 +73,7 @@ final class RegisterTests: XCTestCase {
     let altUdAddress = "alt-ud-address"
     let username = "new-user-name"
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -95,7 +95,7 @@ final class RegisterTests: XCTestCase {
       didNewOrLoadUDWithParams.append(params)
       return .unimplemented
     }
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
     try register(username: username)
 
     XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
@@ -110,28 +110,28 @@ final class RegisterTests: XCTestCase {
   }
 
   func testRegisterWithoutCMix() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
 
     XCTAssertThrowsError(try register(username: "new-user-name")) { error in
       XCTAssertEqual(
-        error as? Register.Error,
-        Register.Error.notLoaded
+        error as? MessengerRegister.Error,
+        MessengerRegister.Error.notLoaded
       )
     }
   }
 
   func testRegisterWithoutE2E() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { .unimplemented }
     env.e2e.get = { nil }
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
 
     XCTAssertThrowsError(try register(username: "new-user-name")) { error in
       XCTAssertEqual(
-        error as? Register.Error,
-        Register.Error.notConnected
+        error as? MessengerRegister.Error,
+        MessengerRegister.Error.notConnected
       )
     }
   }
@@ -140,7 +140,7 @@ final class RegisterTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -158,7 +158,7 @@ final class RegisterTests: XCTestCase {
     }
     env.udCert = nil
     env.udContact = nil
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
 
     XCTAssertThrowsError(try register(username: "new-user-name")) { err in
       XCTAssertEqual(err as? Error, error)
@@ -169,7 +169,7 @@ final class RegisterTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
@@ -187,7 +187,7 @@ final class RegisterTests: XCTestCase {
     env.udContact = "ud-contact".data(using: .utf8)!
     env.udAddress = "ud-address"
     env.newOrLoadUd.run = { _, _ in throw error }
-    let register: Register = .live(env)
+    let register: MessengerRegister = .live(env)
 
     XCTAssertThrowsError(try register(username: "new-user-name")) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/StartTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerStartTests.swift
similarity index 71%
rename from Tests/XXMessengerClientTests/Functors/StartTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerStartTests.swift
index f15d6f1d80fb7b20f27836e3ac8269af6433cdfe..7b3e33af570bd8a522d26091ef551be5fec7b674 100644
--- a/Tests/XXMessengerClientTests/Functors/StartTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerStartTests.swift
@@ -3,11 +3,11 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class StartTests: XCTestCase {
+final class MessengerStartTests: XCTestCase {
   func testStart() throws {
     var didStartNetworkFollower: [Int] = []
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .stopped }
@@ -16,7 +16,7 @@ final class StartTests: XCTestCase {
       }
       return cMix
     }
-    let start: Start = .live(env)
+    let start: MessengerStart = .live(env)
 
     try start(timeoutMS: 123)
 
@@ -24,26 +24,26 @@ final class StartTests: XCTestCase {
   }
 
   func testStartWhenNotLoaded() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let start: Start = .live(env)
+    let start: MessengerStart = .live(env)
 
     XCTAssertThrowsError(try start()) { error in
       XCTAssertEqual(
-        error as? Start.Error,
-        Start.Error.notLoaded
+        error as? MessengerStart.Error,
+        MessengerStart.Error.notLoaded
       )
     }
   }
 
   func testStartWhenRunning() throws {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .running }
       return cMix
     }
-    let start: Start = .live(env)
+    let start: MessengerStart = .live(env)
 
     try start()
   }
@@ -52,14 +52,14 @@ final class StartTests: XCTestCase {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.networkFollowerStatus.run = { .stopped }
       cMix.startNetworkFollower.run = { _ in throw error }
       return cMix
     }
-    let start: Start = .live(env)
+    let start: MessengerStart = .live(env)
 
     XCTAssertThrowsError(try start()) { err in
       XCTAssertEqual(err as? Error, error)
diff --git a/Tests/XXMessengerClientTests/Functors/WaitForNetworkTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNetworkTests.swift
similarity index 60%
rename from Tests/XXMessengerClientTests/Functors/WaitForNetworkTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNetworkTests.swift
index f0d15ca784203bad54b0efdd109fee35622f0ccf..1dbae73528c82a00c4270bf99c759356c7488171 100644
--- a/Tests/XXMessengerClientTests/Functors/WaitForNetworkTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNetworkTests.swift
@@ -3,11 +3,11 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class WaitForNetworkTests: XCTestCase {
+final class MessengerWaitForNetworkTests: XCTestCase {
   func testWaitSuccess() throws {
     var didWaitForNetwork: [Int] = []
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.waitForNetwork.run = { timeoutMS in
@@ -16,7 +16,7 @@ final class WaitForNetworkTests: XCTestCase {
       }
       return cMix
     }
-    let waitForNetwork: WaitForNetwork = .live(env)
+    let waitForNetwork: MessengerWaitForNetwork = .live(env)
 
     try waitForNetwork(timeoutMS: 123)
 
@@ -24,31 +24,31 @@ final class WaitForNetworkTests: XCTestCase {
   }
 
   func testWaitWhenNotLoaded() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let waitForNetwork: WaitForNetwork = .live(env)
+    let waitForNetwork: MessengerWaitForNetwork = .live(env)
 
     XCTAssertThrowsError(try waitForNetwork()) { error in
       XCTAssertEqual(
-        error as? WaitForNetwork.Error,
-        WaitForNetwork.Error.notLoaded
+        error as? MessengerWaitForNetwork.Error,
+        MessengerWaitForNetwork.Error.notLoaded
       )
     }
   }
 
   func testWaitTimeout() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.waitForNetwork.run = { _ in false }
       return cMix
     }
-    let waitForNetwork: WaitForNetwork = .live(env)
+    let waitForNetwork: MessengerWaitForNetwork = .live(env)
 
     XCTAssertThrowsError(try waitForNetwork()) { error in
       XCTAssertEqual(
-        error as? WaitForNetwork.Error,
-        WaitForNetwork.Error.timeout
+        error as? MessengerWaitForNetwork.Error,
+        MessengerWaitForNetwork.Error.timeout
       )
     }
   }
diff --git a/Tests/XXMessengerClientTests/Functors/WaitForNodesTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
similarity index 80%
rename from Tests/XXMessengerClientTests/Functors/WaitForNodesTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
index e001d270aca4cadd3bdfc337b1bf21facbae6247..bc23afb53c604fd0b737bba5db544edfebdffe68 100644
--- a/Tests/XXMessengerClientTests/Functors/WaitForNodesTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
@@ -3,16 +3,16 @@ import XCTest
 import XXClient
 @testable import XXMessengerClient
 
-final class WaitForNodesTests: XCTestCase {
+final class MessengerWaitForNodesTests: XCTestCase {
   func testWaitWhenNotLoaded() {
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
-    let waitForNodes: WaitForNodes = .live(env)
+    let waitForNodes: MessengerWaitForNodes = .live(env)
 
     XCTAssertThrowsError(try waitForNodes()) { error in
       XCTAssertEqual(
-        error as? WaitForNodes.Error,
-        WaitForNodes.Error.notLoaded
+        error as? MessengerWaitForNodes.Error,
+        MessengerWaitForNodes.Error.notLoaded
       )
     }
   }
@@ -20,7 +20,7 @@ final class WaitForNodesTests: XCTestCase {
   func testWaitWhenHasTargetRatio() throws {
     var didProgress: [NodeRegistrationReport] = []
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getNodeRegistrationStatus.run = {
@@ -28,7 +28,7 @@ final class WaitForNodesTests: XCTestCase {
       }
       return cMix
     }
-    let waitForNodes: WaitForNodes = .live(env)
+    let waitForNodes: MessengerWaitForNodes = .live(env)
 
     try waitForNodes(
       targetRatio: 0.7,
@@ -52,14 +52,14 @@ final class WaitForNodesTests: XCTestCase {
       .init(registered: 8, total: 10),
     ]
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getNodeRegistrationStatus.run = { reports.removeFirst() }
       return cMix
     }
     env.sleep = { didSleep.append($0) }
-    let waitForNodes: WaitForNodes = .live(env)
+    let waitForNodes: MessengerWaitForNodes = .live(env)
 
     try waitForNodes(
       targetRatio: 0.7,
@@ -87,14 +87,14 @@ final class WaitForNodesTests: XCTestCase {
       .init(registered: 6, total: 10),
     ]
 
-    var env: Environment = .unimplemented
+    var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
       cMix.getNodeRegistrationStatus.run = { reports.removeFirst() }
       return cMix
     }
     env.sleep = { didSleep.append($0) }
-    let waitForNodes: WaitForNodes = .live(env)
+    let waitForNodes: MessengerWaitForNodes = .live(env)
 
     XCTAssertThrowsError(try waitForNodes(
       targetRatio: 0.7,
@@ -103,8 +103,8 @@ final class WaitForNodesTests: XCTestCase {
       onProgress: { didProgress.append($0) }
     )) { error in
       XCTAssertEqual(
-        error as? WaitForNodes.Error,
-        WaitForNodes.Error.timeout
+        error as? MessengerWaitForNodes.Error,
+        MessengerWaitForNodes.Error.timeout
       )
     }
 
diff --git a/Tests/XXMessengerClientTests/Utils/StoredTests.swift b/Tests/XXMessengerClientTests/Messenger/Utils/StoredTests.swift
similarity index 100%
rename from Tests/XXMessengerClientTests/Utils/StoredTests.swift
rename to Tests/XXMessengerClientTests/Messenger/Utils/StoredTests.swift