diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index d9c1283..9b062ef 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -29,8 +29,8 @@
 class CommandHandler {
  public:
   explicit CommandHandler(weave::Device* device) : device_{device} {
-    device->GetCommands()->AddCommandAddedCallback(base::Bind(
-        &CommandHandler::OnNewCommand, weak_ptr_factory_.GetWeakPtr()));
+    device->AddCommandAddedCallback(base::Bind(&CommandHandler::OnNewCommand,
+                                               weak_ptr_factory_.GetWeakPtr()));
   }
 
  private:
diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h
deleted file mode 100644
index cfbfe63..0000000
--- a/libweave/include/weave/commands.h
+++ /dev/null
@@ -1,43 +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_COMMANDS_H_
-#define LIBWEAVE_INCLUDE_WEAVE_COMMANDS_H_
-
-#include <string>
-
-#include <base/callback.h>
-#include <base/values.h>
-#include <weave/error.h>
-#include <weave/command.h>
-
-namespace weave {
-
-class Commands {
- public:
-  using CommandCallback = base::Callback<void(Command*)>;
-
-  // Adds notification callback for a new command being added to the queue.
-  virtual void AddCommandAddedCallback(const CommandCallback& callback) = 0;
-
-  // Adds notification callback for a command being removed from the queue.
-  virtual void AddCommandRemovedCallback(const CommandCallback& callback) = 0;
-
-  // Adds a new command to the command queue.
-  virtual bool AddCommand(const base::DictionaryValue& command,
-                          std::string* id,
-                          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/device.h b/libweave/include/weave/device.h
index 03e3984..c81dd04 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -9,7 +9,7 @@
 #include <set>
 #include <string>
 
-#include <weave/commands.h>
+#include <weave/command.h>
 #include <weave/export.h>
 #include <weave/provider/bluetooth.h>
 #include <weave/provider/config_store.h>
@@ -35,16 +35,34 @@
   virtual ~Device() = default;
 
   // Returns reference the current settings.
-  virtual const Settings& GetSettings() = 0;
+  virtual const Settings& GetSettings() const = 0;
 
   // Callback type for AddSettingsChangedCallback.
   using SettingsChangedCallback =
       base::Callback<void(const Settings& settings)>;
+
   // Subscribes to notification settings changes.
   virtual void AddSettingsChangedCallback(
       const SettingsChangedCallback& callback) = 0;
 
-  virtual Commands* GetCommands() = 0;
+  // Callback type for AddCommandAddedCallback and AddCommandRemovedCallback.
+  using CommandCallback = base::Callback<void(Command*)>;
+
+  // Adds notification callback for a new command being added to the queue.
+  virtual void AddCommandAddedCallback(const CommandCallback& callback) = 0;
+
+  // Adds notification callback for a command being removed from the queue.
+  virtual void AddCommandRemovedCallback(const CommandCallback& callback) = 0;
+
+  // Adds a new command to the command queue.
+  virtual bool AddCommand(const base::DictionaryValue& command,
+                          std::string* id,
+                          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;
 
   // Sets callback which is called when stat is changed.
   virtual void AddStateChangedCallback(const base::Closure& callback) = 0;
@@ -72,6 +90,7 @@
 
   // Callback type for GcdStatusCallback.
   using GcdStateChangedCallback = base::Callback<void(GcdState state)>;
+
   // Sets callback which is called when state of server connection changed.
   virtual void AddGcdStateChangedCallback(
       const GcdStateChangedCallback& callback) = 0;
@@ -86,10 +105,12 @@
       base::Callback<void(const std::string& session_id,
                           PairingType pairing_type,
                           const std::vector<uint8_t>& code)>;
+
   // Handler should stop displaying pin code.
   using PairingEndCallback =
       base::Callback<void(const std::string& session_id)>;
   // Subscribes to notification about client pairing events.
+
   virtual void AddPairingChangedCallbacks(
       const PairingBeginCallback& begin_callback,
       const PairingEndCallback& end_callback) = 0;
diff --git a/libweave/include/weave/test/mock_commands.h b/libweave/include/weave/test/mock_commands.h
deleted file mode 100644
index 9bae29c..0000000
--- a/libweave/include/weave/test/mock_commands.h
+++ /dev/null
@@ -1,31 +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_TEST_MOCK_COMMANDS_H_
-#define LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_COMMANDS_H_
-
-#include <weave/commands.h>
-
-#include <string>
-
-#include <gmock/gmock.h>
-
-namespace weave {
-namespace test {
-
-class MockCommands : public Commands {
- public:
-  ~MockCommands() override = default;
-
-  MOCK_METHOD1(AddCommandAddedCallback, void(const CommandCallback&));
-  MOCK_METHOD1(AddCommandRemovedCallback, void(const CommandCallback&));
-  MOCK_METHOD3(AddCommand,
-               bool(const base::DictionaryValue&, std::string*, ErrorPtr*));
-  MOCK_METHOD1(FindCommand, Command*(const std::string&));
-};
-
-}  // namespace test
-}  // namespace weave
-
-#endif  // LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_COMMANDS_H_
diff --git a/libweave/include/weave/test/mock_device.h b/libweave/include/weave/test/mock_device.h
new file mode 100644
index 0000000..44298bb
--- /dev/null
+++ b/libweave/include/weave/test/mock_device.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_TEST_MOCK_DEVICE_H_
+#define LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_DEVICE_H_
+
+#include <weave/device.h>
+
+#include <string>
+
+#include <gmock/gmock.h>
+
+namespace weave {
+namespace test {
+
+class MockDevice : public Device {
+ public:
+  ~MockDevice() override = default;
+
+  MOCK_CONST_METHOD0(GetSettings, const Settings&());
+  MOCK_METHOD1(AddSettingsChangedCallback,
+               void(const SettingsChangedCallback& callback));
+  MOCK_METHOD1(AddCommandAddedCallback, void(const CommandCallback&));
+  MOCK_METHOD1(AddCommandRemovedCallback, void(const CommandCallback&));
+  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_CONST_METHOD1(GetStateProperty,
+                     std::unique_ptr<base::Value>(const std::string& name));
+  MOCK_METHOD3(SetStateProperty,
+               bool(const std::string& name,
+                    const base::Value& value,
+                    ErrorPtr* error));
+  MOCK_METHOD2(SetStateProperties,
+               bool(const base::DictionaryValue& property_set,
+                    ErrorPtr* error));
+  MOCK_CONST_METHOD0(GetState, std::unique_ptr<base::DictionaryValue>());
+  MOCK_CONST_METHOD0(GetGcdState, GcdState());
+  MOCK_METHOD1(AddGcdStateChangedCallback,
+               void(const GcdStateChangedCallback& callback));
+  MOCK_METHOD2(Register,
+               std::string(const std::string& ticket_id, ErrorPtr* error));
+  MOCK_METHOD2(AddPairingChangedCallbacks,
+               void(const PairingBeginCallback& begin_callback,
+                    const PairingEndCallback& end_callback));
+};
+
+}  // namespace test
+}  // namespace weave
+
+#endif  // LIBWEAVE_INCLUDE_WEAVE_TEST_MOCK_DEVICE_H_
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h
index 305e8f5..2c5dd77 100644
--- a/libweave/src/commands/command_definition.h
+++ b/libweave/src/commands/command_definition.h
@@ -9,7 +9,6 @@
 #include <string>
 
 #include <base/macros.h>
-#include <weave/commands.h>
 
 #include "src/commands/object_schema.h"
 
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index 11a1c40..60b3d1c 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -175,12 +175,13 @@
   return true;
 }
 
-void CommandManager::AddCommandAddedCallback(const CommandCallback& callback) {
+void CommandManager::AddCommandAddedCallback(
+    const Device::CommandCallback& callback) {
   command_queue_.AddCommandAddedCallback(callback);
 }
 
 void CommandManager::AddCommandRemovedCallback(
-    const CommandCallback& callback) {
+    const Device::CommandCallback& callback) {
   command_queue_.AddCommandRemovedCallback(callback);
 }
 
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index 2b2f83d..605f770 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -12,7 +12,6 @@
 #include <base/callback.h>
 #include <base/macros.h>
 #include <base/memory/weak_ptr.h>
-#include <weave/commands.h>
 
 #include "src/commands/command_dictionary.h"
 #include "src/commands/command_queue.h"
@@ -28,19 +27,18 @@
 // 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 : public Commands {
+class CommandManager final {
  public:
   CommandManager();
 
-  ~CommandManager() override;
+  ~CommandManager();
 
-  // Commands overrides.
   bool AddCommand(const base::DictionaryValue& command,
                   std::string* id,
-                  ErrorPtr* error) override;
-  CommandInstance* FindCommand(const std::string& id) override;
-  void AddCommandAddedCallback(const CommandCallback& callback) override;
-  void AddCommandRemovedCallback(const CommandCallback& callback) override;
+                  ErrorPtr* error);
+  CommandInstance* FindCommand(const std::string& id);
+  void AddCommandAddedCallback(const Device::CommandCallback& callback);
+  void AddCommandRemovedCallback(const Device::CommandCallback& callback);
 
   // Sets callback which is called when command definitions is changed.
   void AddCommandDefChanged(const base::Closure& callback);
diff --git a/libweave/src/commands/command_queue.cc b/libweave/src/commands/command_queue.cc
index 46385de..e580048 100644
--- a/libweave/src/commands/command_queue.cc
+++ b/libweave/src/commands/command_queue.cc
@@ -14,7 +14,7 @@
 }
 
 void CommandQueue::AddCommandAddedCallback(
-    const Commands::CommandCallback& callback) {
+    const Device::CommandCallback& callback) {
   on_command_added_.push_back(callback);
   // Send all pre-existed commands.
   for (const auto& command : map_)
@@ -22,7 +22,7 @@
 }
 
 void CommandQueue::AddCommandRemovedCallback(
-    const Commands::CommandCallback& callback) {
+    const Device::CommandCallback& callback) {
   on_command_removed_.push_back(callback);
 }
 
diff --git a/libweave/src/commands/command_queue.h b/libweave/src/commands/command_queue.h
index 4b2e47c..c3e86d5 100644
--- a/libweave/src/commands/command_queue.h
+++ b/libweave/src/commands/command_queue.h
@@ -15,7 +15,7 @@
 #include <base/callback.h>
 #include <base/macros.h>
 #include <base/time/time.h>
-#include <weave/commands.h>
+#include <weave/device.h>
 
 #include "src/commands/command_instance.h"
 
@@ -26,10 +26,10 @@
   CommandQueue() = default;
 
   // Adds notifications callback for a new command is added to the queue.
-  void AddCommandAddedCallback(const Commands::CommandCallback& callback);
+  void AddCommandAddedCallback(const Device::CommandCallback& callback);
 
   // Adds notifications callback for a command is removed from the queue.
-  void AddCommandRemovedCallback(const Commands::CommandCallback& callback);
+  void AddCommandRemovedCallback(const Device::CommandCallback& callback);
 
   // Checks if the command queue is empty.
   bool IsEmpty() const { return map_.empty(); }
@@ -75,7 +75,7 @@
   // Queue of commands to be removed.
   std::queue<std::pair<base::Time, std::string>> remove_queue_;
 
-  using CallbackList = std::vector<Commands::CommandCallback>;
+  using CallbackList = std::vector<Device::CommandCallback>;
   CallbackList on_command_added_;
   CallbackList on_command_removed_;
 
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 79ef5d1..aedd425 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -59,7 +59,7 @@
 
 DeviceManager::~DeviceManager() {}
 
-const Settings& DeviceManager::GetSettings() {
+const Settings& DeviceManager::GetSettings() const {
   return device_info_->GetSettings();
 }
 
@@ -68,10 +68,6 @@
   device_info_->GetMutableConfig()->AddOnChangedCallback(callback);
 }
 
-Commands* DeviceManager::GetCommands() {
-  return command_manager_.get();
-}
-
 Config* DeviceManager::GetConfig() {
   return device_info_->GetMutableConfig();
 }
@@ -101,6 +97,24 @@
   state_manager_->AddChangedCallback(callback);
 }
 
+bool DeviceManager::AddCommand(const base::DictionaryValue& command,
+                               std::string* id,
+                               ErrorPtr* error) {
+  return command_manager_->AddCommand(command, id, error);
+}
+
+Command* DeviceManager::FindCommand(const std::string& id) {
+  return command_manager_->FindCommand(id);
+}
+
+void DeviceManager::AddCommandAddedCallback(const CommandCallback& callback) {
+  return command_manager_->AddCommandAddedCallback(callback);
+}
+
+void DeviceManager::AddCommandRemovedCallback(const CommandCallback& callback) {
+  return command_manager_->AddCommandRemovedCallback(callback);
+}
+
 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 fbf2871..d28d0b0 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -34,11 +34,15 @@
   ~DeviceManager() override;
 
   // Device implementation.
-  const Settings& GetSettings() override;
+  const Settings& GetSettings() const override;
   void AddSettingsChangedCallback(
       const SettingsChangedCallback& callback) override;
-  Commands* GetCommands() override;
-
+  bool AddCommand(const base::DictionaryValue& command,
+                  std::string* id,
+                  ErrorPtr* error) override;
+  Command* FindCommand(const std::string& id) override;
+  void AddCommandAddedCallback(const CommandCallback& callback) override;
+  void AddCommandRemovedCallback(const CommandCallback& callback) override;
   void AddStateChangedCallback(const base::Closure& callback) override;
   bool SetStateProperties(const base::DictionaryValue& property_set,
                           ErrorPtr* error) override;
@@ -48,13 +52,10 @@
                         const base::Value& value,
                         ErrorPtr* error) override;
   std::unique_ptr<base::DictionaryValue> GetState() const override;
-
   std::string Register(const std::string& ticket_id, ErrorPtr* error) override;
-
   GcdState GetGcdState() const override;
   void AddGcdStateChangedCallback(
       const GcdStateChangedCallback& callback) override;
-
   void AddPairingChangedCallbacks(
       const PairingBeginCallback& begin_callback,
       const PairingEndCallback& end_callback) override;
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index 9ab0a2a..ac6f9b8 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -14,7 +14,7 @@
 #include <weave/provider/test/mock_http_server.h>
 #include <weave/provider/test/mock_network.h>
 #include <weave/provider/test/mock_wifi.h>
-#include <weave/test/mock_commands.h>
+#include <weave/test/mock_device.h>
 #include <weave/test/unittest_utils.h>
 
 #include "src/bind_lambda.h"
@@ -270,6 +270,12 @@
   std::unique_ptr<weave::Device> device_;
 };
 
+TEST_F(WeaveTest, MockDevice) {
+  // Test checks if mock implements entire interface and mock can be
+  // instantiated.
+  test::MockDevice device;
+}
+
 TEST_F(WeaveTest, StartMinimal) {
   InitConfigStore();
   device_ = weave::Device::Create(&config_store_, &task_runner_, &http_client_,
