diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
index a3514141508e1fa6d5a47de09d75cc3aa9d87600..b36b55b447956d139f227887a154bec71d109312 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerCreate.swift
@@ -15,7 +15,7 @@ extension MessengerCreate {
       let ndfData = try env.downloadNDF(env.ndfEnvironment)
       let password = env.generateSecret()
       try env.passwordStorage.save(password)
-      let storageDir = env.storageDir()
+      let storageDir = env.storageDir
       try env.fileManager.removeDirectory(storageDir)
       try env.fileManager.createDirectory(storageDir)
       try env.newCMix(
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift
index cf7f5a4f6da8d00d7d306c55e82a28b7cbf73d69..c848518c2483e49acbdbfe3d6d0b9e0c7fc2ce32 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerIsCreated.swift
@@ -12,7 +12,7 @@ public struct MessengerIsCreated {
 extension MessengerIsCreated {
   public static func live(_ env: MessengerEnvironment) -> MessengerIsCreated {
     MessengerIsCreated {
-      env.fileManager.isDirectoryEmpty(env.storageDir()) == false
+      env.fileManager.isDirectoryEmpty(env.storageDir) == false
     }
   }
 }
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
index 9b0454a4ee689c5590ea9823420cc03500b4b0c6..a8a6be31d5e2496f2219470be5cda3d737c9ad24 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerLoad.swift
@@ -13,7 +13,7 @@ extension MessengerLoad {
   public static func live(_ env: MessengerEnvironment) -> MessengerLoad {
     MessengerLoad {
       env.ctx.cMix = try env.loadCMix(
-        storageDir: env.storageDir(),
+        storageDir: env.storageDir,
         password: try env.passwordStorage.load(),
         cMixParamsJSON: env.getCMixParams()
       )
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
index 4b43a56b24f14887217ede4513b815b1cd970920..70df78ac7350825962d93ebaf504520b4a8db64e 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerLogIn.swift
@@ -31,9 +31,9 @@ extension MessengerLogIn {
           e2eId: e2e.getId(),
           username: nil,
           registrationValidationSignature: nil,
-          cert: env.udCert() ?? e2e.getUdCertFromNdf(),
-          contactFile: env.udContact() ?? (try e2e.getUdContactFromNdf()),
-          address: env.udAddress() ?? e2e.getUdAddressFromNdf()
+          cert: env.udCert ?? e2e.getUdCertFromNdf(),
+          contactFile: env.udContact ?? (try e2e.getUdContactFromNdf()),
+          address: env.udAddress ?? e2e.getUdAddressFromNdf()
         ),
         follower: .init {
           cMix.networkFollowerStatus().rawValue
diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
index 1440dd43f01f1c25765265a763ea0e5a45b31730..75fce25227188ac23930882a1f36fdda1c9c6af9 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerRegister.swift
@@ -33,9 +33,9 @@ extension MessengerRegister {
           e2eId: e2e.getId(),
           username: username,
           registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(),
-          cert: env.udCert() ?? e2e.getUdCertFromNdf(),
-          contactFile: env.udContact() ?? (try e2e.getUdContactFromNdf()),
-          address: env.udAddress() ?? e2e.getUdAddressFromNdf()
+          cert: env.udCert ?? e2e.getUdCertFromNdf(),
+          contactFile: env.udContact ?? (try e2e.getUdContactFromNdf()),
+          address: env.udAddress ?? e2e.getUdAddressFromNdf()
         ),
         follower: .init {
           cMix.networkFollowerStatus().rawValue
diff --git a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
index dfa7dfcd3da15c9722d07349b306ba9b177ff39c..29391b209990a0258783dca517c08618b50169be 100644
--- a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
+++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift
@@ -16,10 +16,10 @@ public struct MessengerEnvironment {
   public var newCMix: NewCMix
   public var newOrLoadUd: NewOrLoadUd
   public var passwordStorage: PasswordStorage
-  public var storageDir: () -> String
-  public var udAddress: () -> String?
-  public var udCert: () -> Data?
-  public var udContact: () -> Data?
+  public var storageDir: String
+  public var udAddress: String?
+  public var udCert: Data?
+  public var udContact: Data?
 }
 
 extension MessengerEnvironment {
@@ -43,10 +43,10 @@ extension MessengerEnvironment {
     newCMix: .live,
     newOrLoadUd: .live,
     passwordStorage: .keychain,
-    storageDir: { MessengerEnvironment.defaultStorageDir },
-    udAddress: { nil },
-    udCert: { nil },
-    udContact: { nil }
+    storageDir: MessengerEnvironment.defaultStorageDir,
+    udAddress: nil,
+    udCert: nil,
+    udContact: nil
   )
 }
 
@@ -65,9 +65,9 @@ extension MessengerEnvironment {
     newCMix: .unimplemented,
     newOrLoadUd: .unimplemented,
     passwordStorage: .unimplemented,
-    storageDir: XCTUnimplemented("\(Self.self).storageDir", placeholder: ""),
-    udAddress: XCTUnimplemented("\(Self.self).udAddress", placeholder: nil),
-    udCert: XCTUnimplemented("\(Self.self).udCert", placeholder: nil),
-    udContact: XCTUnimplemented("\(Self.self).udContact", placeholder: nil)
+    storageDir: "unimplemented",
+    udAddress: nil,
+    udCert: nil,
+    udContact: nil
   )
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
index 5db87012a6b984e3db1ed3cb018e2cda96038d60..ee178d28c8378e7e7e8c6206eb41de27450cc8f1 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCreateTests.swift
@@ -36,9 +36,7 @@ final class MessengerCreateTests: XCTestCase {
     env.passwordStorage.save = { password in
       didSavePassword.append(password)
     }
-    env.storageDir = {
-      storageDir
-    }
+    env.storageDir = storageDir
     env.fileManager.removeDirectory = { path in
       didRemoveDirectory.append(path)
     }
@@ -109,7 +107,7 @@ final class MessengerCreateTests: XCTestCase {
     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.storageDir = "storage-dir"
     env.fileManager.removeDirectory = { _ in throw error }
     let create: MessengerCreate = .live(env)
 
@@ -127,7 +125,7 @@ final class MessengerCreateTests: XCTestCase {
     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.storageDir = "storage-dir"
     env.fileManager.removeDirectory = { _ in }
     env.fileManager.createDirectory = { _ in throw error }
     let create: MessengerCreate = .live(env)
@@ -146,7 +144,7 @@ final class MessengerCreateTests: XCTestCase {
     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.storageDir = "storage-dir"
     env.fileManager.removeDirectory = { _ in }
     env.fileManager.createDirectory = { _ in }
     env.newCMix.run = { _, _, _, _ in throw error }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
index a96c8a6073b8e34b3d5553628657d2d9cec0632e..246be9d3be6c04c58748ce024149da79fa8b63f7 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerIsCreatedTests.swift
@@ -8,7 +8,7 @@ final class MessengerIsCreatedTests: XCTestCase {
     let storageDir = "storage-dir"
 
     var env: MessengerEnvironment = .unimplemented
-    env.storageDir = { storageDir }
+    env.storageDir = storageDir
     env.fileManager.isDirectoryEmpty = { path in
       didIsDirectoryEmpty.append(path)
       return false
@@ -24,7 +24,7 @@ final class MessengerIsCreatedTests: XCTestCase {
     let storageDir = "storage-dir"
 
     var env: MessengerEnvironment = .unimplemented
-    env.storageDir = { storageDir }
+    env.storageDir = storageDir
     env.fileManager.isDirectoryEmpty = { path in
       didIsDirectoryEmpty.append(path)
       return true
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
index ef5694c2a8cb0b47e227154bc1d54d6c06dceca8..1d8ae5f2ac402a5746bb9fbbe2dadd4296bd8c52 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLoadTests.swift
@@ -18,7 +18,7 @@ final class MessengerLoadTests: XCTestCase {
 
     var env: MessengerEnvironment = .unimplemented
     env.ctx.cMix = nil
-    env.storageDir = { storageDir }
+    env.storageDir = storageDir
     env.passwordStorage.load = { password }
     env.getCMixParams.run = { cMixParams }
     env.loadCMix.run = { storageDir, password, cMixParamsJSON in
@@ -46,7 +46,7 @@ final class MessengerLoadTests: XCTestCase {
   func testMissingPassword() {
     var env: MessengerEnvironment = .unimplemented
     env.ctx.cMix = nil
-    env.storageDir = { "storage-dir" }
+    env.storageDir = "storage-dir"
     env.passwordStorage.load = { throw PasswordStorage.MissingPasswordError() }
     let load: MessengerLoad = .live(env)
 
@@ -64,7 +64,7 @@ final class MessengerLoadTests: XCTestCase {
 
     var env: MessengerEnvironment = .unimplemented
     env.ctx.cMix = nil
-    env.storageDir = { "storage-dir" }
+    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 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
index 92e511f2de3212091e85bd2b6e184d83d0740645..b11f8c8fd37f9dece286c809df8449d4e6e1df67 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerLogInTests.swift
@@ -23,9 +23,9 @@ final class MessengerLogInTests: XCTestCase {
     }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { e2eId }
-    env.udCert = { nil }
-    env.udContact = { nil }
-    env.udAddress = { nil }
+    env.udCert = nil
+    env.udContact = nil
+    env.udAddress = nil
     env.ctx.e2e!.getUdCertFromNdf.run = { udCertFromNDF }
     env.ctx.e2e!.getUdContactFromNdf.run = { udContactFromNDF }
     env.ctx.e2e!.getUdAddressFromNdf.run = { udAddressFromNDF }
@@ -66,9 +66,9 @@ final class MessengerLogInTests: XCTestCase {
     env.ctx.cMix!.networkFollowerStatus.run = { .running }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { e2eId }
-    env.udCert = { altUdCert }
-    env.udContact = { altUdContact }
-    env.udAddress = { altUdAddress }
+    env.udCert = altUdCert
+    env.udContact = altUdContact
+    env.udAddress = altUdAddress
     env.newOrLoadUd.run = { params, _ in
       didNewOrLoadUDWithParams.append(params)
       return .unimplemented
@@ -138,8 +138,8 @@ final class MessengerLogInTests: XCTestCase {
     env.ctx.cMix!.networkFollowerStatus.run = { .running }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { 1234 }
-    env.udCert = { nil }
-    env.udContact = { nil }
+    env.udCert = nil
+    env.udContact = nil
     env.ctx.e2e!.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
     env.ctx.e2e!.getUdContactFromNdf.run = { throw error }
     let logIn: MessengerLogIn = .live(env)
@@ -158,9 +158,9 @@ final class MessengerLogInTests: XCTestCase {
     env.ctx.cMix!.networkFollowerStatus.run = { .running }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { 1234 }
-    env.udCert = { "ud-cert".data(using: .utf8)! }
-    env.udContact = { "ud-contact".data(using: .utf8)! }
-    env.udAddress = { "ud-address" }
+    env.udCert = "ud-cert".data(using: .utf8)!
+    env.udContact = "ud-contact".data(using: .utf8)!
+    env.udAddress = "ud-address"
     env.newOrLoadUd.run = { _, _ in throw error }
     let logIn: MessengerLogIn = .live(env)
 
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
index deb6a8dcfd209e99404b092033e870d42e13305b..861df63eb06a7304ed6dc307209a5180ff21264d 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerRegisterTests.swift
@@ -28,9 +28,9 @@ final class MessengerRegisterTests: XCTestCase {
     }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { e2eId }
-    env.udCert = { nil }
-    env.udContact = { nil }
-    env.udAddress = { nil }
+    env.udCert = nil
+    env.udContact = nil
+    env.udAddress = nil
     env.ctx.e2e!.getUdCertFromNdf.run = { udCertFromNDF }
     env.ctx.e2e!.getUdContactFromNdf.run = { udContactFromNDF }
     env.ctx.e2e!.getUdAddressFromNdf.run = { udAddressFromNDF }
@@ -76,9 +76,9 @@ final class MessengerRegisterTests: XCTestCase {
     }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { e2eId }
-    env.udCert = { altUdCert }
-    env.udContact = { altUdContact }
-    env.udAddress = { altUdAddress }
+    env.udCert = altUdCert
+    env.udContact = altUdContact
+    env.udAddress = altUdAddress
     env.newOrLoadUd.run = { params, _ in
       didNewOrLoadUDWithParams.append(params)
       return .unimplemented
@@ -152,8 +152,8 @@ final class MessengerRegisterTests: XCTestCase {
     }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { 1234 }
-    env.udCert = { nil }
-    env.udContact = { nil }
+    env.udCert = nil
+    env.udContact = nil
     env.ctx.e2e!.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
     env.ctx.e2e!.getUdContactFromNdf.run = { throw error }
     let register: MessengerRegister = .live(env)
@@ -175,9 +175,9 @@ final class MessengerRegisterTests: XCTestCase {
     }
     env.ctx.e2e = .unimplemented
     env.ctx.e2e!.getId.run = { 1234 }
-    env.udCert = { "ud-cert".data(using: .utf8)! }
-    env.udContact = { "ud-contact".data(using: .utf8)! }
-    env.udAddress = { "ud-address" }
+    env.udCert = "ud-cert".data(using: .utf8)!
+    env.udContact = "ud-contact".data(using: .utf8)!
+    env.udAddress = "ud-address"
     env.newOrLoadUd.run = { _, _ in throw error }
     let register: MessengerRegister = .live(env)