diff --git a/teeth_agent/base.py b/teeth_agent/base.py
index 91831922c..af3fca590 100644
--- a/teeth_agent/base.py
+++ b/teeth_agent/base.py
@@ -102,10 +102,12 @@ class AsyncCommandResult(BaseCommandResult):
             return super(AsyncCommandResult, self).serialize(view)
 
     def start(self):
-        return self.execution_thread.start()
+        self.execution_thread.start()
+        return self
 
     def join(self):
-        return self.execution_thread.join()
+        self.execution_thread.join()
+        return self
 
     def run(self):
         try:
diff --git a/teeth_agent/standby.py b/teeth_agent/standby.py
index 3e1a7b790..3f53de5c1 100644
--- a/teeth_agent/standby.py
+++ b/teeth_agent/standby.py
@@ -18,6 +18,12 @@ from teeth_agent import base
 from teeth_agent import errors
 
 
+class CacheImagesCommand(base.AsyncCommandResult):
+    def execute(self):
+        # TODO(russellhaering): Actually cache images
+        pass
+
+
 class StandbyAgent(base.BaseTeethAgent):
     def __init__(self, listen_host, listen_port, api_url):
         super(StandbyAgent, self).__init__(listen_host,
@@ -51,4 +57,4 @@ class StandbyAgent(base.BaseTeethAgent):
         for image_info in image_infos:
             self._validate_image_info(image_info)
 
-        # TODO(russellhaering): Actually cache images
+        return CacheImagesCommand(command_name, image_infos).start()