diff --git a/buffet/commands/command_manager.cc b/buffet/commands/command_manager.cc
index dd90e7d..de2125b 100644
--- a/buffet/commands/command_manager.cc
+++ b/buffet/commands/command_manager.cc
@@ -53,7 +53,8 @@
                                   chromeos::ErrorPtr* error) {
   bool result =
       dictionary_.LoadCommands(json, category, &base_dictionary_, error);
-  on_command_changed_.Notify();
+  for (const auto& cb : on_command_changed_)
+    cb.Run();
   return result;
 }
 
@@ -128,10 +129,10 @@
 
   // Now that we know that all the command names were valid,
   // update the respective commands' visibility.
-  for (CommandDefinition* def : definitions) {
+  for (CommandDefinition* def : definitions)
     def->SetVisibility(visibility);
-  }
-  on_command_changed_.Notify();
+  for (const auto& cb : on_command_changed_)
+    cb.Run();
   return true;
 }
 
diff --git a/buffet/commands/command_manager.h b/buffet/commands/command_manager.h
index 072d055..b2b9eba 100644
--- a/buffet/commands/command_manager.h
+++ b/buffet/commands/command_manager.h
@@ -10,7 +10,6 @@
 #include <vector>
 
 #include <base/callback.h>
-#include <base/callback_list.h>
 #include <base/files/file_path.h>
 #include <base/macros.h>
 #include <base/memory/weak_ptr.h>
@@ -35,13 +34,6 @@
 // dispatched to the device.
 class CommandManager final {
  public:
-  // A token given by CommandManager in response to AddOnCommandDefChanged().
-  // When the CallbackToken is destroyed, the registered notification
-  // callback associated with it will automatically be removed from the command
-  // manager's callback list.
-  using CallbackToken =
-      std::unique_ptr<base::CallbackList<void()>::Subscription>;
-
   CommandManager();
   explicit CommandManager(
       const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
@@ -50,9 +42,8 @@
   explicit CommandManager(CommandDispachInterface* dispatch_interface);
 
   // Sets callback which is called when command definitions is changed.
-  CallbackToken AddOnCommandDefChanged(
-      const base::Closure& callback) WARN_UNUSED_RESULT {
-    return CallbackToken{on_command_changed_.Add(callback).release()};
+  void AddOnCommandDefChanged(const base::Closure& callback) {
+    return on_command_changed_.push_back(callback);
   }
 
   // Returns the command definitions for the device.
@@ -114,7 +105,7 @@
   CommandDictionary dictionary_;  // Command definitions/schemas.
   CommandQueue command_queue_;
   DBusCommandDispacher command_dispatcher_;
-  base::CallbackList<void()> on_command_changed_;
+  std::vector<base::Callback<void()>> on_command_changed_;
 
   DISALLOW_COPY_AND_ASSIGN(CommandManager);
 };
diff --git a/buffet/commands/command_manager_unittest.cc b/buffet/commands/command_manager_unittest.cc
index 5b45cee..76a3246 100644
--- a/buffet/commands/command_manager_unittest.cc
+++ b/buffet/commands/command_manager_unittest.cc
@@ -164,7 +164,7 @@
   CommandManager manager;
   int update_count = 0;
   auto on_command_change = [&update_count]() { update_count++; };
-  auto token = manager.AddOnCommandDefChanged(base::Bind(on_command_change));
+  manager.AddOnCommandDefChanged(base::Bind(on_command_change));
 
   auto json = CreateDictionaryValue(R"({
     'foo': {
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index 3ed70a8..0ef58d7 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -141,7 +141,7 @@
       xmpp_enabled_{xmpp_enabled},
       manager_{manager} {
   OnConfigChanged();
-  command_changed_callback_token_ = command_manager_->AddOnCommandDefChanged(
+  command_manager_->AddOnCommandDefChanged(
       base::Bind(&DeviceRegistrationInfo::OnCommandDefsChanged,
                  weak_factory_.GetWeakPtr()));
 }
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h
index 8f74d2a..a762758 100644
--- a/buffet/device_registration_info.h
+++ b/buffet/device_registration_info.h
@@ -255,10 +255,6 @@
   // Device state manager.
   std::shared_ptr<StateManager> state_manager_;
 
-  // Token given by Command Manager to track the registered Command Definition
-  // change callback.
-  CommandManager::CallbackToken command_changed_callback_token_;
-
   std::unique_ptr<BuffetConfig> config_;
 
   const bool xmpp_enabled_;
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 82ee7a8..a5fff7d 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -53,8 +53,8 @@
                     const AsyncEventSequencer::CompletionAction& cb) {
   command_manager_ =
       std::make_shared<CommandManager>(dbus_object_.GetObjectManager());
-  command_changed_callback_token_ = command_manager_->AddOnCommandDefChanged(
-      base::Bind(&Manager::OnCommandDefsChanged, base::Unretained(this)));
+  command_manager_->AddOnCommandDefChanged(base::Bind(
+      &Manager::OnCommandDefsChanged, weak_ptr_factory_.GetWeakPtr()));
   command_manager_->Startup(base::FilePath{"/etc/buffet"},
                             test_definitions_path);
   state_change_queue_ = std::unique_ptr<StateChangeQueue>(
diff --git a/buffet/manager.h b/buffet/manager.h
index cc3a114..a685a05 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -89,9 +89,7 @@
   std::shared_ptr<StateManager> state_manager_;
   std::unique_ptr<DeviceRegistrationInfo> device_info_;
 
-  // Token given by Command Manager to track the registered Command Definition
-  // change callback.
-  CommandManager::CallbackToken command_changed_callback_token_;
+  base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(Manager);
 };
