diff --git a/common/http_fetcher_unittest.cc b/common/http_fetcher_unittest.cc
index 654cb1d..17e360e 100644
--- a/common/http_fetcher_unittest.cc
+++ b/common/http_fetcher_unittest.cc
@@ -24,6 +24,7 @@
 #include <utility>
 #include <vector>
 
+#include <base/bind.h>
 #include <base/location.h>
 #include <base/logging.h>
 #include <base/message_loop/message_loop.h>
@@ -31,6 +32,7 @@
 #include <base/strings/string_util.h>
 #include <base/strings/stringprintf.h>
 #include <base/time/time.h>
+#include <brillo/bind_lambda.h>
 #include <brillo/message_loops/base_message_loop.h>
 #include <brillo/message_loops/message_loop.h>
 #include <brillo/message_loops/message_loop_utils.h>
@@ -46,7 +48,6 @@
 #include "update_engine/common/multi_range_http_fetcher.h"
 #include "update_engine/common/test_utils.h"
 #include "update_engine/common/utils.h"
-#include "update_engine/fake_system_state.h"
 #include "update_engine/proxy_resolver.h"
 
 using brillo::MessageLoop;
@@ -214,12 +215,12 @@
   virtual HttpServer* CreateServer() = 0;
 
   FakeHardware* fake_hardware() {
-    return fake_system_state_.fake_hardware();
+    return &fake_hardware_;
   }
 
  protected:
   DirectProxyResolver proxy_resolver_;
-  FakeSystemState fake_system_state_;
+  FakeHardware fake_hardware_;
 };
 
 class MockHttpFetcherTest : public AnyHttpFetcherTest {
@@ -264,11 +265,11 @@
     proxy_resolver_.set_num_proxies(num_proxies);
     LibcurlHttpFetcher *ret = new
         LibcurlHttpFetcher(reinterpret_cast<ProxyResolver*>(&proxy_resolver_),
-                           &fake_system_state_);
+                           &fake_hardware_);
     // Speed up test execution.
     ret->set_idle_seconds(1);
     ret->set_retry_seconds(1);
-    fake_system_state_.fake_hardware()->SetIsOfficialBuild(false);
+    fake_hardware_.SetIsOfficialBuild(false);
     return ret;
   }
 
@@ -313,13 +314,13 @@
         reinterpret_cast<ProxyResolver*>(&proxy_resolver_);
     MultiRangeHttpFetcher *ret =
         new MultiRangeHttpFetcher(
-            new LibcurlHttpFetcher(resolver, &fake_system_state_));
+            new LibcurlHttpFetcher(resolver, &fake_hardware_));
     ret->ClearRanges();
     ret->AddRange(0);
     // Speed up test execution.
     ret->set_idle_seconds(1);
     ret->set_retry_seconds(1);
-    fake_system_state_.fake_hardware()->SetIsOfficialBuild(false);
+    fake_hardware_.SetIsOfficialBuild(false);
     return ret;
   }
 
diff --git a/common/libcurl_http_fetcher.cc b/common/libcurl_http_fetcher.cc
index 5a248e6..51643a4 100644
--- a/common/libcurl_http_fetcher.cc
+++ b/common/libcurl_http_fetcher.cc
@@ -29,7 +29,6 @@
 #include "update_engine/common/certificate_checker.h"
 #include "update_engine/common/hardware_interface.h"
 #include "update_engine/common/platform_constants.h"
-#include "update_engine/system_state.h"
 
 using base::TimeDelta;
 using brillo::MessageLoop;
@@ -47,11 +46,11 @@
 
 LibcurlHttpFetcher::LibcurlHttpFetcher(
     ProxyResolver* proxy_resolver,
-    SystemState* system_state,
+    HardwareInterface* hardware,
     std::unique_ptr<CertificateChecker> certificate_checker)
-    : HttpFetcher(proxy_resolver),
-      hardware_(system_state->hardware()),
-      certificate_checker_(std::move(certificate_checker)) {
+  : HttpFetcher(proxy_resolver),
+    hardware_(hardware),
+    certificate_checker_(std::move(certificate_checker)) {
   // Dev users want a longer timeout (180 seconds) because they may
   // be waiting on the dev server to build an image.
   if (!hardware_->IsOfficialBuild())
diff --git a/common/libcurl_http_fetcher.h b/common/libcurl_http_fetcher.h
index 9e8abda..df0a7be 100644
--- a/common/libcurl_http_fetcher.h
+++ b/common/libcurl_http_fetcher.h
@@ -31,7 +31,6 @@
 #include "update_engine/common/certificate_checker.h"
 #include "update_engine/common/hardware_interface.h"
 #include "update_engine/common/http_fetcher.h"
-#include "update_engine/system_state.h"
 
 // This is a concrete implementation of HttpFetcher that uses libcurl to do the
 // http work.
@@ -41,10 +40,11 @@
 class LibcurlHttpFetcher : public HttpFetcher {
  public:
   LibcurlHttpFetcher(ProxyResolver* proxy_resolver,
-                     SystemState* system_state,
+                     HardwareInterface* hardware,
                      std::unique_ptr<CertificateChecker> certificate_checker);
-  LibcurlHttpFetcher(ProxyResolver* proxy_resolver, SystemState* system_state)
-      : LibcurlHttpFetcher(proxy_resolver, system_state, nullptr) {}
+  LibcurlHttpFetcher(ProxyResolver* proxy_resolver,
+                     HardwareInterface* hardware)
+      : LibcurlHttpFetcher(proxy_resolver, hardware, nullptr) {}
 
   // Cleans up all internal state. Does not notify delegate
   ~LibcurlHttpFetcher() override;
