diff --git a/include/weave/provider/test/mock_config_store.h b/include/weave/provider/test/mock_config_store.h
index 01e1ef9..3873251 100644
--- a/include/weave/provider/test/mock_config_store.h
+++ b/include/weave/provider/test/mock_config_store.h
@@ -35,7 +35,10 @@
           return true;
         }));
     EXPECT_CALL(*this, LoadSettings())
-        .WillRepeatedly(Return(R"({"device_id": "TEST_DEVICE_ID"})"));
+        .WillRepeatedly(Return(R"({
+          "version": 1,
+          "device_id": "TEST_DEVICE_ID"
+        })"));
     EXPECT_CALL(*this, SaveSettings(_)).WillRepeatedly(Return());
   }
   MOCK_METHOD1(LoadDefaults, bool(Settings*));
diff --git a/src/base_api_handler_unittest.cc b/src/base_api_handler_unittest.cc
index 6f8460b..8b0f0b2 100644
--- a/src/base_api_handler_unittest.cc
+++ b/src/base_api_handler_unittest.cc
@@ -54,7 +54,6 @@
         .WillRepeatedly(
             Invoke(&component_manager_, &ComponentManager::AddCommandHandler));
 
-    config_.Load();
     dev_reg_.reset(new DeviceRegistrationInfo(&config_, &component_manager_,
                                               nullptr, &http_client_, nullptr,
                                               nullptr));
diff --git a/src/config.cc b/src/config.cc
index 442a87a..37e907c 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -85,7 +85,9 @@
     : EnumToStringMap(kRootClientTokenOwnerMap) {}
 
 Config::Config(provider::ConfigStore* config_store)
-    : settings_{CreateDefaultSettings()}, config_store_{config_store} {}
+    : settings_{CreateDefaultSettings()}, config_store_{config_store} {
+  Load();
+}
 
 void Config::AddOnChangedCallback(const OnChangedCallback& callback) {
   on_changed_.push_back(callback);
diff --git a/src/config.h b/src/config.h
index f5a8a77..6dc0a07 100644
--- a/src/config.h
+++ b/src/config.h
@@ -46,8 +46,6 @@
   void AddOnChangedCallback(const OnChangedCallback& callback);
   const Config::Settings& GetSettings() const;
 
-  void Load();
-
   // Allows editing of config. Makes sure that callbacks were called and changes
   // were saved.
   // User can commit changes by calling Commit method or by destroying the
@@ -120,6 +118,7 @@
   };
 
  private:
+  void Load();
   void Save();
 
   Settings settings_;
diff --git a/src/config_unittest.cc b/src/config_unittest.cc
index 1491d7b..0367516 100644
--- a/src/config_unittest.cc
+++ b/src/config_unittest.cc
@@ -25,12 +25,16 @@
   void SetUp() override {
     EXPECT_CALL(*this, OnConfigChanged(_))
         .Times(1);  // Called from AddOnChangedCallback
-    config_.AddOnChangedCallback(
-        base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
-    default_.Load();
+    Reload();
   }
 
-  const Config::Settings& GetSettings() const { return config_.GetSettings(); }
+  void Reload() {
+    config_.reset(new Config{&config_store_});
+    config_->AddOnChangedCallback(
+        base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
+  }
+
+  const Config::Settings& GetSettings() const { return config_->GetSettings(); }
 
   const Config::Settings& GetDefaultSettings() const {
     return default_.GetSettings();
@@ -39,7 +43,7 @@
   MOCK_METHOD1(OnConfigChanged, void(const Settings&));
 
   provider::test::MockConfigStore config_store_;
-  Config config_{&config_store_};
+  std::unique_ptr<Config> config_{new Config{nullptr}};
   Config default_{&config_store_};
 };
 
@@ -50,6 +54,7 @@
 }
 
 TEST_F(ConfigTest, Defaults) {
+  config_.reset(new Config{nullptr});
   EXPECT_EQ("", GetSettings().client_id);
   EXPECT_EQ("", GetSettings().client_secret);
   EXPECT_EQ("", GetSettings().api_key);
@@ -87,7 +92,7 @@
   })"));
 
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
-  config_.Load();
+  Reload();
 
   EXPECT_EQ("state_device_id", GetSettings().cloud_id);
   EXPECT_FALSE(GetSettings().device_id.empty());
@@ -100,7 +105,7 @@
   })"));
 
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
-  config_.Load();
+  Reload();
 
   EXPECT_EQ("state_cloud_id", GetSettings().cloud_id);
   EXPECT_EQ("state_device_id", GetSettings().device_id);
@@ -131,7 +136,7 @@
   EXPECT_CALL(config_store_, LoadSettings()).WillOnce(Return(state));
 
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
-  config_.Load();
+  Reload();
 
   EXPECT_EQ("state_client_id", GetSettings().client_id);
   EXPECT_EQ("state_client_secret", GetSettings().client_secret);
@@ -166,7 +171,7 @@
 }
 
 TEST_F(ConfigTest, Setters) {
-  Config::Transaction change{&config_};
+  Config::Transaction change{config_.get()};
 
   change.set_client_id("set_client_id");
   EXPECT_EQ("set_client_id", GetSettings().client_id);
diff --git a/src/device_manager.cc b/src/device_manager.cc
index ab2e225..67a2c86 100644
--- a/src/device_manager.cc
+++ b/src/device_manager.cc
@@ -30,8 +30,6 @@
                              provider::Bluetooth* bluetooth)
     : config_{new Config{config_store}},
       component_manager_{new ComponentManagerImpl} {
-  config_->Load();
-
   if (http_server) {
     auth_manager_.reset(new privet::AuthManager(
         config_.get(), http_server->GetHttpsCertificateFingerprint()));
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index e21a147..ea81057 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -126,10 +126,6 @@
   void SetUp() override {
     EXPECT_CALL(clock_, Now())
         .WillRepeatedly(Return(base::Time::FromTimeT(1450000000)));
-    dev_reg_.reset(new DeviceRegistrationInfo{&config_, &component_manager_,
-                                              &task_runner_, &http_client_,
-                                              nullptr, &auth_});
-
     ReloadDefaults();
   }
 
@@ -150,7 +146,10 @@
           settings->service_url = test_data::kServiceURL;
           return true;
         }));
-    config_.Load();
+    config_.reset(new Config{&config_store_});
+    dev_reg_.reset(new DeviceRegistrationInfo{
+        config_.get(), &component_manager_, &task_runner_, &http_client_,
+        nullptr, &auth_});
     dev_reg_->Start();
   }
 
@@ -196,7 +195,7 @@
   provider::test::MockConfigStore config_store_;
   StrictMock<MockHttpClient> http_client_;
   base::DictionaryValue data_;
-  Config config_{&config_store_};
+  std::unique_ptr<Config> config_;
   test::MockClock clock_;
   privet::AuthManager auth_{
       {68, 52, 36, 95, 74, 89, 25, 2, 31, 5, 65, 87, 64, 32, 17, 26, 8, 73, 57,
