diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index 6ec8c85..52a131f 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -29,7 +29,6 @@
         'commands/schema_utils.cc',
         'data_encoding.cc',
         'dbus_constants.cc',
-        'dbus_utils.cc',
         'device_registration_info.cc',
         'http_request.cc',
         'http_connection_curl.cc',
diff --git a/buffet/dbus_utils.cc b/buffet/dbus_utils.cc
deleted file mode 100644
index ecb2f74..0000000
--- a/buffet/dbus_utils.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2014 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.
-
-#include "buffet/dbus_utils.h"
-
-#include <string>
-
-#include <base/bind.h>
-#include <base/logging.h>
-
-namespace buffet {
-
-namespace dbus_utils {
-
-namespace {
-
-// Passes |method_call| to |handler| and passes the response to
-// |response_sender|. If |handler| returns NULL, an empty response is created
-// and sent.
-void HandleSynchronousDBusMethodCall(
-    base::Callback<scoped_ptr<dbus::Response>(dbus::MethodCall*)> handler,
-    dbus::MethodCall* method_call,
-    dbus::ExportedObject::ResponseSender response_sender) {
-  auto response = handler.Run(method_call);
-  if (!response)
-    response = dbus::Response::FromMethodCall(method_call);
-
-  response_sender.Run(response.Pass());
-}
-
-}  // namespace
-
-scoped_ptr<dbus::Response> GetDBusError(dbus::MethodCall* method_call,
-                                        const chromeos::Error* error) {
-  std::string message;
-  while (error) {
-    // Format error string as "domain/code:message".
-    if (!message.empty())
-      message += ';';
-    message += error->GetDomain() + '/' + error->GetCode() + ':' +
-               error->GetMessage();
-    error = error->GetInnerError();
-  }
-  scoped_ptr<dbus::ErrorResponse> resp(dbus::ErrorResponse::FromMethodCall(
-    method_call, "org.freedesktop.DBus.Error.Failed", message));
-  return scoped_ptr<dbus::Response>(resp.release());
-}
-
-dbus::ExportedObject::MethodCallCallback GetExportableDBusMethod(
-    base::Callback<scoped_ptr<dbus::Response>(dbus::MethodCall*)> handler) {
-  return base::Bind(&HandleSynchronousDBusMethodCall, handler);
-}
-
-}  // namespace dbus_utils
-
-}  // namespace buffet
diff --git a/buffet/dbus_utils.h b/buffet/dbus_utils.h
deleted file mode 100644
index 9a2851c..0000000
--- a/buffet/dbus_utils.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2014 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 BUFFET_DBUS_UTILS_H_
-#define BUFFET_DBUS_UTILS_H_
-
-#include <base/memory/scoped_ptr.h>
-#include <chromeos/error.h>
-#include <dbus/exported_object.h>
-#include <dbus/message.h>
-
-namespace buffet {
-
-namespace dbus_utils {
-
-scoped_ptr<dbus::Response> GetDBusError(dbus::MethodCall* method_call,
-                                        const chromeos::Error* error);
-
-dbus::ExportedObject::MethodCallCallback GetExportableDBusMethod(
-    base::Callback<scoped_ptr<dbus::Response>(dbus::MethodCall*)> handler);
-
-}  // namespace dbus_utils
-
-}  // namespace buffet
-
-#endif  // BUFFET_DBUS_UTILS_H_
-
diff --git a/buffet/manager.cc b/buffet/manager.cc
index a039ae8..6c258ba 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -20,12 +20,11 @@
 
 #include "buffet/commands/command_manager.h"
 #include "buffet/dbus_constants.h"
-#include "buffet/dbus_utils.h"
 
 using chromeos::dbus_utils::AsyncEventSequencer;
 using chromeos::dbus_utils::GetBadArgsError;
 using chromeos::dbus_utils::ExportedObjectManager;
-using buffet::dbus_utils::GetDBusError;
+using chromeos::dbus_utils::GetDBusError;
 
 namespace buffet {
 
@@ -55,7 +54,7 @@
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface,
       dbus_constants::kManagerCheckDeviceRegistered,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleCheckDeviceRegistered,
           base::Unretained(this))),
       sequencer->GetExportHandler(
@@ -66,7 +65,7 @@
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface,
       dbus_constants::kManagerGetDeviceInfo,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleGetDeviceInfo,
           base::Unretained(this))),
       sequencer->GetExportHandler(
@@ -77,7 +76,7 @@
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface,
       dbus_constants::kManagerStartRegisterDevice,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleStartRegisterDevice,
           base::Unretained(this))),
       sequencer->GetExportHandler(
@@ -88,7 +87,7 @@
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface,
       dbus_constants::kManagerFinishRegisterDevice,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleFinishRegisterDevice,
           base::Unretained(this))),
       sequencer->GetExportHandler(
@@ -99,7 +98,7 @@
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface,
       dbus_constants::kManagerUpdateStateMethod,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleUpdateState,
           base::Unretained(this))),
       sequencer->GetExportHandler(
@@ -109,7 +108,7 @@
           true));
   exported_object_->ExportMethod(
       dbus_constants::kManagerInterface, dbus_constants::kManagerTestMethod,
-      dbus_utils::GetExportableDBusMethod(
+      chromeos::dbus_utils::GetExportableDBusMethod(
           base::Bind(&Manager::HandleTestMethod, base::Unretained(this))),
       sequencer->GetExportHandler(
           dbus_constants::kManagerInterface, dbus_constants::kManagerTestMethod,
@@ -153,14 +152,16 @@
   // treat it as a real error and report it to the caller.
   if (!registered &&
       !error->HasError(kErrorDomainGCD, "device_not_registered")) {
-    return GetDBusError(method_call, error.get());
+    return scoped_ptr<dbus::Response>(
+        GetDBusError(method_call, error.get()).release());
   }
 
   std::string device_id;
   if (registered) {
     device_id = device_info_->GetDeviceId(&error);
     if (device_id.empty())
-      return GetDBusError(method_call, error.get());
+      return scoped_ptr<dbus::Response>(
+          GetDBusError(method_call, error.get()).release());
   }
   // Send back our response.
   scoped_ptr<dbus::Response> response(
@@ -185,7 +186,8 @@
   chromeos::ErrorPtr error;
   auto device_info = device_info_->GetDeviceInfo(&error);
   if (!device_info)
-    return GetDBusError(method_call, error.get());
+    return scoped_ptr<dbus::Response>(
+        GetDBusError(method_call, error.get()).release());
 
   base::JSONWriter::Write(device_info.get(), &device_info_str);
 
@@ -230,7 +232,8 @@
   chromeos::ErrorPtr error;
   std::string id = device_info_->StartRegistration(params, &error);
   if (id.empty())
-    return GetDBusError(method_call, error.get());
+    return scoped_ptr<dbus::Response>(
+        GetDBusError(method_call, error.get()).release());
 
   // Send back our response.
   scoped_ptr<dbus::Response> response(
@@ -260,11 +263,13 @@
   LOG(INFO) << "Received call to Manager.FinishRegisterDevice()";
   chromeos::ErrorPtr error;
   if (!device_info_->FinishRegistration(user_auth_code, &error))
-    return GetDBusError(method_call, error.get());
+    return scoped_ptr<dbus::Response>(
+        GetDBusError(method_call, error.get()).release());
 
   std::string device_id = device_info_->GetDeviceId(&error);
   if (device_id.empty())
-    return GetDBusError(method_call, error.get());
+    return scoped_ptr<dbus::Response>(
+        GetDBusError(method_call, error.get()).release());
 
   // Send back our response.
   scoped_ptr<dbus::Response> response(
