diff --git a/Sources/XXClient/Functions/InitFileTransfer.swift b/Sources/XXClient/Functions/InitFileTransfer.swift
index e232ef746ee5c4fcae42afe14a22e715e4a84687..f56b5680e030aeec708bcfee62e5cd38eaa78d72 100644
--- a/Sources/XXClient/Functions/InitFileTransfer.swift
+++ b/Sources/XXClient/Functions/InitFileTransfer.swift
@@ -2,28 +2,40 @@ import Bindings
 import XCTestDynamicOverlay
 
 public struct InitFileTransfer {
-  public var run: (Int, Data, Data, ReceiveFileCallback) throws -> FileTransfer
+  public struct Params: Equatable {
+    public init(
+      e2eId: Int,
+      e2eFileTransferParamsJSON: Data = GetE2EFileTransferParams.liveDefault(),
+      fileTransferParamsJSON: Data = GetFileTransferParams.liveDefault()
+    ) {
+      self.e2eId = e2eId
+      self.e2eFileTransferParamsJSON = e2eFileTransferParamsJSON
+      self.fileTransferParamsJSON = fileTransferParamsJSON
+    }
+
+    public var e2eId: Int
+    public var e2eFileTransferParamsJSON: Data = GetE2EFileTransferParams.liveDefault()
+    public var fileTransferParamsJSON: Data = GetFileTransferParams.liveDefault()
+  }
+
+  public var run: (Params, ReceiveFileCallback) throws -> FileTransfer
 
   public func callAsFunction(
-    e2eId: Int,
-    e2eFileTransferParamsJSON: Data = GetE2EFileTransferParams.liveDefault(),
-    fileTransferParamsJSON: Data = GetFileTransferParams.liveDefault(),
+    params: Params,
     callback: ReceiveFileCallback
   ) throws -> FileTransfer {
-    try run(e2eId, e2eFileTransferParamsJSON, fileTransferParamsJSON, callback)
+    try run(params, callback)
   }
 }
 
 extension InitFileTransfer {
-  public static let live = InitFileTransfer {
-    e2eId, e2eFileTransferParamsJSON, fileTransferParamsJSON, callback in
-
+  public static let live = InitFileTransfer { params, callback in
     var error: NSError?
     let bindingsFileTransfer = BindingsInitFileTransfer(
-      e2eId,
+      params.e2eId,
       callback.makeBindingsReceiveFileCallback(),
-      e2eFileTransferParamsJSON,
-      fileTransferParamsJSON,
+      params.e2eFileTransferParamsJSON,
+      params.fileTransferParamsJSON,
       &error
     )
     if let error = error {