diff --git a/server/cros/update_engine/update_engine_test.py b/server/cros/update_engine/update_engine_test.py
index 94cf613..96b5817 100644
--- a/server/cros/update_engine/update_engine_test.py
+++ b/server/cros/update_engine/update_engine_test.py
@@ -636,3 +636,31 @@
         logging.info('Payload URL for Nebraska: %s', payload_url)
         return payload_url
 
+
+    def update_device_without_cros_au_rpc(self, cros_device, payload_uri,
+                                          clobber_stateful=False, tag='source'):
+        """
+        Updates the device.
+
+        Used by autoupdate_EndToEndTest and autoupdate_StatefulCompatibility,
+        which use auto_updater to perform updates.
+
+        @param cros_device: The device to be updated.
+        @param payload_uri: The payload with which the device should be updated.
+        @param clobber_stateful: Boolean that determines whether the stateful
+                                 of the device should be force updated. By
+                                 default, set to False
+        @param tag: An identifier string added to each log filename.
+
+        @raise error.TestFail if anything goes wrong with the update.
+
+        """
+        try:
+            cros_device.install_version_without_cros_au_rpc(
+                payload_uri, clobber_stateful=clobber_stateful)
+        except Exception as e:
+            logging.exception('ERROR: Failed to update device.')
+            raise error.TestFail(str(e))
+        finally:
+            self._copy_generated_nebraska_logs(
+                cros_device.cros_updater.request_logs_dir, tag)
diff --git a/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py b/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
index 37bb9ea..f67d73d 100755
--- a/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
+++ b/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
@@ -74,31 +74,6 @@
         raise error.TestFail('Could not find %s' % filename)
 
 
-    def update_device_without_cros_au_rpc(self, cros_device, payload_uri,
-                                          clobber_stateful=False, tag='source'):
-        """Updates the device.
-
-        @param cros_device: The device to be updated.
-        @param payload_uri: The payload with which the device should be updated.
-        @param clobber_stateful: Boolean that determines whether the stateful
-                                 of the device should be force updated. By
-                                 default, set to False
-        @param tag: An identifier string added to each log filename.
-
-        @raise error.TestFail if anything goes wrong with the update.
-
-        """
-        try:
-            cros_device.install_version_without_cros_au_rpc(
-                payload_uri, clobber_stateful=clobber_stateful)
-        except Exception as e:
-            logging.exception('ERROR: Failed to update device.')
-            raise error.TestFail(str(e))
-        finally:
-            self._copy_generated_nebraska_logs(
-                cros_device.cros_updater.request_logs_dir, tag)
-
-
     def run_update_test(self, cros_device, test_conf):
         """Runs the update test and checks it succeeded.
 
diff --git a/server/site_tests/autoupdate_StatefulCompatibility/autoupdate_StatefulCompatibility.py b/server/site_tests/autoupdate_StatefulCompatibility/autoupdate_StatefulCompatibility.py
index 631d69f..31a00bf 100755
--- a/server/site_tests/autoupdate_StatefulCompatibility/autoupdate_StatefulCompatibility.py
+++ b/server/site_tests/autoupdate_StatefulCompatibility/autoupdate_StatefulCompatibility.py
@@ -241,15 +241,6 @@
         return metadata['tags']['status'] == 'pass'
 
 
-    def _stage_payloads_onto_devserver(self):
-        """Stages payloads that will be used by the test onto the devserver."""
-        logging.info('Staging images onto autotest devserver (%s)',
-                     self._autotest_devserver.url())
-
-        self._stage_payloads(self._source_payload_uri, None)
-        self._stage_payloads(self._target_payload_uri, None)
-
-
     def run_once(self, test_conf, max_image_checks):
         """Main entry point of the test."""
         logging.debug("Using test_conf: %s", test_conf)
@@ -270,7 +261,8 @@
         self._autotest_devserver = self._get_devserver_for_test(
             {'target_payload_uri': self._target_payload_uri})
 
-        self._stage_payloads_onto_devserver()
+        self._stage_payloads(self._source_payload_uri, None)
+        self._stage_payloads(self._target_payload_uri, None)
 
         # Get an object representing the CrOS DUT.
         cros_device = chromiumos_test_platform.ChromiumOSTestPlatform(
@@ -278,11 +270,13 @@
 
         if self._source_payload_uri is not None:
             logging.debug('Going to install source image on DUT.')
-            cros_device.install_source_image(self._source_payload_uri)
+            self.update_device_without_cros_au_rpc(
+                cros_device, self._source_payload_uri, clobber_stateful=True)
             self._run_client_test_and_check_result(self._LOGIN_TEST,
                                                    tag='source')
 
         logging.debug('Going to install target image on DUT.')
-        cros_device.install_target_image(self._target_payload_uri)
+        self.update_device_without_cros_au_rpc(
+            cros_device, self._target_payload_uri, tag='target')
 
         self._run_client_test_and_check_result(self._LOGIN_TEST, tag='target')
