diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index 33e22e8..ca9a11d 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -65,6 +65,7 @@
         '../libweave/src/privet/privet_types.cc',
         '../libweave/src/privet/security_manager.cc',
         '../libweave/src/privet/shill_client.cc',
+        '../libweave/src/privet/privet_types.cc',
         '../libweave/src/privet/wifi_bootstrap_manager.cc',
         '../libweave/src/privet/wifi_ssid_generator.cc',
         '../libweave/src/registration_status.cc',
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 572963e..06de9f1 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -185,8 +185,7 @@
 
 void Manager::GetCommand(DBusMethodResponsePtr<std::string> response,
                          const std::string& id) {
-  const weave::CommandInstance* command =
-      device_->GetCommands()->FindCommand(id);
+  const weave::Command* command = device_->GetCommands()->FindCommand(id);
   if (!command) {
     response->ReplyWithError(FROM_HERE, kErrorDomain, "unknown_command",
                              "Can't find command with id: " + id);
diff --git a/libweave/include/weave/cloud.h b/libweave/include/weave/cloud.h
new file mode 100644
index 0000000..daa39f1
--- /dev/null
+++ b/libweave/include/weave/cloud.h
@@ -0,0 +1,75 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_CLOUD_H_
+#define LIBWEAVE_INCLUDE_WEAVE_CLOUD_H_
+
+#include <string>
+
+#include <base/callback.h>
+#include <base/values.h>
+#include <chromeos/errors/error.h>
+
+namespace weave {
+
+// See the DBus interface XML file for complete descriptions of these states.
+enum class RegistrationStatus {
+  kUnconfigured,        // We have no credentials.
+  kConnecting,          // We have credentials but not yet connected.
+  kConnected,           // We're registered and connected to the cloud.
+  kInvalidCredentials,  // Our registration has been revoked.
+};
+
+class Cloud {
+ public:
+  using OnRegistrationChangedCallback =
+      base::Callback<void(RegistrationStatus satus)>;
+  using OnCloudRequestCallback =
+      base::Callback<void(const base::DictionaryValue& response)>;
+  using OnCloudRequestErrorCallback =
+      base::Callback<void(const chromeos::Error* error)>;
+
+  // Sets callback which is called when registration state is changed.
+  virtual void AddOnRegistrationChangedCallback(
+      const OnRegistrationChangedCallback& callback) = 0;
+
+  // Gets the full device description JSON object asynchronously.
+  // Passes the device info as the first argument to |callback|, or nullptr if
+  // the device is not registered or in case of communication failure.
+  virtual void GetDeviceInfo(
+      const OnCloudRequestCallback& success_callback,
+      const OnCloudRequestErrorCallback& error_callback) = 0;
+
+  // Registers the device.
+  // Returns a device ID on success.
+  virtual std::string RegisterDevice(const std::string& ticket_id,
+                                     chromeos::ErrorPtr* error) = 0;
+
+  // Updates basic device information.
+  virtual bool UpdateDeviceInfo(const std::string& name,
+                                const std::string& description,
+                                const std::string& location,
+                                chromeos::ErrorPtr* error) = 0;
+
+  // Updates base device config.
+  virtual bool UpdateBaseConfig(const std::string& anonymous_access_role,
+                                bool local_discovery_enabled,
+                                bool local_pairing_enabled,
+                                chromeos::ErrorPtr* error) = 0;
+
+  // Updates GCD service configuration. Usually for testing.
+  virtual bool UpdateServiceConfig(const std::string& client_id,
+                                   const std::string& client_secret,
+                                   const std::string& api_key,
+                                   const std::string& oauth_url,
+                                   const std::string& service_url,
+                                   chromeos::ErrorPtr* error) = 0;
+
+ protected:
+  virtual ~Cloud() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_CLOUD_H_
diff --git a/libweave/include/weave/command.h b/libweave/include/weave/command.h
new file mode 100644
index 0000000..0df4878
--- /dev/null
+++ b/libweave/include/weave/command.h
@@ -0,0 +1,24 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_
+#define LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_
+
+#include <base/values.h>
+#include <chromeos/errors/error.h>
+
+namespace weave {
+
+class Command {
+ public:
+  // Returns JSON representation of the command.
+  virtual std::unique_ptr<base::DictionaryValue> ToJson() const = 0;
+
+ protected:
+  virtual ~Command() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_COMMAND_H_
diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h
new file mode 100644
index 0000000..2937cbe
--- /dev/null
+++ b/libweave/include/weave/commands.h
@@ -0,0 +1,44 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
+#define LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
+
+#include <string>
+
+#include <base/callback.h>
+#include <base/values.h>
+#include <chromeos/errors/error.h>
+
+#include "weave/command.h"
+
+namespace weave {
+
+enum class UserRole {
+  kViewer,
+  kUser,
+  kManager,
+  kOwner,
+};
+
+class Commands {
+ public:
+  // Adds a new command to the command queue.
+  virtual bool AddCommand(const base::DictionaryValue& command,
+                          UserRole role,
+                          std::string* id,
+                          chromeos::ErrorPtr* error) = 0;
+
+  // Finds a command by the command |id|. Returns nullptr if the command with
+  // the given |id| is not found. The returned pointer should not be persisted
+  // for a long period of time.
+  virtual Command* FindCommand(const std::string& id) = 0;
+
+ protected:
+  virtual ~Commands() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
diff --git a/libweave/include/weave/config.h b/libweave/include/weave/config.h
new file mode 100644
index 0000000..6b87385
--- /dev/null
+++ b/libweave/include/weave/config.h
@@ -0,0 +1,62 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_CONFIG_H_
+#define LIBWEAVE_INCLUDE_WEAVE_CONFIG_H_
+
+#include <set>
+#include <string>
+
+#include <base/callback.h>
+
+#include "weave/enum_to_string.h"
+#include "weave/privet.h"
+
+namespace weave {
+
+struct Settings {
+  std::string client_id;
+  std::string client_secret;
+  std::string api_key;
+  std::string oauth_url;
+  std::string service_url;
+  std::string name;
+  std::string description;
+  std::string location;
+  std::string local_anonymous_access_role;
+  bool local_discovery_enabled{true};
+  bool local_pairing_enabled{true};
+  std::string oem_name;
+  std::string model_name;
+  std::string model_id;
+  std::string device_kind;
+  base::TimeDelta polling_period;
+  base::TimeDelta backup_polling_period;
+
+  bool wifi_auto_setup_enabled{true};
+  std::set<PairingType> pairing_modes;
+  base::FilePath embedded_code_path;
+
+  std::string device_id;
+  std::string refresh_token;
+  std::string robot_account;
+  std::string last_configured_ssid;
+};
+
+class Config {
+ public:
+  using OnChangedCallback = base::Callback<void(const Settings& settings)>;
+
+  // Sets callback which is called when config is changed.
+  virtual void AddOnChangedCallback(const OnChangedCallback& callback) = 0;
+
+  virtual const Settings& GetSettings() const = 0;
+
+ protected:
+  virtual ~Config() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_CONFIG_H_
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index 4adaa53..81289e9 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -13,7 +13,11 @@
 #include <chromeos/errors/error.h>
 #include <chromeos/variant_dictionary.h>
 
-#include "weave/types.h"
+#include "weave/cloud.h"
+#include "weave/commands.h"
+#include "weave/config.h"
+#include "weave/privet.h"
+#include "weave/state.h"
 
 namespace chromeos {
 namespace dbus_utils {
@@ -24,21 +28,6 @@
 
 namespace weave {
 
-class CommandManager;
-class StateManager;
-class BuffetConfig;
-class DeviceRegistrationInfo;
-namespace privet {
-class Manager;
-}
-
-// TODO(vitalybuka): Replace with interfaces.
-using Commands = CommandManager;
-using State = StateManager;
-using Config = BuffetConfig;
-using Cloud = DeviceRegistrationInfo;
-using Privet = privet::Manager;
-
 class Device {
  public:
   struct Options {
@@ -71,11 +60,4 @@
 
 }  // namespace weave
 
-// TODO(vitalybuka): Replace with interfaces
-#include "libweave/src/buffet_config.h"
-#include "libweave/src/commands/command_manager.h"
-#include "libweave/src/device_registration_info.h"
-#include "libweave/src/privet/privet_manager.h"
-#include "libweave/src/states/state_manager.h"
-
 #endif  // LIBWEAVE_INCLUDE_WEAVE_DEVICE_H_
diff --git a/libweave/include/weave/privet.h b/libweave/include/weave/privet.h
new file mode 100644
index 0000000..60acbeb
--- /dev/null
+++ b/libweave/include/weave/privet.h
@@ -0,0 +1,53 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_PRIVET_H_
+#define LIBWEAVE_INCLUDE_WEAVE_PRIVET_H_
+
+#include <string>
+#include <vector>
+
+#include <base/callback.h>
+
+namespace weave {
+
+enum class PairingType {
+  kPinCode,
+  kEmbeddedCode,
+  kUltrasound32,
+  kAudible32,
+};
+
+enum class WifiSetupState {
+  kDisabled,
+  kBootstrapping,
+  kMonitoring,
+  kConnecting,
+};
+
+class Privet {
+ public:
+  using OnWifiSetupChangedCallback = base::Callback<void(WifiSetupState state)>;
+  using OnPairingStartedCallback =
+      base::Callback<void(const std::string& session_id,
+                          PairingType pairing_type,
+                          const std::vector<uint8_t>& code)>;
+  using OnPairingEndedCallback =
+      base::Callback<void(const std::string& session_id)>;
+
+  // Sets callback which is called when WiFi state is changed.
+  virtual void AddOnWifiSetupChangedCallback(
+      const OnWifiSetupChangedCallback& callback) = 0;
+
+  virtual void AddOnPairingChangedCallbacks(
+      const OnPairingStartedCallback& on_start,
+      const OnPairingEndedCallback& on_end) = 0;
+
+ protected:
+  virtual ~Privet() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_PRIVET_H_
diff --git a/libweave/include/weave/state.h b/libweave/include/weave/state.h
new file mode 100644
index 0000000..bf87a64
--- /dev/null
+++ b/libweave/include/weave/state.h
@@ -0,0 +1,34 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef LIBWEAVE_INCLUDE_WEAVE_STATE_H_
+#define LIBWEAVE_INCLUDE_WEAVE_STATE_H_
+
+#include <base/callback.h>
+#include <base/values.h>
+#include <chromeos/variant_dictionary.h>
+
+namespace weave {
+
+class State {
+ public:
+  // Sets callback which is called when stat is changed.
+  virtual void AddOnChangedCallback(const base::Closure& callback) = 0;
+
+  // Updates a multiple property values.
+  virtual bool SetProperties(const chromeos::VariantDictionary& property_set,
+                             chromeos::ErrorPtr* error) = 0;
+
+  // Returns aggregated state properties across all registered packages as
+  // a JSON object that can be used to send the device state to the GCD server.
+  virtual std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson(
+      chromeos::ErrorPtr* error) const = 0;
+
+ protected:
+  virtual ~State() = default;
+};
+
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_STATE_H_
diff --git a/libweave/include/weave/types.h b/libweave/include/weave/types.h
deleted file mode 100644
index 55a1fb0..0000000
--- a/libweave/include/weave/types.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef LIBWEAVE_INCLUDE_WEAVE_TYPES_H_
-#define LIBWEAVE_INCLUDE_WEAVE_TYPES_H_
-
-#include <string>
-
-namespace weave {
-
-// See the DBus interface XML file for complete descriptions of these states.
-enum class RegistrationStatus {
-  kUnconfigured,        // We have no credentials.
-  kConnecting,          // We have credentials but not yet connected.
-  kConnected,           // We're registered and connected to the cloud.
-  kInvalidCredentials,  // Our registration has been revoked.
-};
-
-enum class PairingType {
-  kPinCode,
-  kEmbeddedCode,
-  kUltrasound32,
-  kAudible32,
-};
-
-enum class WifiSetupState {
-  kDisabled,
-  kBootstrapping,
-  kMonitoring,
-  kConnecting,
-};
-
-}  // namespace weave
-
-#endif  // LIBWEAVE_INCLUDE_WEAVE_TYPES_H_
diff --git a/libweave/src/buffet_config.h b/libweave/src/buffet_config.h
index d0296da..8924365 100644
--- a/libweave/src/buffet_config.h
+++ b/libweave/src/buffet_config.h
@@ -15,51 +15,25 @@
 #include <chromeos/key_value_store.h>
 
 #include "libweave/src/privet/security_delegate.h"
+#include "weave/config.h"
 
 namespace weave {
 
 class StorageInterface;
 
-struct Settings {
-  std::string client_id;
-  std::string client_secret;
-  std::string api_key;
-  std::string oauth_url;
-  std::string service_url;
-  std::string name;
-  std::string description;
-  std::string location;
-  std::string local_anonymous_access_role;
-  bool local_discovery_enabled{true};
-  bool local_pairing_enabled{true};
-  std::string oem_name;
-  std::string model_name;
-  std::string model_id;
-  std::string device_kind;
-  base::TimeDelta polling_period;
-  base::TimeDelta backup_polling_period;
-
-  bool wifi_auto_setup_enabled{true};
-  std::set<PairingType> pairing_modes;
-  base::FilePath embedded_code_path;
-
-  std::string device_id;
-  std::string refresh_token;
-  std::string robot_account;
-  std::string last_configured_ssid;
-};
-
 // Handles reading buffet config and state files.
-class BuffetConfig final {
+class BuffetConfig final : public Config {
  public:
   using OnChangedCallback = base::Callback<void(const Settings&)>;
+  ~BuffetConfig() override = default;
 
   explicit BuffetConfig(std::unique_ptr<StorageInterface> storage);
 
   explicit BuffetConfig(const base::FilePath& state_path);
 
-  void AddOnChangedCallback(const OnChangedCallback& callback);
-  const Settings& GetSettings() const;
+  // Config overrides.
+  void AddOnChangedCallback(const OnChangedCallback& callback) override;
+  const Settings& GetSettings() const override;
 
   void Load(const base::FilePath& config_path);
   void Load(const chromeos::KeyValueStore& store);
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h
index 9c0d370..769427a 100644
--- a/libweave/src/commands/command_definition.h
+++ b/libweave/src/commands/command_definition.h
@@ -11,7 +11,7 @@
 #include <base/macros.h>
 
 #include "libweave/src/commands/object_schema.h"
-#include "libweave/src/commands/user_role.h"
+#include "weave/commands.h"
 
 namespace weave {
 
diff --git a/libweave/src/commands/command_instance.h b/libweave/src/commands/command_instance.h
index 73d4646..5142d98 100644
--- a/libweave/src/commands/command_instance.h
+++ b/libweave/src/commands/command_instance.h
@@ -15,6 +15,7 @@
 
 #include "libweave/src/commands/prop_values.h"
 #include "libweave/src/commands/schema_utils.h"
+#include "weave/command.h"
 
 namespace base {
 class Value;
@@ -27,7 +28,7 @@
 class CommandProxyInterface;
 class CommandQueue;
 
-class CommandInstance final {
+class CommandInstance final : public Command {
  public:
   // Construct a command instance given the full command |name| which must
   // be in format "<package_name>.<command_name>", a command |category| and
@@ -36,7 +37,10 @@
                   const std::string& origin,
                   const CommandDefinition* command_definition,
                   const native_types::Object& parameters);
-  ~CommandInstance();
+  ~CommandInstance() override;
+
+  // Command overrides.
+  std::unique_ptr<base::DictionaryValue> ToJson() const override;
 
   // Returns the full command ID.
   const std::string& GetID() const { return id_; }
@@ -74,9 +78,6 @@
       std::string* command_id,
       chromeos::ErrorPtr* error);
 
-  // Returns JSON representation of the command.
-  std::unique_ptr<base::DictionaryValue> ToJson() const;
-
   // Sets the command ID (normally done by CommandQueue when the command
   // instance is added to it).
   void SetID(const std::string& id) { id_ = id; }
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index 1b59da6..a312051 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -29,6 +29,13 @@
                  base::Unretained(&command_dispatcher_)));
 }
 
+CommandManager::~CommandManager() {}
+
+void CommandManager::AddOnCommandDefChanged(const base::Closure& callback) {
+  on_command_changed_.push_back(callback);
+  callback.Run();
+}
+
 const CommandDictionary& CommandManager::GetCommandDictionary() const {
   return dictionary_;
 }
@@ -125,7 +132,7 @@
   return true;
 }
 
-CommandInstance* CommandManager::FindCommand(const std::string& id) const {
+CommandInstance* CommandManager::FindCommand(const std::string& id) {
   return command_queue_.Find(id);
 }
 
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index 0aa703d..c894f71 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -17,6 +17,7 @@
 #include "libweave/src/commands/command_dictionary.h"
 #include "libweave/src/commands/command_queue.h"
 #include "libweave/src/commands/dbus_command_dispatcher.h"
+#include "weave/commands.h"
 
 namespace chromeos {
 namespace dbus_utils {
@@ -31,18 +32,24 @@
 // CommandManager class that will have a list of all the device command
 // schemas as well as the live command queue of pending command instances
 // dispatched to the device.
-class CommandManager final {
+class CommandManager final : public Commands {
  public:
   CommandManager();
   explicit CommandManager(
       const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
           object_manager);
 
+  ~CommandManager() override;
+
+  // Commands overrides.
+  bool AddCommand(const base::DictionaryValue& command,
+                  UserRole role,
+                  std::string* id,
+                  chromeos::ErrorPtr* error) override;
+  CommandInstance* FindCommand(const std::string& id) override;
+
   // Sets callback which is called when command definitions is changed.
-  void AddOnCommandDefChanged(const base::Closure& callback) {
-    on_command_changed_.push_back(callback);
-    callback.Run();
-  }
+  void AddOnCommandDefChanged(const base::Closure& callback);
 
   // Returns the command definitions for the device.
   const CommandDictionary& GetCommandDictionary() const;
@@ -87,15 +94,6 @@
 
   // Adds a new command to the command queue.
   void AddCommand(std::unique_ptr<CommandInstance> command_instance);
-  bool AddCommand(const base::DictionaryValue& command,
-                  UserRole role,
-                  std::string* id,
-                  chromeos::ErrorPtr* error);
-
-  // Finds a command by the command |id|. Returns nullptr if the command with
-  // the given |id| is not found. The returned pointer should not be persisted
-  // for a long period of time.
-  CommandInstance* FindCommand(const std::string& id) const;
 
   // Changes the visibility of commands.
   bool SetCommandVisibility(const std::vector<std::string>& command_names,
diff --git a/libweave/src/commands/user_role.cc b/libweave/src/commands/user_role.cc
index 87edad1..0cad7ad 100644
--- a/libweave/src/commands/user_role.cc
+++ b/libweave/src/commands/user_role.cc
@@ -2,11 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/user_role.h"
-
 #include <chromeos/errors/error.h>
 
 #include "libweave/src/commands/schema_constants.h"
+#include "weave/commands.h"
 #include "weave/enum_to_string.h"
 
 namespace weave {
diff --git a/libweave/src/commands/user_role.h b/libweave/src/commands/user_role.h
deleted file mode 100644
index 5f5b3d7..0000000
--- a/libweave/src/commands/user_role.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef LIBWEAVE_SRC_COMMANDS_USER_ROLE_H_
-#define LIBWEAVE_SRC_COMMANDS_USER_ROLE_H_
-
-#include <string>
-#include <chromeos/errors/error.h>
-
-namespace weave {
-
-enum class UserRole {
-  kViewer,
-  kUser,
-  kManager,
-  kOwner,
-};
-
-}  // namespace weave
-
-#endif  // LIBWEAVE_SRC_COMMANDS_USER_ROLE_H_
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 7d2943b..709f4bb 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -6,12 +6,14 @@
 
 #include <string>
 
-#include <chromeos/dbus/dbus_object.h>
-
 #include <base/message_loop/message_loop.h>
+#include <chromeos/dbus/dbus_object.h>
+#include <chromeos/http/http_transport.h>
 
 #include "libweave/src/base_api_handler.h"
+#include "libweave/src/buffet_config.h"
 #include "libweave/src/commands/command_manager.h"
+#include "libweave/src/device_registration_info.h"
 #include "libweave/src/privet/privet_manager.h"
 #include "libweave/src/privet/shill_client.h"
 #include "libweave/src/states/state_change_queue.h"
@@ -69,23 +71,23 @@
     StartPrivet(options, dbus_object, sequencer);
 }
 
-CommandManager* DeviceManager::GetCommands() {
+Commands* DeviceManager::GetCommands() {
   return command_manager_.get();
 }
 
-StateManager* DeviceManager::GetState() {
+State* DeviceManager::GetState() {
   return state_manager_.get();
 }
 
-BuffetConfig* DeviceManager::GetConfig() {
+Config* DeviceManager::GetConfig() {
   return device_info_->GetMutableConfig();
 }
 
-DeviceRegistrationInfo* DeviceManager::GetCloud() {
+Cloud* DeviceManager::GetCloud() {
   return device_info_.get();
 }
 
-privet::Manager* DeviceManager::GetPrivet() {
+Privet* DeviceManager::GetPrivet() {
   return privet_.get();
 }
 
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 0eba82a..7faf586 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -5,6 +5,8 @@
 #ifndef LIBWEAVE_SRC_DEVICE_MANAGER_H_
 #define LIBWEAVE_SRC_DEVICE_MANAGER_H_
 
+#include <base/memory/weak_ptr.h>
+
 #include "weave/device.h"
 
 namespace chromeos {
@@ -36,11 +38,11 @@
              chromeos::dbus_utils::DBusObject* dbus_object,
              chromeos::dbus_utils::AsyncEventSequencer* sequencer) override;
 
-  CommandManager* GetCommands() override;
-  StateManager* GetState() override;
-  BuffetConfig* GetConfig() override;
-  DeviceRegistrationInfo* GetCloud() override;
-  privet::Manager* GetPrivet() override;
+  Commands* GetCommands() override;
+  State* GetState() override;
+  Config* GetConfig() override;
+  Cloud* GetCloud() override;
+  Privet* GetPrivet() override;
 
  private:
   void StartPrivet(const Options& options,
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h
index 4dff0a5..88039dc 100644
--- a/libweave/src/device_registration_info.h
+++ b/libweave/src/device_registration_info.h
@@ -31,6 +31,8 @@
 #include "libweave/src/notification/pull_channel.h"
 #include "libweave/src/states/state_change_queue_interface.h"
 #include "libweave/src/storage_interface.h"
+#include "weave/cloud.h"
+#include "weave/config.h"
 
 namespace base {
 class DictionaryValue;
@@ -53,13 +55,12 @@
 extern const char kErrorDomainGCDServer[];
 
 // The DeviceRegistrationInfo class represents device registration information.
-class DeviceRegistrationInfo : public NotificationDelegate,
+class DeviceRegistrationInfo : public Cloud,
+                               public NotificationDelegate,
                                public CloudCommandUpdateInterface {
  public:
-  using OnRegistrationChangedCallback =
-      base::Callback<void(RegistrationStatus)>;
   using CloudRequestCallback =
-      base::Callback<void(const base::DictionaryValue&)>;
+      base::Callback<void(const base::DictionaryValue& response)>;
   using CloudRequestErrorCallback =
       base::Callback<void(const chromeos::Error* error)>;
 
@@ -74,13 +75,31 @@
 
   ~DeviceRegistrationInfo() override;
 
-  // Add callback to listen for changes in registration status.
+  // Cloud overrides.
   void AddOnRegistrationChangedCallback(
-      const OnRegistrationChangedCallback& callback);
+      const OnRegistrationChangedCallback& callback) override;
+  void GetDeviceInfo(
+      const OnCloudRequestCallback& success_callback,
+      const OnCloudRequestErrorCallback& error_callback) override;
+  std::string RegisterDevice(const std::string& ticket_id,
+                             chromeos::ErrorPtr* error) override;
+  bool UpdateDeviceInfo(const std::string& name,
+                        const std::string& description,
+                        const std::string& location,
+                        chromeos::ErrorPtr* error) override;
+  bool UpdateBaseConfig(const std::string& anonymous_access_role,
+                        bool local_discovery_enabled,
+                        bool local_pairing_enabled,
+                        chromeos::ErrorPtr* error) override;
+  bool UpdateServiceConfig(const std::string& client_id,
+                           const std::string& client_secret,
+                           const std::string& api_key,
+                           const std::string& oauth_url,
+                           const std::string& service_url,
+                           chromeos::ErrorPtr* error) override;
 
   // Add callback to listen for changes in config.
-  void AddOnConfigChangedCallback(
-      const BuffetConfig::OnChangedCallback& callback);
+  void AddOnConfigChangedCallback(const Config::OnChangedCallback& callback);
 
   // Returns the authorization HTTP header that can be used to talk
   // to GCD server for authenticated device communication.
@@ -123,43 +142,12 @@
   // are available.
   bool VerifyRegistrationCredentials(chromeos::ErrorPtr* error) const;
 
-  // Gets the full device description JSON object asynchronously.
-  // Passes the device info as the first argument to |callback|, or nullptr if
-  // the device is not registered or in case of communication failure.
-  void GetDeviceInfo(const CloudRequestCallback& success_callback,
-                     const CloudRequestErrorCallback& error_callback);
-
-  // Registers the device.
-  // Returns a device ID on success.
-  std::string RegisterDevice(const std::string& ticket_id,
-                             chromeos::ErrorPtr* error);
-
   // Updates a command (override from CloudCommandUpdateInterface).
   void UpdateCommand(const std::string& command_id,
                      const base::DictionaryValue& command_patch,
                      const base::Closure& on_success,
                      const base::Closure& on_error) override;
 
-  // Updates basic device information.
-  bool UpdateDeviceInfo(const std::string& name,
-                        const std::string& description,
-                        const std::string& location,
-                        chromeos::ErrorPtr* error);
-
-  // Updates base device config.
-  bool UpdateBaseConfig(const std::string& anonymous_access_role,
-                        bool local_discovery_enabled,
-                        bool local_pairing_enabled,
-                        chromeos::ErrorPtr* error);
-
-  // Updates GCD service configuration. Usually for testing.
-  bool UpdateServiceConfig(const std::string& client_id,
-                           const std::string& client_secret,
-                           const std::string& api_key,
-                           const std::string& oauth_url,
-                           const std::string& service_url,
-                           chromeos::ErrorPtr* error);
-
   // TODO(vitalybuka): remove getters and pass config to dependent code.
   const BuffetConfig& GetConfig() const { return *config_; }
   BuffetConfig* GetMutableConfig() { return config_.get(); }
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc
index 9ef680d..80f8086 100644
--- a/libweave/src/privet/cloud_delegate.cc
+++ b/libweave/src/privet/cloud_delegate.cc
@@ -22,7 +22,6 @@
 #include "libweave/src/device_registration_info.h"
 #include "libweave/src/privet/constants.h"
 #include "libweave/src/states/state_manager.h"
-#include "weave/enum_to_string.h"
 
 using chromeos::ErrorPtr;
 using chromeos::VariantDictionary;
diff --git a/libweave/src/privet/privet_manager.h b/libweave/src/privet/privet_manager.h
index 3a01f13..9ec3984 100644
--- a/libweave/src/privet/privet_manager.h
+++ b/libweave/src/privet/privet_manager.h
@@ -48,10 +48,10 @@
 class SecurityManager;
 class ShillClient;
 
-class Manager : public CloudDelegate::Observer {
+class Manager : public Privet, public CloudDelegate::Observer {
  public:
   Manager();
-  ~Manager();
+  ~Manager() override;
 
   void Start(const weave::Device::Options& options,
              const scoped_refptr<dbus::Bus>& bus,
@@ -64,11 +64,11 @@
   std::string GetCurrentlyConnectedSsid() const;
 
   void AddOnWifiSetupChangedCallback(
-      const WifiBootstrapManager::StateListener& callback);
+      const OnWifiSetupChangedCallback& callback) override;
 
   void AddOnPairingChangedCallbacks(
-      const SecurityManager::PairingStartListener& on_start,
-      const SecurityManager::PairingEndListener& on_end);
+      const OnPairingStartedCallback& on_start,
+      const OnPairingEndedCallback& on_end) override;
 
   void Shutdown();
 
diff --git a/libweave/src/privet/privet_types.cc b/libweave/src/privet/privet_types.cc
index 7c68929..dcf3209 100644
--- a/libweave/src/privet/privet_types.cc
+++ b/libweave/src/privet/privet_types.cc
@@ -7,7 +7,7 @@
 #include <string>
 
 #include "weave/enum_to_string.h"
-#include "weave/types.h"
+#include "weave/privet.h"
 
 namespace weave {
 
diff --git a/libweave/src/privet/security_delegate.h b/libweave/src/privet/security_delegate.h
index 616cc3d..e7444e9 100644
--- a/libweave/src/privet/security_delegate.h
+++ b/libweave/src/privet/security_delegate.h
@@ -13,7 +13,7 @@
 #include <chromeos/secure_blob.h>
 
 #include "libweave/src/privet/privet_types.h"
-#include "weave/types.h"
+#include "weave/privet.h"
 
 namespace weave {
 namespace privet {
diff --git a/libweave/src/registration_status.cc b/libweave/src/registration_status.cc
index 8392d57..550360e 100644
--- a/libweave/src/registration_status.cc
+++ b/libweave/src/registration_status.cc
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "weave/cloud.h"
 #include "weave/enum_to_string.h"
-#include "weave/types.h"
 
 namespace weave {
 
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index 7b867ca..d694464 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -29,6 +29,8 @@
   CHECK(state_change_queue_) << "State change queue not specified";
 }
 
+StateManager::~StateManager() {}
+
 void StateManager::AddOnChangedCallback(const base::Closure& callback) {
   on_changed_.push_back(callback);
   callback.Run();  // Force to read current state.
diff --git a/libweave/src/states/state_manager.h b/libweave/src/states/state_manager.h
index a60c0dc..99f561d 100644
--- a/libweave/src/states/state_manager.h
+++ b/libweave/src/states/state_manager.h
@@ -19,6 +19,7 @@
 
 #include "libweave/src/states/state_change_queue_interface.h"
 #include "libweave/src/states/state_package.h"
+#include "weave/state.h"
 
 namespace base {
 class DictionaryValue;
@@ -31,25 +32,22 @@
 // StateManager is the class that aggregates the device state fragments
 // provided by device daemons and makes the aggregate device state available
 // to the GCD cloud server and local clients.
-class StateManager final {
+class StateManager final : public State {
  public:
   explicit StateManager(StateChangeQueueInterface* state_change_queue);
+  ~StateManager() override;
 
-  void AddOnChangedCallback(const base::Closure& callback);
+  // State overrides.
+  void AddOnChangedCallback(const base::Closure& callback) override;
+  bool SetProperties(const chromeos::VariantDictionary& property_set,
+                     chromeos::ErrorPtr* error) override;
+  std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson(
+      chromeos::ErrorPtr* error) const override;
 
   // Initializes the state manager and load device state fragments.
   // Called by Buffet daemon at startup.
   void Startup();
 
-  // Returns aggregated state properties across all registered packages as
-  // a JSON object that can be used to send the device state to the GCD server.
-  std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson(
-      chromeos::ErrorPtr* error) const;
-
-  // Updates a multiple property values.
-  bool SetProperties(const chromeos::VariantDictionary& property_set,
-                     chromeos::ErrorPtr* error);
-
   // Returns all the categories the state properties are registered from.
   // As with GCD command handling, the category normally represent a device
   // service (daemon) that is responsible for a set of properties.
