diff --git a/buffet/exported_object_manager.h b/buffet/exported_object_manager.h
index 212609e..978c84e 100644
--- a/buffet/exported_object_manager.h
+++ b/buffet/exported_object_manager.h
@@ -94,13 +94,15 @@
   void ReleaseInterface(const dbus::ObjectPath& path,
                         const std::string& interface_name);
 
+  const scoped_refptr<dbus::Bus>& GetBus() const { return bus_; }
+
  private:
   void HandleGetManagedObjects(
       dbus::MethodCall* method_call,
       dbus::ExportedObject::ResponseSender response_sender) const;
 
-  // Both |bus_| and |exported_object_| outlive *this.
-  dbus::Bus* const bus_;
+  scoped_refptr<dbus::Bus> bus_;
+  // |exported_object_| outlives *this.
   dbus::ExportedObject* const exported_object_;
   // Tracks all objects currently known to the ExportedObjectManager.
   std::map<dbus::ObjectPath, InterfaceProperties> registered_objects_;
diff --git a/buffet/main.cc b/buffet/main.cc
index eb25d13..b70421b 100644
--- a/buffet/main.cc
+++ b/buffet/main.cc
@@ -78,7 +78,7 @@
   logging::InitLogging(settings);
 }
 
-void TakeServiceOwnership(scoped_refptr<dbus::Bus> bus, bool success) {
+void TakeServiceOwnership(const scoped_refptr<dbus::Bus>& bus, bool success) {
   // Success should always be true since we've said that failures are
   // fatal.
   CHECK(success) << "Init of one or more objects has failed.";
@@ -88,11 +88,11 @@
 }
 
 void EnterMainLoop(base::MessageLoopForIO* message_loop,
-                   scoped_refptr<dbus::Bus> bus) {
+                   const scoped_refptr<dbus::Bus>& bus) {
   scoped_refptr<AsyncEventSequencer> sequencer(new AsyncEventSequencer());
   ExportedObjectManager object_manager(
       bus, dbus::ObjectPath(buffet::dbus_constants::kRootServicePath));
-  buffet::Manager manager(bus, object_manager.AsWeakPtr());
+  buffet::Manager manager(object_manager.AsWeakPtr());
   object_manager.Init(
       sequencer->GetHandler("ObjectManager.Init() failed.", true));
   manager.Init(sequencer->GetHandler("Manager.Init() failed.", true));
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 39ccf7d..1cb0da2 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -29,10 +29,8 @@
 namespace buffet {
 
 Manager::Manager(
-    scoped_refptr<dbus::Bus> bus,
-    base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager)
-    : bus_(bus),
-      exported_object_(bus->GetExportedObject(
+    const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager)
+    : exported_object_(object_manager->GetBus()->GetExportedObject(
           dbus::ObjectPath(dbus_constants::kManagerServicePath))),
       object_manager_(object_manager) { }
 
@@ -116,7 +114,7 @@
           dbus_constants::kManagerInterface, dbus_constants::kManagerTestMethod,
           "Failed exporting TestMethod method",
           true));
-  properties_.reset(new Properties(bus_));
+  properties_.reset(new Properties(object_manager_->GetBus()));
   // TODO(wiley): Initialize all properties appropriately before claiming
   //              the properties interface.
   properties_->state_.SetValue("{}");
diff --git a/buffet/manager.h b/buffet/manager.h
index 08e7656..6bfccd0 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -35,8 +35,8 @@
  public:
   typedef base::Callback<void(bool success)> OnInitFinish;
 
-  Manager(scoped_refptr<dbus::Bus> bus,
-          base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager);
+  Manager(
+      const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager);
   ~Manager();
   void Init(const OnInitFinish& cb);
 
@@ -71,7 +71,6 @@
   scoped_ptr<::dbus::Response> HandleTestMethod(
       ::dbus::MethodCall* method_call);
 
-  scoped_refptr<dbus::Bus> bus_;
   dbus::ExportedObject* exported_object_;  // weak; owned by the Bus object.
   base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager_;
   scoped_ptr<Properties> properties_;
