diff --git a/libweave/examples/ubuntu/file_config_store.cc b/libweave/examples/ubuntu/file_config_store.cc
index 44f5c86..49fa907 100644
--- a/libweave/examples/ubuntu/file_config_store.cc
+++ b/libweave/examples/ubuntu/file_config_store.cc
@@ -34,6 +34,9 @@
   settings->model_id = "AAAAA";
   settings->pairing_modes = {PairingType::kEmbeddedCode};
   settings->embedded_code = "0000";
+  settings->client_id = "58855907228.apps.googleusercontent.com";
+  settings->client_secret = "eHSAREAHrIqPsHBxCE9zPPBi";
+  settings->api_key = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA";
   return true;
 }
 
diff --git a/libweave/include/weave/provider/test/mock_config_store.h b/libweave/include/weave/provider/test/mock_config_store.h
index 7bc0db7..c433c2e 100644
--- a/libweave/include/weave/provider/test/mock_config_store.h
+++ b/libweave/include/weave/provider/test/mock_config_store.h
@@ -22,7 +22,18 @@
     using testing::_;
     using testing::Return;
 
-    EXPECT_CALL(*this, LoadDefaults(_)).WillRepeatedly(Return(true));
+    EXPECT_CALL(*this, LoadDefaults(_))
+        .WillRepeatedly(testing::Invoke([](Settings* settings) {
+          settings->firmware_version = "TEST_FIRMWARE";
+          settings->oem_name = "TEST_OEM";
+          settings->model_name = "TEST_MODEL";
+          settings->model_id = "ABCDE";
+          settings->name = "TEST_NAME";
+          settings->client_id = "TEST_CLIENT_ID";
+          settings->client_secret = "TEST_CLIENT_SECRET";
+          settings->api_key = "TEST_API_KEY";
+          return true;
+        }));
     EXPECT_CALL(*this, LoadSettings()).WillRepeatedly(Return(""));
     EXPECT_CALL(*this, SaveSettings(_)).WillRepeatedly(Return());
     EXPECT_CALL(*this, OnSettingsChanged(_)).WillRepeatedly(Return());
diff --git a/libweave/platform2.gyp b/libweave/platform2.gyp
index 6b1f046..41b9fd5 100644
--- a/libweave/platform2.gyp
+++ b/libweave/platform2.gyp
@@ -10,7 +10,7 @@
       ],
     },
     'include_dirs': [
-      '<(platform2_root)/../weave/libweave',
+      '<(platform2_root)/../weave/libweave/libweave',
       '<(platform2_root)/../weave/libweave/libweave/include',
       '<(platform2_root)/../weave/libweave/libweave/third_party/modp_b64/modp_b64/',
     ],
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 2a3613a..44c4825 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -27,12 +27,6 @@
 class BaseApiHandlerTest : public ::testing::Test {
  protected:
   void SetUp() override {
-    EXPECT_CALL(config_store_, LoadDefaults(_))
-        .WillOnce(Invoke([](Settings* settings) {
-          settings->firmware_version = "123123";
-          return true;
-        }));
-
     EXPECT_CALL(mock_state_change_queue_, NotifyPropertiesUpdated(_, _))
         .WillRepeatedly(Return(true));
 
@@ -131,7 +125,7 @@
 
   auto expected = R"({
     'base': {
-      'firmwareVersion': '123123',
+      'firmwareVersion': 'TEST_FIRMWARE',
       'localAnonymousAccessMaxRole': 'none',
       'localDiscoveryEnabled': false,
       'localPairingEnabled': false,
@@ -153,7 +147,7 @@
   EXPECT_TRUE(settings.local_pairing_enabled);
   expected = R"({
     'base': {
-      'firmwareVersion': '123123',
+      'firmwareVersion': 'TEST_FIRMWARE',
       'localAnonymousAccessMaxRole': 'user',
       'localDiscoveryEnabled': true,
       'localPairingEnabled': true,
@@ -168,7 +162,7 @@
   }
   expected = R"({
     'base': {
-      'firmwareVersion': '123123',
+      'firmwareVersion': 'TEST_FIRMWARE',
       'localAnonymousAccessMaxRole': 'viewer',
       'localDiscoveryEnabled': true,
       'localPairingEnabled': true,
diff --git a/libweave/src/config.cc b/libweave/src/config.cc
index 2567f61..5370ec0 100644
--- a/libweave/src/config.cc
+++ b/libweave/src/config.cc
@@ -49,18 +49,11 @@
 
 Settings CreateDefaultSettings() {
   Settings result;
-  result.client_id = "58855907228.apps.googleusercontent.com";
-  result.client_secret = "eHSAREAHrIqPsHBxCE9zPPBi";
-  result.api_key = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA";
   result.oauth_url = "https://accounts.google.com/o/oauth2/";
   result.service_url = "https://www.googleapis.com/clouddevices/v1/";
-  result.name = "Developer device";
   result.local_anonymous_access_role = "viewer";
   result.local_discovery_enabled = true;
   result.local_pairing_enabled = true;
-  result.oem_name = "Chromium";
-  result.model_name = "Brillo";
-  result.model_id = "AAAAA";
   result.polling_period = base::TimeDelta::FromSeconds(7);
   result.backup_polling_period = base::TimeDelta::FromMinutes(30);
   result.wifi_auto_setup_enabled = true;
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc
index 9f08b18..fd6b8d3 100644
--- a/libweave/src/config_unittest.cc
+++ b/libweave/src/config_unittest.cc
@@ -24,20 +24,20 @@
   void SetUp() override {
     EXPECT_CALL(*this, OnConfigChanged(_))
         .Times(1);  // Called from AddOnChangedCallback
-    config_.reset(new Config{&config_store_});
-    config_->AddOnChangedCallback(
+    config_.AddOnChangedCallback(
         base::Bind(&ConfigTest::OnConfigChanged, base::Unretained(this)));
+    default_.Load();
   }
 
-  const Settings& GetSettings() const { return config_->GetSettings(); }
+  const Settings& GetSettings() const { return config_.GetSettings(); }
 
   const Settings& GetDefaultSettings() const { return default_.GetSettings(); }
 
   MOCK_METHOD1(OnConfigChanged, void(const Settings&));
 
   provider::test::MockConfigStore config_store_;
-  std::unique_ptr<Config> config_;
-  const Config default_{nullptr};
+  Config config_{&config_store_};
+  Config default_{&config_store_};
 };
 
 TEST_F(ConfigTest, NoStorage) {
@@ -47,15 +47,15 @@
 }
 
 TEST_F(ConfigTest, Defaults) {
-  EXPECT_EQ("58855907228.apps.googleusercontent.com", GetSettings().client_id);
-  EXPECT_EQ("eHSAREAHrIqPsHBxCE9zPPBi", GetSettings().client_secret);
-  EXPECT_EQ("AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA", GetSettings().api_key);
+  EXPECT_EQ("", GetSettings().client_id);
+  EXPECT_EQ("", GetSettings().client_secret);
+  EXPECT_EQ("", GetSettings().api_key);
   EXPECT_EQ("https://accounts.google.com/o/oauth2/", GetSettings().oauth_url);
   EXPECT_EQ("https://www.googleapis.com/clouddevices/v1/",
             GetSettings().service_url);
-  EXPECT_EQ("Chromium", GetSettings().oem_name);
-  EXPECT_EQ("Brillo", GetSettings().model_name);
-  EXPECT_EQ("AAAAA", GetSettings().model_id);
+  EXPECT_EQ("", GetSettings().oem_name);
+  EXPECT_EQ("", GetSettings().model_name);
+  EXPECT_EQ("", GetSettings().model_id);
   EXPECT_EQ("", GetSettings().firmware_version);
   EXPECT_EQ(base::TimeDelta::FromSeconds(7), GetSettings().polling_period);
   EXPECT_EQ(base::TimeDelta::FromMinutes(30),
@@ -65,7 +65,7 @@
   EXPECT_EQ(std::set<PairingType>{PairingType::kPinCode},
             GetSettings().pairing_modes);
   EXPECT_EQ("", GetSettings().embedded_code);
-  EXPECT_EQ("Developer device", GetSettings().name);
+  EXPECT_EQ("", GetSettings().name);
   EXPECT_EQ("", GetSettings().description);
   EXPECT_EQ("", GetSettings().location);
   EXPECT_EQ("viewer", GetSettings().local_anonymous_access_role);
@@ -100,7 +100,7 @@
   EXPECT_CALL(config_store_, LoadSettings()).WillOnce(Return(state));
 
   EXPECT_CALL(*this, OnConfigChanged(_)).Times(1);
-  config_->Load();
+  config_.Load();
 
   EXPECT_EQ("state_client_id", GetSettings().client_id);
   EXPECT_EQ("state_client_secret", GetSettings().client_secret);
@@ -133,7 +133,7 @@
 }
 
 TEST_F(ConfigTest, Setters) {
-  Config::Transaction change{config_.get()};
+  Config::Transaction change{&config_};
 
   change.set_client_id("set_client_id");
   EXPECT_EQ("set_client_id", GetSettings().client_id);
diff --git a/libweave/src/device_registration_info_unittest.cc b/libweave/src/device_registration_info_unittest.cc
index 44d432c..947ba10 100644
--- a/libweave/src/device_registration_info_unittest.cc
+++ b/libweave/src/device_registration_info_unittest.cc
@@ -135,6 +135,8 @@
           settings->client_id = test_data::kClientId;
           settings->client_secret = test_data::kClientSecret;
           settings->api_key = test_data::kApiKey;
+          settings->oem_name = "Coffee Pot Maker";
+          settings->model_name = "Pot v1";
           settings->name = "Coffee Pot";
           settings->description = "Easy to clean";
           settings->location = "Kitchen";
diff --git a/libweave/src/test/fake_task_runner.cc b/libweave/src/test/fake_task_runner.cc
index 8ba3b4c..4026880 100644
--- a/libweave/src/test/fake_task_runner.cc
+++ b/libweave/src/test/fake_task_runner.cc
@@ -34,7 +34,7 @@
 
 void FakeTaskRunner::Run() {
   break_ = false;
-  while (!break_ && RunOnce()) {
+  for (size_t i = 0; i < 1000 && !break_ && RunOnce(); ++i) {
   }
 }
 
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index 4361906..d42a839 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -93,7 +93,7 @@
   "deviceKind": "vendor",
   "modelManifestId": "ABCDE",
   "systemName": "",
-  "name": "DEVICE_NAME",
+  "name": "TEST_NAME",
   "displayName": "",
   "description": "Developer device",
   "stateValidationEnabled": true,
@@ -190,16 +190,6 @@
   }
 
   void InitConfigStore() {
-    EXPECT_CALL(config_store_, LoadDefaults(_))
-        .WillOnce(Invoke([](weave::Settings* settings) {
-          settings->api_key = "API_KEY";
-          settings->client_secret = "CLIENT_SECRET";
-          settings->client_id = "CLIENT_ID";
-          settings->firmware_version = "FIRMWARE_VERSION";
-          settings->name = "DEVICE_NAME";
-          settings->model_id = "ABCDE";
-          return true;
-        }));
     EXPECT_CALL(config_store_, SaveSettings("")).WillRepeatedly(Return());
 
     EXPECT_CALL(config_store_, LoadBaseCommandDefs())
@@ -242,7 +232,7 @@
   void InitDnsSdPublishing(bool registered, const std::string& flags) {
     std::vector<std::string> txt{{"id=TEST_ID"}, {"flags=" + flags},
                                  {"mmid=ABCDE"}, {"services=_base"},
-                                 {"txtvers=3"},  {"ty=DEVICE_NAME"}};
+                                 {"txtvers=3"},  {"ty=TEST_NAME"}};
     if (registered) {
       txt.push_back("gcd_id=DEVICE_ID");
 
@@ -281,7 +271,7 @@
   void InitDefaultExpectations() {
     InitConfigStore();
     InitNetwork();
-    EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("DEVICE_NAME.*prv")))
+    EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("TEST_NAME.*prv")))
         .WillOnce(Return());
     InitHttpServer();
     InitDnsSd();
@@ -393,7 +383,7 @@
   ExpectRequest(
       "PATCH",
       "https://www.googleapis.com/clouddevices/v1/registrationTickets/"
-      "TEST_ID?key=API_KEY",
+      "TEST_ID?key=TEST_API_KEY",
       ValueToString(*response));
 
   response = CreateDictionaryValue(kRegistrationFinalResponse);
@@ -401,7 +391,7 @@
   ExpectRequest(
       "POST",
       "https://www.googleapis.com/clouddevices/v1/registrationTickets/"
-      "TEST_ID/finalize?key=API_KEY",
+      "TEST_ID/finalize?key=TEST_API_KEY",
       ValueToString(*response));
 
   ExpectRequest("POST", "https://accounts.google.com/o/oauth2/token",
@@ -439,7 +429,7 @@
   // Long disconnect.
   NotifyNetworkChanged(Network::State::kOffline, {});
   auto offline_from = task_runner_.GetClock()->Now();
-  EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("DEVICE_NAME.*prv")))
+  EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("TEST_NAME.*prv")))
       .WillOnce(InvokeWithoutArgs([this, offline_from]() {
         EXPECT_GT(task_runner_.GetClock()->Now() - offline_from,
                   base::TimeDelta::FromMinutes(1));
@@ -461,7 +451,7 @@
   for (int i = 0; i < 5; ++i) {
     auto offline_from = task_runner_.GetClock()->Now();
     // Temporarily offline mode.
-    EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("DEVICE_NAME.*prv")))
+    EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("TEST_NAME.*prv")))
         .WillOnce(InvokeWithoutArgs([this, &offline_from]() {
           EXPECT_GT(task_runner_.GetClock()->Now() - offline_from,
                     base::TimeDelta::FromMinutes(1));
@@ -491,7 +481,7 @@
       .WillRepeatedly(Return(Network::State::kOffline));
 
   auto offline_from = task_runner_.GetClock()->Now();
-  EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("DEVICE_NAME.*prv")))
+  EXPECT_CALL(wifi_, StartAccessPoint(MatchesRegex("TEST_NAME.*prv")))
       .WillOnce(InvokeWithoutArgs([this, &offline_from]() {
         EXPECT_GT(task_runner_.GetClock()->Now() - offline_from,
                   base::TimeDelta::FromMinutes(1));
