diff --git a/buffet/ap_manager_client.cc b/buffet/ap_manager_client.cc
index 04a3d4c..bce571e 100644
--- a/buffet/ap_manager_client.cc
+++ b/buffet/ap_manager_client.cc
@@ -16,9 +16,9 @@
 
 namespace buffet {
 
-using org::chromium::apmanager::ConfigProxy;
-using org::chromium::apmanager::ManagerProxy;
-using org::chromium::apmanager::ServiceProxy;
+using org::chromium::apmanager::ConfigProxyInterface;
+using org::chromium::apmanager::ManagerProxyInterface;
+using org::chromium::apmanager::ServiceProxyInterface;
 
 ApManagerClient::ApManagerClient(const scoped_refptr<dbus::Bus>& bus)
     : bus_(bus) {}
@@ -66,7 +66,7 @@
   }
 }
 
-void ApManagerClient::OnManagerAdded(ManagerProxy* manager_proxy) {
+void ApManagerClient::OnManagerAdded(ManagerProxyInterface* manager_proxy) {
   VLOG(1) << "manager added: " << manager_proxy->GetObjectPath().value();
   manager_proxy_ = manager_proxy;
 
@@ -79,7 +79,7 @@
   }
 }
 
-void ApManagerClient::OnServiceAdded(ServiceProxy* service_proxy) {
+void ApManagerClient::OnServiceAdded(ServiceProxyInterface* service_proxy) {
   VLOG(1) << "service added: " << service_proxy->GetObjectPath().value();
   if (service_proxy->GetObjectPath() != service_path_) {
     RemoveService(service_proxy->GetObjectPath());
@@ -87,11 +87,10 @@
   }
   service_proxy_ = service_proxy;
 
-  ConfigProxy* config_proxy =
+  ConfigProxyInterface* config_proxy =
       object_manager_proxy_->GetConfigProxy(service_proxy->config());
-  ConfigProxy::PropertySet* properties = config_proxy->GetProperties();
-  properties->ssid.Set(ssid_, base::Bind(&ApManagerClient::OnSsidSet,
-                                         weak_ptr_factory_.GetWeakPtr()));
+  config_proxy->set_ssid(ssid_, base::Bind(&ApManagerClient::OnSsidSet,
+                                           weak_ptr_factory_.GetWeakPtr()));
 }
 
 void ApManagerClient::OnSsidSet(bool success) {
diff --git a/buffet/ap_manager_client.h b/buffet/ap_manager_client.h
index 9c05687..0a5a50b 100644
--- a/buffet/ap_manager_client.h
+++ b/buffet/ap_manager_client.h
@@ -39,8 +39,10 @@
  private:
   void RemoveService(const dbus::ObjectPath& object_path);
 
-  void OnManagerAdded(org::chromium::apmanager::ManagerProxy* manager_proxy);
-  void OnServiceAdded(org::chromium::apmanager::ServiceProxy* service_proxy);
+  void OnManagerAdded(
+      org::chromium::apmanager::ManagerProxyInterface* manager_proxy);
+  void OnServiceAdded(
+      org::chromium::apmanager::ServiceProxyInterface* service_proxy);
 
   void OnSsidSet(bool success);
 
@@ -51,10 +53,10 @@
 
   std::unique_ptr<org::chromium::apmanager::ObjectManagerProxy>
       object_manager_proxy_;
-  org::chromium::apmanager::ManagerProxy* manager_proxy_{nullptr};
+  org::chromium::apmanager::ManagerProxyInterface* manager_proxy_{nullptr};
 
   dbus::ObjectPath service_path_;
-  org::chromium::apmanager::ServiceProxy* service_proxy_{nullptr};
+  org::chromium::apmanager::ServiceProxyInterface* service_proxy_{nullptr};
 
   std::string ssid_;
 
diff --git a/libweaved/command.cc b/libweaved/command.cc
index 55cfe2f..8b7427f 100644
--- a/libweaved/command.cc
+++ b/libweaved/command.cc
@@ -20,7 +20,8 @@
 
 namespace weaved {
 
-Command::Command(com::android::Weave::CommandProxy* proxy) : proxy_{proxy} {}
+Command::Command(com::android::Weave::CommandProxyInterface* proxy)
+    : proxy_{proxy} {}
 
 const std::string& Command::GetID() const {
   return proxy_->id();
diff --git a/libweaved/command.h b/libweaved/command.h
index 34753fe..f68b150 100644
--- a/libweaved/command.h
+++ b/libweaved/command.h
@@ -27,7 +27,7 @@
 namespace com {
 namespace android {
 namespace Weave {
-class CommandProxy;
+class CommandProxyInterface;
 }  // namespace Weave
 }  // namespace android
 }  // namespace com
@@ -103,11 +103,11 @@
   bool Cancel(brillo::ErrorPtr* error);
 
  protected:
-  Command(com::android::Weave::CommandProxy* proxy);
+  Command(com::android::Weave::CommandProxyInterface* proxy);
 
  private:
   friend class Device;
-  com::android::Weave::CommandProxy* proxy_{nullptr};
+  com::android::Weave::CommandProxyInterface* proxy_{nullptr};
 
   DISALLOW_COPY_AND_ASSIGN(Command);
 };
diff --git a/libweaved/device.cc b/libweaved/device.cc
index 02bacb6..0da4763 100644
--- a/libweaved/device.cc
+++ b/libweaved/device.cc
@@ -18,8 +18,8 @@
 
 #include "buffet/dbus-proxies.h"
 
-using com::android::Weave::CommandProxy;
-using com::android::Weave::ManagerProxy;
+using com::android::Weave::CommandProxyInterface;
+using com::android::Weave::ManagerProxyInterface;
 
 namespace weaved {
 
@@ -76,7 +76,7 @@
   return SetStateProperties(brillo::VariantDictionary{{name, value}}, error);
 }
 
-void Device::OnCommandAdded(CommandProxy* proxy) {
+void Device::OnCommandAdded(CommandProxyInterface* proxy) {
   std::shared_ptr<Command>& command = command_map_[proxy];
   auto iter = command_handler_map_.find(proxy->name());
   if (iter == command_handler_map_.end())
@@ -93,7 +93,7 @@
   command_map_.erase(proxy);
 }
 
-void Device::OnManagerAdded(ManagerProxy* proxy) {
+void Device::OnManagerAdded(ManagerProxyInterface* proxy) {
   proxy_ = proxy;
   state_required_callback_.Run();
 }
diff --git a/libweaved/device.h b/libweaved/device.h
index 7ce52c4..c1c5dd5 100644
--- a/libweaved/device.h
+++ b/libweaved/device.h
@@ -34,8 +34,8 @@
 namespace com {
 namespace android {
 namespace Weave {
-class CommandProxy;
-class ManagerProxy;
+class CommandProxyInterface;
+class ManagerProxyInterface;
 class ObjectManagerProxy;
 }  // namespace Weave
 }  // namespace android
@@ -81,17 +81,17 @@
   Device(const scoped_refptr<dbus::Bus>& bus,
          const base::Closure& state_required_callback);
 
-  void OnCommandAdded(com::android::Weave::CommandProxy* proxy);
+  void OnCommandAdded(com::android::Weave::CommandProxyInterface* proxy);
   void OnCommandRemoved(const dbus::ObjectPath& object_path);
 
-  void OnManagerAdded(com::android::Weave::ManagerProxy* proxy);
+  void OnManagerAdded(com::android::Weave::ManagerProxyInterface* proxy);
   void OnManagerRemoved(const dbus::ObjectPath& object_path);
 
   std::unique_ptr<com::android::Weave::ObjectManagerProxy> weaved_object_mgr_;
-  com::android::Weave::ManagerProxy* proxy_{nullptr};
+  com::android::Weave::ManagerProxyInterface* proxy_{nullptr};
 
-  using CommandMap =
-      std::map<com::android::Weave::CommandProxy*, std::shared_ptr<Command>>;
+  using CommandMap = std::map<com::android::Weave::CommandProxyInterface*,
+                              std::shared_ptr<Command>>;
   CommandMap command_map_;
   std::map<std::string, CommandHandlerCallback> command_handler_map_;
   scoped_refptr<dbus::Bus> bus_;
