diff --git a/libweave/examples/ubuntu/build.sh b/libweave/examples/ubuntu/build.sh
index ea7499f..ae8148c 100755
--- a/libweave/examples/ubuntu/build.sh
+++ b/libweave/examples/ubuntu/build.sh
@@ -23,6 +23,6 @@
 ninja -j $CORES -C out/${BUILD_CONFIG} $BUILD_TARGET || exit 1
 
 if [[ $BUILD_TARGET == *"libweave_testrunner"* ]]; then
-  out/${BUILD_CONFIG}/libweave_testrunner || exit 1
-  out/${BUILD_CONFIG}/libweave_exports_testrunner || exit 1
+  out/${BUILD_CONFIG}/libweave_testrunner --gtest_break_on_failure || exit 1
+  out/${BUILD_CONFIG}/libweave_exports_testrunner --gtest_break_on_failure || exit 1
 fi
diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index b53e6c5..12a00d7 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -34,12 +34,7 @@
 class CommandHandler {
  public:
   explicit CommandHandler(weave::Device* device) : device_{device} {
-    device->AddCommandDefinitions(R"({
-      "base": {
-        "updateBaseConfiguration": {},
-        "identify": {},
-        "updateDeviceInfo": {}
-      },
+    device->AddCommandDefinitionsFromJson(R"({
       "_greeter": {
         "_greet": {
           "minimalRole": "user",
@@ -62,16 +57,16 @@
       }
     })");
 
-    device->AddStateDefinitions(R"({
+    device->AddStateDefinitionsFromJson(R"({
       "_greeter": {"_greetings_counter":"integer"},
       "_ledflasher": {"_leds": {"items": "boolean"}}
     })");
 
-    device->SetState(R"({
+    device->SetStateFromJson(R"({
       "_greeter": {"_greetings_counter": 0},
     "_ledflasher":{"_leds": [false, false, false]}
     })",
-                     nullptr);
+                             nullptr);
 
     device->AddCommandHandler("_greeter._greet",
                               base::Bind(&CommandHandler::OnGreetCommand,
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index c673fcb..eacd959 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -48,7 +48,7 @@
   // Adds provided commands definitions. Can be called multiple times with
   // condition that definitions do not conflict.
   // Invalid value is fatal.
-  virtual void AddCommandDefinitions(const std::string& json) = 0;
+  virtual void AddCommandDefinitionsFromJson(const std::string& json) = 0;
   virtual void AddCommandDefinitions(const base::DictionaryValue& dict) = 0;
 
   // Callback type for AddCommandHandler.
@@ -78,13 +78,13 @@
   // Adds provided state definitions. Can be called multiple times with
   // condition that definitions do not conflict.
   // Invalid value is fatal.
-  virtual void AddStateDefinitions(const std::string& json) = 0;
+  virtual void AddStateDefinitionsFromJson(const std::string& json) = 0;
   virtual void AddStateDefinitions(const base::DictionaryValue& dict) = 0;
 
   // Updates multiple properties of the state.
   // It's recommended to call this to initialize state defined by
   // AddStateDefinitions.
-  virtual bool SetState(const std::string& json, ErrorPtr* error) = 0;
+  virtual bool SetStateFromJson(const std::string& json, ErrorPtr* error) = 0;
   virtual bool SetState(const base::DictionaryValue& dict, ErrorPtr* error) = 0;
 
   // Returns value of the single property.
diff --git a/libweave/include/weave/test/mock_device.h b/libweave/include/weave/test/mock_device.h
index de6f01c..98fc6c2 100644
--- a/libweave/include/weave/test/mock_device.h
+++ b/libweave/include/weave/test/mock_device.h
@@ -21,7 +21,7 @@
   MOCK_CONST_METHOD0(GetSettings, const Settings&());
   MOCK_METHOD1(AddSettingsChangedCallback,
                void(const SettingsChangedCallback& callback));
-  MOCK_METHOD1(AddCommandDefinitions, void(const std::string&));
+  MOCK_METHOD1(AddCommandDefinitionsFromJson, void(const std::string&));
   MOCK_METHOD1(AddCommandDefinitions, void(const base::DictionaryValue&));
   MOCK_METHOD2(AddCommandHandler,
                void(const std::string&, const CommandHandlerCallback&));
@@ -29,9 +29,9 @@
                bool(const base::DictionaryValue&, std::string*, ErrorPtr*));
   MOCK_METHOD1(FindCommand, Command*(const std::string&));
   MOCK_METHOD1(AddStateChangedCallback, void(const base::Closure& callback));
-  MOCK_METHOD1(AddStateDefinitions, void(const std::string&));
+  MOCK_METHOD1(AddStateDefinitionsFromJson, void(const std::string&));
   MOCK_METHOD1(AddStateDefinitions, void(const base::DictionaryValue&));
-  MOCK_METHOD2(SetState, bool(const std::string&, ErrorPtr*));
+  MOCK_METHOD2(SetStateFromJson, bool(const std::string&, ErrorPtr*));
   MOCK_METHOD2(SetState, bool(const base::DictionaryValue&, ErrorPtr*));
   MOCK_CONST_METHOD1(MockGetStateProperty,
                      base::Value*(const std::string& name));
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index e63d8cb..8b6bf05 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -30,6 +30,13 @@
                                       settings.firmware_version);
   CHECK(device_->SetStateProperties(state, nullptr));
 
+  device->AddCommandDefinitionsFromJson(R"({
+    "base": {
+      "updateBaseConfiguration": {},
+      "updateDeviceInfo": {}
+    }
+  })");
+
   device_->AddCommandHandler(
       "base.updateBaseConfiguration",
       base::Bind(&BaseApiHandler::UpdateBaseConfiguration,
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 8d30619..8de1169 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -34,75 +34,25 @@
         .WillRepeatedly(Return(true));
 
     command_manager_ = std::make_shared<CommandManager>();
+    command_manager_->Startup();
+
     state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
+    state_manager_->Startup();
 
     EXPECT_CALL(device_, SetStateProperties(_, _))
         .WillRepeatedly(
             Invoke(state_manager_.get(), &StateManager::SetProperties));
+    EXPECT_CALL(device_, AddCommandDefinitionsFromJson(_))
+        .WillRepeatedly(Invoke([this](const std::string& json) {
+          EXPECT_TRUE(command_manager_->LoadCommands(json, nullptr));
+        }));
+
     EXPECT_CALL(device_, AddCommandHandler(AnyOf("base.updateBaseConfiguration",
                                                  "base.updateDeviceInfo"),
                                            _))
         .WillRepeatedly(
             Invoke(command_manager_.get(), &CommandManager::AddCommandHandler));
 
-    auto state_definition = test::CreateDictionaryValue(R"({
-      'base': {
-        'firmwareVersion': 'string',
-        'localDiscoveryEnabled': 'boolean',
-        'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
-        'localPairingEnabled': 'boolean',
-        'network': {
-          'properties': {
-            'name': 'string'
-          }
-        }
-      }
-    })");
-    auto state_defaults = test::CreateDictionaryValue(R"({
-      'base': {
-        'firmwareVersion': '123123',
-        'localDiscoveryEnabled': false,
-        'localAnonymousAccessMaxRole': 'none',
-        'localPairingEnabled': false
-      }
-    })");
-    ASSERT_TRUE(
-        state_manager_->LoadStateDefinition(*state_definition, nullptr));
-    ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
-
-    auto base_commands = test::CreateDictionaryValue(R"({
-      'base': {
-        'updateBaseConfiguration': {
-          'parameters': {
-            'localDiscoveryEnabled': 'boolean',
-            'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
-            'localPairingEnabled': 'boolean'
-           },
-           'results': {}
-        },
-        'updateDeviceInfo': {
-          'parameters': {
-            'description': 'string',
-            'name': {
-              'type': 'string',
-              'minLength': 1
-            },
-            'location': 'string'
-          },
-          'results': {}
-        }
-      }
-    })");
-    EXPECT_TRUE(command_manager_->LoadBaseCommands(*base_commands, nullptr));
-
-    auto handled_commands = test::CreateDictionaryValue(R"({
-      'base': {
-        'updateBaseConfiguration': {},
-        'updateDeviceInfo': {}
-      }
-    })");
-    EXPECT_TRUE(command_manager_->LoadCommands(*handled_commands, nullptr));
-
     std::unique_ptr<Config> config{new Config{&config_store_}};
     config->Load();
     dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_,
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 865825f..0f81a2e 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -92,7 +92,7 @@
   device_info_->AddGcdStateChangedCallback(callback);
 }
 
-void DeviceManager::AddCommandDefinitions(const std::string& json) {
+void DeviceManager::AddCommandDefinitionsFromJson(const std::string& json) {
   CHECK(command_manager_->LoadCommands(json, nullptr));
 }
 
@@ -119,7 +119,7 @@
   state_manager_->AddChangedCallback(callback);
 }
 
-void DeviceManager::AddStateDefinitions(const std::string& json) {
+void DeviceManager::AddStateDefinitionsFromJson(const std::string& json) {
   CHECK(state_manager_->LoadStateDefinition(json, nullptr));
 }
 
@@ -127,7 +127,7 @@
   CHECK(state_manager_->LoadStateDefinition(dict, nullptr));
 }
 
-bool DeviceManager::SetState(const std::string& json, ErrorPtr* error) {
+bool DeviceManager::SetStateFromJson(const std::string& json, ErrorPtr* error) {
   return state_manager_->LoadStateDefaults(json, error);
 }
 
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 516e5a4..7161dc5 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -37,7 +37,7 @@
   const Settings& GetSettings() const override;
   void AddSettingsChangedCallback(
       const SettingsChangedCallback& callback) override;
-  void AddCommandDefinitions(const std::string& json) override;
+  void AddCommandDefinitionsFromJson(const std::string& json) override;
   void AddCommandDefinitions(const base::DictionaryValue& dict) override;
   bool AddCommand(const base::DictionaryValue& command,
                   std::string* id,
@@ -46,9 +46,9 @@
   void AddCommandHandler(const std::string& command_name,
                          const CommandHandlerCallback& callback) override;
   void AddStateChangedCallback(const base::Closure& callback) override;
-  void AddStateDefinitions(const std::string& json) override;
+  void AddStateDefinitionsFromJson(const std::string& json) override;
   void AddStateDefinitions(const base::DictionaryValue& dict) override;
-  bool SetState(const std::string& json, ErrorPtr* error) override;
+  bool SetStateFromJson(const std::string& json, ErrorPtr* error) override;
   bool SetState(const base::DictionaryValue& dict, ErrorPtr* error) override;
   bool SetStateProperties(const base::DictionaryValue& property_set,
                           ErrorPtr* error) override;
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index b794fd6..1b926f6 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -227,9 +227,9 @@
                                     &http_client_, &network_, &dns_sd_,
                                     &http_server_, &wifi_, &bluetooth_);
 
-    device_->AddCommandDefinitions(kCommandDefs);
-    device_->AddStateDefinitions(kStateDefs);
-    device_->SetState(kStateDefaults, nullptr);
+    device_->AddCommandDefinitionsFromJson(kCommandDefs);
+    device_->AddStateDefinitionsFromJson(kStateDefs);
+    device_->SetStateFromJson(kStateDefaults, nullptr);
 
     for (const auto& cb : http_server_changed_cb_)
       cb.Run(http_server_);
@@ -285,7 +285,7 @@
   device_ = weave::Device::Create(&config_store_, &task_runner_, &http_client_,
                                   &network_, &dns_sd_, &http_server_, nullptr,
                                   &bluetooth_);
-  device_->AddCommandDefinitions(kCommandDefs);
+  device_->AddCommandDefinitionsFromJson(kCommandDefs);
 
   for (const auto& cb : http_server_changed_cb_)
     cb.Run(http_server_);
