# IClient

> Learn how IClient changed in the upgrade.

Various functions in the VivoxVoiceChat module are replaced by functionality in [IClient](../../reference-manual/unreal/class_i_client). For code examples and usage notes, see [Initialize the voice client object](../vivox-unreal-sdk-basics/initialize-voice-client-object).

The following list provides the name of the function in the VivoxVoiceChat module, the comparable function in VivoxCore, and supplemental information for completing a version switch.

* `Initialize()` is replaced by `Initialize(VivoxConfig config = VivoxConfig())`

  * You can call Initialize() from the IClient reference that is obtained when the module is loaded.
  * You can call Initialize() with no arguments or with a custom VivoxConfig, which allows for the customization of various options that control how the client operates, including changing the number of debug logs that are produced.

* `UnInitialize()` is replaced by `Uninitialize()`

  * You can call `Uninitialize()` from the IClient reference after the user is ready to completely disconnect.

* `IsInitialized()` is replaced by `Initialize(VivoxConfig config)`

  * IsInitialized does not exist within VivoxCore for Unreal. However if Initialize() is called in any capacity on an already initialized IClient, it returns `VxErrorAlreadyInitialized`.

* `GetAvailableInputDevices()` is replaced by `AudioInputDevices()`

  * `GetAvailableInputDevices()` returns a list of FString Device Names, and AudioInputDevices() returns a list of type IAudioDevice.

* `GetAvailableOutputDevices()` is replaced by `AudioOutputDevices()`

  * GetAvailableOutputDevices() returns a list of FString Device Names, and AudioOutputDevices() returns a list of type IAudioDevice.
