diff --git a/src/privet/cloud_delegate.cc b/src/privet/cloud_delegate.cc
index 0833780..65e4b87 100644
--- a/src/privet/cloud_delegate.cc
+++ b/src/privet/cloud_delegate.cc
@@ -46,8 +46,6 @@
       : task_runner_{task_runner},
         device_{device},
         component_manager_{component_manager} {
-    device_->GetMutableConfig()->AddOnChangedCallback(base::Bind(
-        &CloudDelegateImpl::OnConfigChanged, weak_factory_.GetWeakPtr()));
     device_->AddGcdStateChangedCallback(base::Bind(
         &CloudDelegateImpl::OnRegistrationChanged, weak_factory_.GetWeakPtr()));
 
@@ -244,8 +242,6 @@
     CHECK(command_owners_.erase(command->GetID()));
   }
 
-  void OnConfigChanged(const Settings&) { NotifyOnDeviceInfoChanged(); }
-
   void OnRegistrationChanged(GcdState status) {
     if (status == GcdState::kUnconfigured ||
         status == GcdState::kInvalidCredentials) {
@@ -262,7 +258,6 @@
                          EnumToString(status).c_str());
       connection_state_ = ConnectionState{std::move(error)};
     }
-    NotifyOnDeviceInfoChanged();
   }
 
   void OnRegisterSuccess(const std::string& cloud_id) {
@@ -378,10 +373,6 @@
       new CloudDelegateImpl{task_runner, device, component_manager}};
 }
 
-void CloudDelegate::NotifyOnDeviceInfoChanged() {
-  FOR_EACH_OBSERVER(Observer, observer_list_, OnDeviceInfoChanged());
-}
-
 void CloudDelegate::NotifyOnTraitDefsChanged() {
   FOR_EACH_OBSERVER(Observer, observer_list_, OnTraitDefsChanged());
 }
diff --git a/src/privet/cloud_delegate.h b/src/privet/cloud_delegate.h
index 5ae54cf..4ded884 100644
--- a/src/privet/cloud_delegate.h
+++ b/src/privet/cloud_delegate.h
@@ -47,7 +47,6 @@
    public:
     virtual ~Observer() {}
 
-    virtual void OnDeviceInfoChanged() {}
     virtual void OnTraitDefsChanged() {}
     virtual void OnStateChanged() {}
     virtual void OnComponentTreeChanged() {}
@@ -136,7 +135,6 @@
     observer_list_.RemoveObserver(observer);
   }
 
-  void NotifyOnDeviceInfoChanged();
   void NotifyOnTraitDefsChanged();
   void NotifyOnStateChanged();
   void NotifyOnComponentTreeChanged();
diff --git a/src/privet/privet_manager.cc b/src/privet/privet_manager.cc
index 9c717ce..36223ba 100644
--- a/src/privet/privet_manager.cc
+++ b/src/privet/privet_manager.cc
@@ -12,7 +12,6 @@
 #include <base/json/json_reader.h>
 #include <base/json/json_writer.h>
 #include <base/memory/weak_ptr.h>
-#include <base/scoped_observer.h>
 #include <base/strings/string_number_conversions.h>
 #include <base/values.h>
 #include <weave/provider/network.h>
@@ -58,7 +57,6 @@
       http_server->GetRequestTimeout());
   cloud_ =
       CloudDelegate::CreateDefault(task_runner_, device, component_manager);
-  cloud_observer_.Add(cloud_.get());
 
   security_.reset(new SecurityManager(device->GetMutableConfig(), auth_manager,
                                       task_runner_));
@@ -92,6 +90,9 @@
         path, base::Bind(&Manager::PrivetRequestHandler,
                          weak_ptr_factory_.GetWeakPtr()));
   }
+
+  device->GetMutableConfig()->AddOnChangedCallback(base::Bind(
+      &Manager::OnDeviceInfoChanged, weak_ptr_factory_.GetWeakPtr()));
 }
 
 std::string Manager::GetCurrentlyConnectedSsid() const {
@@ -106,7 +107,7 @@
   security_->RegisterPairingListeners(on_start, on_end);
 }
 
-void Manager::OnDeviceInfoChanged() {
+void Manager::OnDeviceInfoChanged(const weave::Settings&) {
   OnChanged();
 }
 
diff --git a/src/privet/privet_manager.h b/src/privet/privet_manager.h
index 06eb89a..c91d72c 100644
--- a/src/privet/privet_manager.h
+++ b/src/privet/privet_manager.h
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include <base/memory/weak_ptr.h>
-#include <base/scoped_observer.h>
 #include <weave/device.h>
 
 #include "src/privet/cloud_delegate.h"
@@ -41,10 +40,10 @@
 class Publisher;
 class SecurityManager;
 
-class Manager : public CloudDelegate::Observer {
+class Manager {
  public:
   explicit Manager(provider::TaskRunner* task_runner);
-  ~Manager() override;
+  ~Manager();
 
   void Start(provider::Network* network,
              provider::DnsServiceDiscovery* dns_sd,
@@ -61,8 +60,7 @@
       const Device::PairingEndCallback& end_callback);
 
  private:
-  // CloudDelegate::Observer
-  void OnDeviceInfoChanged() override;
+  void OnDeviceInfoChanged(const weave::Settings&);
 
   void PrivetRequestHandler(
       std::unique_ptr<provider::HttpServer::Request> request);
@@ -87,8 +85,6 @@
   std::unique_ptr<Publisher> publisher_;
   std::unique_ptr<PrivetHandler> privet_handler_;
 
-  ScopedObserver<CloudDelegate, CloudDelegate::Observer> cloud_observer_{this};
-
   base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
   DISALLOW_COPY_AND_ASSIGN(Manager);
 };
