diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index d6fb0ad..8d22323 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -27,6 +27,9 @@
       'sources': [
         'dbus_bindings/org.chromium.Buffet.Command.xml',
         'dbus_bindings/org.chromium.Buffet.Manager.xml',
+        'dbus_command_dispatcher.cc',
+        'dbus_command_proxy.cc',
+        'dbus_conversion.cc',
         'dbus_constants.cc',
         'manager.cc',
         '../libweave/src/base_api_handler.cc',
@@ -37,9 +40,6 @@
         '../libweave/src/commands/command_instance.cc',
         '../libweave/src/commands/command_manager.cc',
         '../libweave/src/commands/command_queue.cc',
-        '../libweave/src/commands/dbus_command_dispatcher.cc',
-        '../libweave/src/commands/dbus_command_proxy.cc',
-        '../libweave/src/commands/dbus_conversion.cc',
         '../libweave/src/commands/object_schema.cc',
         '../libweave/src/commands/prop_constraints.cc',
         '../libweave/src/commands/prop_types.cc',
@@ -184,6 +184,8 @@
           },
           'includes': ['../common-mk/common_test.gypi'],
           'sources': [
+            'dbus_command_proxy_unittest.cc',
+            'dbus_conversion_unittest.cc',
             '../libweave/src/base_api_handler_unittest.cc',
             '../libweave/src/buffet_config_unittest.cc',
             '../libweave/src/buffet_testrunner.cc',
@@ -193,8 +195,6 @@
             '../libweave/src/commands/command_instance_unittest.cc',
             '../libweave/src/commands/command_manager_unittest.cc',
             '../libweave/src/commands/command_queue_unittest.cc',
-            '../libweave/src/commands/dbus_command_proxy_unittest.cc',
-            '../libweave/src/commands/dbus_conversion_unittest.cc',
             '../libweave/src/commands/mock_command.cc',
             '../libweave/src/commands/object_schema_unittest.cc',
             '../libweave/src/commands/schema_utils_unittest.cc',
diff --git a/libweave/src/commands/dbus_command_dispatcher.cc b/buffet/dbus_command_dispatcher.cc
similarity index 80%
rename from libweave/src/commands/dbus_command_dispatcher.cc
rename to buffet/dbus_command_dispatcher.cc
index e11dbc3..39e106b 100644
--- a/libweave/src/commands/dbus_command_dispatcher.cc
+++ b/buffet/dbus_command_dispatcher.cc
@@ -2,28 +2,28 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/dbus_command_dispatcher.h"
+#include "buffet/dbus_command_dispatcher.h"
 
 #include <chromeos/dbus/exported_object_manager.h>
 
+#include "buffet/dbus_command_proxy.h"
 #include "buffet/dbus_constants.h"
-#include "libweave/src/commands/dbus_command_proxy.h"
 #include "weave/command.h"
 
 using chromeos::dbus_utils::AsyncEventSequencer;
 using chromeos::dbus_utils::ExportedObjectManager;
 
-namespace weave {
+namespace buffet {
 
 DBusCommandDispacher::DBusCommandDispacher(
     const base::WeakPtr<ExportedObjectManager>& object_manager,
-    Commands* command_manager)
+    weave::Commands* command_manager)
     : object_manager_{object_manager} {
   command_manager->AddOnCommandAddedCallback(base::Bind(
       &DBusCommandDispacher::OnCommandAdded, weak_ptr_factory_.GetWeakPtr()));
 }
 
-void DBusCommandDispacher::OnCommandAdded(Command* command) {
+void DBusCommandDispacher::OnCommandAdded(weave::Command* command) {
   if (!object_manager_)
     return;
   std::unique_ptr<DBusCommandProxy> proxy{new DBusCommandProxy(
@@ -33,4 +33,4 @@
   command->AddObserver(proxy.release());
 }
 
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/commands/dbus_command_dispatcher.h b/buffet/dbus_command_dispatcher.h
similarity index 81%
rename from libweave/src/commands/dbus_command_dispatcher.h
rename to buffet/dbus_command_dispatcher.h
index e3c10ae..ae8e499 100644
--- a/libweave/src/commands/dbus_command_dispatcher.h
+++ b/buffet/dbus_command_dispatcher.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_DISPATCHER_H_
-#define LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_DISPATCHER_H_
+#ifndef BUFFET_DBUS_COMMAND_DISPATCHER_H_
+#define BUFFET_DBUS_COMMAND_DISPATCHER_H_
 
 #include <map>
 #include <string>
@@ -19,9 +19,7 @@
 }  // namespace dbus_utils
 }  // namespace chromeos
 
-namespace weave {
-
-class CommandInstance;
+namespace buffet {
 
 // Implements D-Bus dispatch of commands. When OnCommandAdded is called,
 // DBusCommandDispacher creates an instance of DBusCommandProxy object and
@@ -35,10 +33,10 @@
   explicit DBusCommandDispacher(
       const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
           object_manager,
-      Commands* command_manager);
+      weave::Commands* command_manager);
 
  private:
-  void OnCommandAdded(Command* command);
+  void OnCommandAdded(weave::Command* command);
 
   base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager> object_manager_;
   int next_id_{0};
@@ -51,6 +49,6 @@
   DISALLOW_COPY_AND_ASSIGN(DBusCommandDispacher);
 };
 
-}  // namespace weave
+}  // namespace buffet
 
-#endif  // LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_DISPATCHER_H_
+#endif  // BUFFET_DBUS_COMMAND_DISPATCHER_H_
diff --git a/libweave/src/commands/dbus_command_proxy.cc b/buffet/dbus_command_proxy.cc
similarity index 93%
rename from libweave/src/commands/dbus_command_proxy.cc
rename to buffet/dbus_command_proxy.cc
index 1ad5d59..d53355a 100644
--- a/libweave/src/commands/dbus_command_proxy.cc
+++ b/buffet/dbus_command_proxy.cc
@@ -2,22 +2,22 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/dbus_command_proxy.h"
+#include "buffet/dbus_command_proxy.h"
 
 #include <chromeos/dbus/async_event_sequencer.h>
 #include <chromeos/dbus/exported_object_manager.h>
 
-#include "libweave/src/commands/dbus_conversion.h"
+#include "buffet/dbus_conversion.h"
 #include "weave/enum_to_string.h"
 
 using chromeos::dbus_utils::AsyncEventSequencer;
 using chromeos::dbus_utils::ExportedObjectManager;
 
-namespace weave {
+namespace buffet {
 
 DBusCommandProxy::DBusCommandProxy(ExportedObjectManager* object_manager,
                                    const scoped_refptr<dbus::Bus>& bus,
-                                   Command* command,
+                                   weave::Command* command,
                                    std::string object_path)
     : command_{command},
       dbus_object_{object_manager, bus, dbus::ObjectPath{object_path}} {}
@@ -100,4 +100,4 @@
   command_->Done();
 }
 
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/commands/dbus_command_proxy.h b/buffet/dbus_command_proxy.h
similarity index 85%
rename from libweave/src/commands/dbus_command_proxy.h
rename to buffet/dbus_command_proxy.h
index 66ae17b..86d9c6e 100644
--- a/libweave/src/commands/dbus_command_proxy.h
+++ b/buffet/dbus_command_proxy.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_PROXY_H_
-#define LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_PROXY_H_
+#ifndef BUFFET_DBUS_COMMAND_PROXY_H_
+#define BUFFET_DBUS_COMMAND_PROXY_H_
 
 #include <string>
 
@@ -20,16 +20,14 @@
 }  // namespace dbus_utils
 }  // namespace chromeos
 
-namespace weave {
+namespace buffet {
 
-class CommandInstance;
-
-class DBusCommandProxy : public Command::Observer,
+class DBusCommandProxy : public weave::Command::Observer,
                          public org::chromium::Buffet::CommandInterface {
  public:
   DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
                    const scoped_refptr<dbus::Bus>& bus,
-                   Command* command,
+                   weave::Command* command,
                    std::string object_path);
   ~DBusCommandProxy() override = default;
 
@@ -57,7 +55,7 @@
   // Handles calls to org.chromium.Buffet.Command.Done().
   void Done() override;
 
-  Command* command_;
+  weave::Command* command_;
   org::chromium::Buffet::CommandAdaptor dbus_adaptor_{this};
   chromeos::dbus_utils::DBusObject dbus_object_;
 
@@ -66,6 +64,6 @@
   DISALLOW_COPY_AND_ASSIGN(DBusCommandProxy);
 };
 
-}  // namespace weave
+}  // namespace buffet
 
-#endif  // LIBWEAVE_SRC_COMMANDS_DBUS_COMMAND_PROXY_H_
+#endif  // BUFFET_DBUS_COMMAND_PROXY_H_
diff --git a/libweave/src/commands/dbus_command_proxy_unittest.cc b/buffet/dbus_command_proxy_unittest.cc
similarity index 89%
rename from libweave/src/commands/dbus_command_proxy_unittest.cc
rename to buffet/dbus_command_proxy_unittest.cc
index 9d26892..93f5d01 100644
--- a/libweave/src/commands/dbus_command_proxy_unittest.cc
+++ b/buffet/dbus_command_proxy_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/dbus_command_proxy.h"
+#include "buffet/dbus_command_proxy.h"
 
 #include <functional>
 #include <memory>
@@ -16,14 +16,13 @@
 #include <gtest/gtest.h>
 
 #include "buffet/dbus_constants.h"
-#include "libweave/src/commands/unittest_utils.h"
 #include "weave/command.h"
-
 #include "weave/enum_to_string.h"
 #include "weave/mock_command.h"
 #include "weave/mock_commands.h"
+#include "weave/unittest_utils.h"
 
-namespace weave {
+namespace buffet {
 
 using ::testing::AnyNumber;
 using ::testing::Return;
@@ -32,7 +31,8 @@
 
 using chromeos::VariantDictionary;
 using chromeos::dbus_utils::AsyncEventSequencer;
-using unittests::CreateDictionaryValue;
+using weave::unittests::CreateDictionaryValue;
+using weave::unittests::IsEqualValue;
 
 namespace {
 
@@ -41,7 +41,7 @@
 
 MATCHER_P(EqualToJson, json, "") {
   auto json_value = CreateDictionaryValue(json);
-  return unittests::IsEqualValue(*json_value, arg);
+  return IsEqualValue(*json_value, arg);
 }
 
 }  // namespace
@@ -64,8 +64,10 @@
         .WillRepeatedly(ReturnRefOfCopy<std::string>("robot.jump"));
     EXPECT_CALL(command_, GetCategory())
         .WillOnce(ReturnRefOfCopy<std::string>(kTestCommandCategoty));
-    EXPECT_CALL(command_, GetStatus()).WillOnce(Return(CommandStatus::kQueued));
-    EXPECT_CALL(command_, GetOrigin()).WillOnce(Return(CommandOrigin::kLocal));
+    EXPECT_CALL(command_, GetStatus())
+        .WillOnce(Return(weave::CommandStatus::kQueued));
+    EXPECT_CALL(command_, GetOrigin())
+        .WillOnce(Return(weave::CommandOrigin::kLocal));
     EXPECT_CALL(command_, MockGetParameters())
         .WillOnce(ReturnRefOfCopy<std::string>(R"({
           'height': 53,
@@ -110,8 +112,8 @@
     return GetCommandProxy();
   }
 
-  CommandStatus GetCommandStatus() const {
-    CommandStatus status;
+  weave::CommandStatus GetCommandStatus() const {
+    weave::CommandStatus status;
     EXPECT_TRUE(StringToEnum(GetCommandAdaptor()->GetStatus(), &status));
     return status;
   }
@@ -119,7 +121,7 @@
   scoped_refptr<dbus::MockExportedObject> mock_exported_object_command_;
   scoped_refptr<dbus::MockBus> bus_;
 
-  unittests::MockCommand command_;
+  weave::unittests::MockCommand command_;
   std::unique_ptr<DBusCommandProxy> proxy_;
 };
 
@@ -127,7 +129,7 @@
   VariantDictionary params = {
       {"height", int32_t{53}}, {"_jumpType", std::string{"_withKick"}},
   };
-  EXPECT_EQ(CommandStatus::kQueued, GetCommandStatus());
+  EXPECT_EQ(weave::CommandStatus::kQueued, GetCommandStatus());
   EXPECT_EQ(params, GetCommandAdaptor()->GetParameters());
   EXPECT_EQ(VariantDictionary{}, GetCommandAdaptor()->GetProgress());
   EXPECT_EQ(VariantDictionary{}, GetCommandAdaptor()->GetResults());
@@ -161,9 +163,9 @@
 TEST_F(DBusCommandProxyTest, OnStatusChanged) {
   EXPECT_CALL(*mock_exported_object_command_, SendSignal(_)).Times(1);
   EXPECT_CALL(command_, GetStatus())
-      .WillOnce(Return(CommandStatus::kInProgress));
+      .WillOnce(Return(weave::CommandStatus::kInProgress));
   proxy_->OnStatusChanged();
-  EXPECT_EQ(CommandStatus::kInProgress, GetCommandStatus());
+  EXPECT_EQ(weave::CommandStatus::kInProgress, GetCommandStatus());
 }
 
 TEST_F(DBusCommandProxyTest, SetProgress) {
@@ -201,4 +203,4 @@
   GetCommandInterface()->Done();
 }
 
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/commands/dbus_conversion.cc b/buffet/dbus_conversion.cc
similarity index 95%
rename from libweave/src/commands/dbus_conversion.cc
rename to buffet/dbus_conversion.cc
index d634081..51d35f1 100644
--- a/libweave/src/commands/dbus_conversion.cc
+++ b/buffet/dbus_conversion.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/dbus_conversion.h"
+#include "buffet/dbus_conversion.h"
 
 #include <set>
 #include <string>
@@ -10,11 +10,7 @@
 
 #include <chromeos/type_name_undecorate.h>
 
-#include "libweave/src/commands/object_schema.h"
-#include "libweave/src/commands/prop_types.h"
-#include "libweave/src/commands/prop_values.h"
-
-namespace weave {
+namespace buffet {
 
 namespace {
 
@@ -213,8 +209,7 @@
     return result;
 
   chromeos::Error::AddToPrintf(
-      error, FROM_HERE, errors::commands::kDomain,
-      errors::commands::kUnknownType, "Type '%s' is not supported.",
+      error, FROM_HERE, "buffet", "unknown_type", "Type '%s' is not supported.",
       chromeos::UndecorateTypeName(any.GetType().name()).c_str());
 
   return nullptr;
@@ -248,4 +243,4 @@
   return result;
 }
 
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/commands/dbus_conversion.h b/buffet/dbus_conversion.h
similarity index 73%
rename from libweave/src/commands/dbus_conversion.h
rename to buffet/dbus_conversion.h
index 6464cb0..20c3f58 100644
--- a/libweave/src/commands/dbus_conversion.h
+++ b/buffet/dbus_conversion.h
@@ -2,17 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_SRC_COMMANDS_DBUS_CONVERSION_H_
-#define LIBWEAVE_SRC_COMMANDS_DBUS_CONVERSION_H_
+#ifndef BUFFET_DBUS_CONVERSION_H_
+#define BUFFET_DBUS_CONVERSION_H_
 
 #include <base/values.h>
 #include <chromeos/any.h>
 #include <chromeos/errors/error.h>
 #include <chromeos/variant_dictionary.h>
 
-#include "libweave/src/commands/schema_utils.h"
-
-namespace weave {
+namespace buffet {
 
 // Converts DictionaryValue to D-Bus variant dictionary.
 chromeos::VariantDictionary DictionaryToDBusVariantDictionary(
@@ -23,6 +21,6 @@
     const chromeos::VariantDictionary& object,
     chromeos::ErrorPtr* error);
 
-}  // namespace weave
+}  // namespace buffet
 
-#endif  // LIBWEAVE_SRC_COMMANDS_DBUS_CONVERSION_H_
+#endif  // BUFFET_DBUS_CONVERSION_H_
diff --git a/libweave/src/commands/dbus_conversion_unittest.cc b/buffet/dbus_conversion_unittest.cc
similarity index 95%
rename from libweave/src/commands/dbus_conversion_unittest.cc
rename to buffet/dbus_conversion_unittest.cc
index 28c423a..7a00c35 100644
--- a/libweave/src/commands/dbus_conversion_unittest.cc
+++ b/buffet/dbus_conversion_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/commands/dbus_conversion.h"
+#include "buffet/dbus_conversion.h"
 
 #include <limits>
 #include <memory>
@@ -15,16 +15,16 @@
 #include <chromeos/variant_dictionary.h>
 #include <gtest/gtest.h>
 
-#include "libweave/src/commands/object_schema.h"
-#include "libweave/src/commands/unittest_utils.h"
+#include "weave/unittest_utils.h"
 
-namespace weave {
+namespace buffet {
 
 namespace {
 
 using chromeos::Any;
 using chromeos::VariantDictionary;
-using unittests::CreateDictionaryValue;
+using weave::unittests::CreateDictionaryValue;
+using weave::unittests::IsEqualValue;
 
 chromeos::VariantDictionary ToDBus(const base::DictionaryValue& object) {
   return DictionaryToDBusVariantDictionary(object);
@@ -182,7 +182,7 @@
   auto dict = CreateRandomDictionary(10000);
   auto varian_dict = ToDBus(*dict);
   auto dict_restored = FromDBus(varian_dict);
-  EXPECT_PRED2(unittests::IsEqualValue, *dict, *dict_restored);
+  EXPECT_PRED2(IsEqualValue, *dict, *dict_restored);
 }
 
-}  // namespace weave
+}  // namespace buffet
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 0b64d5b..85c61c1 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -23,9 +23,8 @@
 #include <dbus/object_path.h>
 #include <dbus/values_util.h>
 
-// TODO(vitalybuka): Will be moved into buffet soon.
-#include "libweave/src/commands/dbus_command_dispatcher.h"
-#include "libweave/src/commands/dbus_conversion.h"
+#include "buffet/dbus_command_dispatcher.h"
+#include "buffet/dbus_conversion.h"
 #include "weave/enum_to_string.h"
 
 using chromeos::dbus_utils::AsyncEventSequencer;
@@ -58,7 +57,7 @@
   device_ = weave::Device::Create();
   device_->Start(options, &dbus_object_, sequencer);
 
-  command_dispatcher_.reset(new weave::DBusCommandDispacher{
+  command_dispatcher_.reset(new DBusCommandDispacher{
       dbus_object_.GetObjectManager(), device_->GetCommands()});
 
   device_->GetState()->AddOnChangedCallback(
@@ -143,8 +142,7 @@
 void Manager::UpdateState(DBusMethodResponsePtr<> response,
                           const chromeos::VariantDictionary& property_set) {
   chromeos::ErrorPtr error;
-  auto properties =
-      weave::DictionaryFromDBusVariantDictionary(property_set, &error);
+  auto properties = DictionaryFromDBusVariantDictionary(property_set, &error);
   if (!properties)
     response->ReplyWithError(error.get());
 
diff --git a/buffet/manager.h b/buffet/manager.h
index ef433e2..9dc84d8 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -22,10 +22,6 @@
 #include "buffet/org.chromium.Buffet.Manager.h"
 #include "weave/device.h"
 
-namespace weave {
-class DBusCommandDispacher;
-}
-
 namespace chromeos {
 namespace dbus_utils {
 class ExportedObjectManager;
@@ -34,6 +30,8 @@
 
 namespace buffet {
 
+class DBusCommandDispacher;
+
 template<typename... Types>
 using DBusMethodResponsePtr =
     std::unique_ptr<chromeos::dbus_utils::DBusMethodResponse<Types...>>;
@@ -117,7 +115,7 @@
   chromeos::dbus_utils::DBusObject dbus_object_;
 
   std::unique_ptr<weave::Device> device_;
-  std::unique_ptr<weave::DBusCommandDispacher> command_dispatcher_;
+  std::unique_ptr<DBusCommandDispacher> command_dispatcher_;
 
   base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
   DISALLOW_COPY_AND_ASSIGN(Manager);
diff --git a/libweave/src/commands/unittest_utils.cc b/libweave/src/commands/unittest_utils.cc
index 18a7108..0b9c2e3 100644
--- a/libweave/src/commands/unittest_utils.cc
+++ b/libweave/src/commands/unittest_utils.cc
@@ -5,7 +5,6 @@
 #include "libweave/src/commands/unittest_utils.h"
 
 #include <base/json/json_reader.h>
-#include <base/json/json_writer.h>
 
 namespace weave {
 namespace unittests {
