diff --git a/README.md b/README.md
index ca887fc..bcba18f 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,8 @@
 
 #### Python 3
 
-You need a python 3 environment to run the script.
-Google Home UI Automator requires python 3.11 or newer.
+You need a python 3 environment to run the script. Google Home UI Automator
+requires python 3.11 or newer.
 
 #### Android phone
 
@@ -20,7 +20,8 @@
 
 1.  You need to install Google Home App on your Android phone.
 1.  Login to your Google Home App.
-1.  Make sure the Google Home App's version is between `3.1.1.14` and `3.25.1.4`.
+1.  Make sure the Google Home App's version is between `3.1.1.14` and
+    `3.25.1.4`.
 
 NOTE: Please select the correct Google account on Google Home App.
 
@@ -29,17 +30,21 @@
 ### Installation
 
 #### PyPI (recommended)
+
 ```shell
 $ pip install google-home-ui-automator
 ```
 
 #### Build from source code
+
 1.  clone this repo.
 
     ```shell
     $ git clone https://testsuite-smarthome-matter.googlesource.com/ui-automator
     ```
+
 2.  `cd` to the folder.
+
 3.  Run `pip install .`
 
 ## Usage
@@ -49,44 +54,55 @@
 Follow the steps below to automatically commission a matter device.
 
 ```shell
-$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME
+$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME [--google_account <GOOGLE_ACCOUNT>]
 ```
+
 *   `DEVICE_NAME`: desired Matter device, e.g. `m5stack`
 *   `PAIRING_CODE`: pairing code of your Matter device, e.g. `34970112332`
 *   `ROOM_NAME`: room that is going to be assigned, e.g. `Office`
+*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
+    `test@gmail.com`
 
 ### Decommissioning Matter device
 
 Follow the steps below to decommission a matter device.
 
 ```shell
-$ ui-automator --decommission DEVICE_NAME
+$ ui-automator --decommission DEVICE_NAME [--google_account <GOOGLE_ACCOUNT>]
 ```
-*   `DEVICE_NAME`: display name of commissioned Matter device on GHA, e.g. `m5stack`
+
+*   `DEVICE_NAME`: display name of commissioned Matter device on GHA, e.g.
+    `m5stack`
+*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
+    `test@gmail.com`
 
 ### Regression Test
 
 Follow the steps below to run a regression test.
 
 ```shell
-$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME --regtest [--repeat <REPEAT_TIMES>] [--hub <HUB_VERSION>] [--dut <MODEL>,<TYPE>,<PROTOCOL>] [--fw <DEVICE_FIRMWARE>]
+$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME --regtest [--repeat <REPEAT_TIMES>] [--hub <HUB_VERSION>] [--dut <MODEL>,<TYPE>,<PROTOCOL>] [--fw <DEVICE_FIRMWARE>] [--google_account <GOOGLE_ACCOUNT>]
 ```
 
-*   flag `--regtest` is required
-*   regression test need to be used with flag `--commission`
-*   regression test now only supports commissioning/decommissioning cycle
-*   defaultly, regression test will run until users use keyboard interrupt to
-    stop the process
-*   optionally add `--repeat` to run regression test in limited times
-    *   `REPEAT_TIMES`: repeated times for regression test
-*   optionally add `--hub` to include hub version in produced test report
-    *   `HUB_VERSION`: version of hub for controlling devices on GHA
-*   optionally add `--dut` to include device under test in produced test report
+*   `DEVICE_NAME`: desired Matter device, e.g. `m5stack`
+*   `PAIRING_CODE`: pairing code of your Matter device, e.g. `34970112332`
+*   `ROOM_NAME`: room that is going to be assigned, e.g. `Office`
+*   `--repeat`: Optional. Specifies the number of times to repeat the regression
+    test.
+    *   `REPEAT_TIMES`: Number of times to repeat the regression test, e.g.,
+        `10`.
+*   `--hub`: Optional. Includes the hub version in the test report.
+    *   `HUB_VERSION`: Version of the hub controlling the devices in GHA, e.g.,
+        `1.0.0`
+*   `--dut`: Optional. Includes the device under test information in the test
+    report.
     *   `MODEL`: Model of the device. e.g. `X123123`
     *   `TYPE`: Type of the device. e.g. `LIGHT`
-    *   `PROTOCOL`: Used protocol of the device. e.g. `MATTER`
-*   optionally add `--fw` to include device firmware in produced test report
+    *   `PROTOCOL`: Protocol used by the device. e.g. `MATTER`
+*   `--fw`: Optional. Includes the device firmware in the test report.
     *   `DEVICE_FIRMWARE`: Firmware of test device.
+*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
+    `test@gmail.com`
 
 ## Roadmap
 
@@ -111,6 +127,6 @@
 
 ## Disclaimer
 
-This project is not an official Google project. It is not supported by
-Google and Google specifically disclaims all warranties as to its quality,
+This project is not an official Google project. It is not supported by Google
+and Google specifically disclaims all warranties as to its quality,
 merchantability, or fitness for a particular purpose.
diff --git a/ui_automator/android/app/snippet.apk b/ui_automator/android/app/snippet.apk
index 74e4c13..656b663 100644
--- a/ui_automator/android/app/snippet.apk
+++ b/ui_automator/android/app/snippet.apk
Binary files differ
diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index 74698f0..8402af3 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -116,6 +116,14 @@
 _THIRD_PARTY_LICENSE_FILE_PATH = os.path.join(
     os.path.dirname(__file__), 'THIRD_PARTY_NOTICES.txt'
 )
+_GOOGLE_ACCOUNT = flags.DEFINE_string(
+    name='google_account',
+    default=None,
+    help=(
+        'Use --google_account {GOOGLE_ACCOUNT} to specify the GHA account to'
+        ' use.'
+    ),
+)
 _NO_DEVICE_CONNECTED_ERROR_MESSAGE = (
     'No Android device connected to the host computer.'
 )
@@ -332,7 +340,7 @@
 
     try:
       self._connected_device.mbs.commissionDevice(
-          _GOOGLE_HOME_APP, matter_device
+          _GOOGLE_HOME_APP, matter_device, _GOOGLE_ACCOUNT.value
       )
       self._logger.info('Successfully commission the device on GHA.')
     # TODO(google-home-testsuite-dev+ui-automator): Narrow exception type.
@@ -362,7 +370,9 @@
 
     self._logger.info('Start removing the device.')
     try:
-      self._connected_device.mbs.removeDevice(device_name)
+      self._connected_device.mbs.removeDevice(
+          device_name, _GOOGLE_ACCOUNT.value
+      )
       self._logger.info('Successfully remove the device on GHA.')
     # TODO(google-home-testsuite-dev+ui-automator): Narrow exception type.
     except Exception as e:
@@ -386,7 +396,9 @@
         True if the device exists on GHA.
     """
     try:
-      return self._connected_device.mbs.isDeviceExist(device_name)
+      return self._connected_device.mbs.isDeviceExist(
+          device_name, _GOOGLE_ACCOUNT.value
+      )
     except Exception as e:
       raise errors.MoblySnippetError(
           f'Unable to check if {device_name} exists on GHA'
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 8c27e91..5663b10 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -83,6 +83,7 @@
 ]
 _FAKE_PROJECT_FOLDER = '/path/to/'
 _EXPECTED_APK_PATH = f'{_FAKE_PROJECT_FOLDER}android/app/snippet.apk'
+_FAKE_GOOGLE_ACCOUNT = 'fake_google_account'
 
 
 class UIAutomatorTest(unittest.TestCase):
@@ -473,14 +474,17 @@
         'roomName': _FAKE_GHA_ROOM,
     }
 
-    self.ui_automator.commission_device(
-        _FAKE_MATTER_DEVICE_NAME,
-        _FAKE_PAIRING_CODE,
-        _FAKE_GHA_ROOM,
-    )
+    with flagsaver.as_parsed(
+        (ui_automator._GOOGLE_ACCOUNT, _FAKE_GOOGLE_ACCOUNT)
+    ):
+      self.ui_automator.commission_device(
+          _FAKE_MATTER_DEVICE_NAME,
+          _FAKE_PAIRING_CODE,
+          _FAKE_GHA_ROOM,
+      )
 
     self.mock_android_device.mbs.commissionDevice.assert_called_once_with(
-        _GOOGLE_HOME_APP, expected_matter_device
+        _GOOGLE_HOME_APP, expected_matter_device, _FAKE_GOOGLE_ACCOUNT
     )
 
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
@@ -664,6 +668,7 @@
 
     self.assertIn(expected_error_message, str(exc.exception))
 
+  @flagsaver.flagsaver((ui_automator._GOOGLE_ACCOUNT, _FAKE_GOOGLE_ACCOUNT))
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_decommission_device_successfully_removes_a_device(
       self, mock_get_all_instances
@@ -674,7 +679,7 @@
       self.ui_automator.decommission_device(_FAKE_MATTER_DEVICE_NAME)
 
     self.mock_android_device.mbs.removeDevice.assert_called_once_with(
-        _FAKE_MATTER_DEVICE_NAME
+        _FAKE_MATTER_DEVICE_NAME, _FAKE_GOOGLE_ACCOUNT
     )
     self.assertEqual(
         cm.output[2], 'INFO:root:Successfully remove the device on GHA.'
@@ -1021,7 +1026,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(0)),
         'test_name': 'test_commission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'run',
         'result': 'FAIL',
         'message': xml_reporter._escape_xml_attr(str(err[1])),
@@ -1032,7 +1040,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(2)),
         'test_name': 'test_decommission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'notrun',
         'result': 'N/A',
         'properties': (
@@ -1045,7 +1056,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(4)),
         'test_name': 'test_commission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'run',
         'result': 'PASS',
     }
@@ -1053,7 +1067,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(6)),
         'test_name': 'test_decommission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'run',
         'result': 'PASS',
     }
@@ -1061,7 +1078,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(8)),
         'test_name': 'test_commission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'run',
         'result': 'PASS',
     }
@@ -1069,7 +1089,10 @@
         'run_time': 1,
         'start_time': re.escape(unit_test_utils.iso_timestamp(10)),
         'test_name': 'test_decommission',
-        'class_name': 'google3.java.com.google.assistant.verticals.homeautomation.partners.ui_automator.commission_reg_test.CommissionRegTest',
+        'class_name': (
+            'google3.java.com.google.assistant.verticals.homeautomation.'
+            'partners.ui_automator.commission_reg_test.CommissionRegTest'
+        ),
         'status': 'run',
         'result': 'FAIL',
         'message': xml_reporter._escape_xml_attr(str(err[1])),
@@ -1266,6 +1289,7 @@
     mock_load_snippet.assert_called_once()
     self.assertDictEqual(report_info, {})
 
+  @flagsaver.flagsaver((ui_automator._GOOGLE_ACCOUNT, _FAKE_GOOGLE_ACCOUNT))
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_is_device_exist_returns_true_when_device_exists(
       self, mock_get_all_instances
@@ -1274,6 +1298,9 @@
     self.mock_android_device.mbs.isDeviceExist.return_value = True
 
     self.assertTrue(self.ui_automator.is_device_exist(_FAKE_MATTER_DEVICE_NAME))
+    self.mock_android_device.mbs.isDeviceExist.assert_called_once_with(
+        _FAKE_MATTER_DEVICE_NAME, _FAKE_GOOGLE_ACCOUNT
+    )
 
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_is_device_exist_returns_false_when_device_does_not_exist(
diff --git a/ui_automator/version.py b/ui_automator/version.py
index 36b5370..79de502 100644
--- a/ui_automator/version.py
+++ b/ui_automator/version.py
@@ -17,6 +17,6 @@
 from typing import Optional
 
 
-_SEMANTIC_VERSION = "1.0.4"
+_SEMANTIC_VERSION = "1.0.5-rc.0"
 
 VERSION = _SEMANTIC_VERSION
