diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index d8b6963..c673fcb 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -45,6 +45,12 @@
   virtual void AddSettingsChangedCallback(
       const SettingsChangedCallback& callback) = 0;
 
+  // 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 AddCommandDefinitions(const base::DictionaryValue& dict) = 0;
+
   // Callback type for AddCommandHandler.
   using CommandHandlerCallback = base::Callback<void(Command*)>;
 
@@ -69,6 +75,18 @@
   // Sets callback which is called when stat is changed.
   virtual void AddStateChangedCallback(const base::Closure& callback) = 0;
 
+  // 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 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 SetState(const base::DictionaryValue& dict, ErrorPtr* error) = 0;
+
   // Returns value of the single property.
   // |name| is full property name, including package name. e.g. "base.network".
   virtual std::unique_ptr<base::Value> GetStateProperty(
diff --git a/libweave/include/weave/test/mock_device.h b/libweave/include/weave/test/mock_device.h
index af149b4..de6f01c 100644
--- a/libweave/include/weave/test/mock_device.h
+++ b/libweave/include/weave/test/mock_device.h
@@ -21,12 +21,18 @@
   MOCK_CONST_METHOD0(GetSettings, const Settings&());
   MOCK_METHOD1(AddSettingsChangedCallback,
                void(const SettingsChangedCallback& callback));
+  MOCK_METHOD1(AddCommandDefinitions, void(const std::string&));
+  MOCK_METHOD1(AddCommandDefinitions, void(const base::DictionaryValue&));
   MOCK_METHOD2(AddCommandHandler,
                void(const std::string&, const CommandHandlerCallback&));
   MOCK_METHOD3(AddCommand,
                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(AddStateDefinitions, void(const base::DictionaryValue&));
+  MOCK_METHOD2(SetState, bool(const std::string&, ErrorPtr*));
+  MOCK_METHOD2(SetState, bool(const base::DictionaryValue&, ErrorPtr*));
   MOCK_CONST_METHOD1(MockGetStateProperty,
                      base::Value*(const std::string& name));
   MOCK_METHOD3(SetStateProperty,
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 009df46..9c52912 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -92,8 +92,12 @@
   device_info_->AddGcdStateChangedCallback(callback);
 }
 
-void DeviceManager::AddStateChangedCallback(const base::Closure& callback) {
-  state_manager_->AddChangedCallback(callback);
+void DeviceManager::AddCommandDefinitions(const std::string& json) {
+  CHECK(command_manager_->LoadCommands(json, nullptr));
+}
+
+void DeviceManager::AddCommandDefinitions(const base::DictionaryValue& dict) {
+  CHECK(command_manager_->LoadCommands(dict, nullptr));
 }
 
 bool DeviceManager::AddCommand(const base::DictionaryValue& command,
@@ -111,6 +115,27 @@
   return command_manager_->AddCommandHandler(command_name, callback);
 }
 
+void DeviceManager::AddStateChangedCallback(const base::Closure& callback) {
+  state_manager_->AddChangedCallback(callback);
+}
+
+void DeviceManager::AddStateDefinitions(const std::string& json) {
+  CHECK(state_manager_->LoadStateDefinition(json, nullptr));
+}
+
+void DeviceManager::AddStateDefinitions(const base::DictionaryValue& dict) {
+  CHECK(state_manager_->LoadStateDefinition(dict, nullptr));
+}
+
+bool DeviceManager::SetState(const std::string& json, ErrorPtr* error) {
+  return state_manager_->LoadStateDefaults(json, error);
+}
+
+bool DeviceManager::SetState(const base::DictionaryValue& dict,
+                             ErrorPtr* error) {
+  return state_manager_->LoadStateDefaults(dict, error);
+}
+
 bool DeviceManager::SetStateProperties(
     const base::DictionaryValue& property_set,
     ErrorPtr* error) {
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 72a24ab..516e5a4 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -37,6 +37,8 @@
   const Settings& GetSettings() const override;
   void AddSettingsChangedCallback(
       const SettingsChangedCallback& callback) override;
+  void AddCommandDefinitions(const std::string& json) override;
+  void AddCommandDefinitions(const base::DictionaryValue& dict) override;
   bool AddCommand(const base::DictionaryValue& command,
                   std::string* id,
                   ErrorPtr* error) override;
@@ -44,6 +46,10 @@
   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 AddStateDefinitions(const base::DictionaryValue& dict) override;
+  bool SetState(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;
   std::unique_ptr<base::Value> GetStateProperty(
diff --git a/libweave/src/states/state_manager.h b/libweave/src/states/state_manager.h
index 5a64d78..3dbd0d5 100644
--- a/libweave/src/states/state_manager.h
+++ b/libweave/src/states/state_manager.h
@@ -39,6 +39,10 @@
   ~StateManager();
 
   void AddChangedCallback(const base::Closure& callback);
+  bool LoadStateDefinition(const base::DictionaryValue& dict, ErrorPtr* error);
+  bool LoadStateDefinition(const std::string& json, ErrorPtr* error);
+  bool LoadStateDefaults(const base::DictionaryValue& dict, ErrorPtr* error);
+  bool LoadStateDefaults(const std::string& json, ErrorPtr* error);
   bool SetProperties(const base::DictionaryValue& property_set,
                      ErrorPtr* error);
   std::unique_ptr<base::Value> GetProperty(const std::string& name) const;
@@ -75,25 +79,11 @@
                         const base::Time& timestamp,
                         ErrorPtr* error);
 
-  // Loads a device state fragment from a JSON object.
-  bool LoadStateDefinition(const base::DictionaryValue& dict,
-                           ErrorPtr* error);
-
-  // Loads a device state fragment JSON.
-  bool LoadStateDefinition(const std::string& json,
-                           ErrorPtr* error);
-
   // Loads the base device state fragment JSON. This state fragment
   // defines the standard state properties from the 'base' package as defined
   // by GCD specification.
   bool LoadBaseStateDefinition(const std::string& json, ErrorPtr* error);
 
-  // Loads state default values from JSON object.
-  bool LoadStateDefaults(const base::DictionaryValue& dict, ErrorPtr* error);
-
-  // Loads state default values from JSON.
-  bool LoadStateDefaults(const std::string& json, ErrorPtr* error);
-
   // Finds a package by its name. Returns nullptr if not found.
   StatePackage* FindPackage(const std::string& package_name);
   const StatePackage* FindPackage(const std::string& package_name) const;
