diff --git a/Android.mk b/Android.mk
index 9d75d9d..7ebdf2b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -63,7 +63,9 @@
 LOCAL_MODULE := buffet-common
 LOCAL_CPP_EXTENSION := $(buffetCommonCppExtension)
 LOCAL_CFLAGS := $(buffetCommonCFlags)
-LOCAL_CPPFLAGS := $(buffetCommonCppFlags)
+# TODO(avakulenko): Remove -Wno-deprecated-declarations when legacy libweave
+# APIs are removed (see: b/25917708).
+LOCAL_CPPFLAGS := $(buffetCommonCppFlags) -Wno-deprecated-declarations
 LOCAL_C_INCLUDES := $(buffetCommonCIncludes)
 LOCAL_SHARED_LIBRARIES := $(buffetSharedLibraries)
 LOCAL_STATIC_LIBRARIES :=
diff --git a/buffet/dbus_bindings/com.android.Weave.Manager.dbus-xml b/buffet/dbus_bindings/com.android.Weave.Manager.dbus-xml
index ad26785..ecbb511 100644
--- a/buffet/dbus_bindings/com.android.Weave.Manager.dbus-xml
+++ b/buffet/dbus_bindings/com.android.Weave.Manager.dbus-xml
@@ -23,10 +23,6 @@
       <arg name="property_set" type="a{sv}" direction="in"/>
       <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
     </method>
-    <method name="GetState">
-      <arg name="device_info" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
     <method name="AddCommand">
       <arg name="json_command" type="s" direction="in"/>
       <arg name="id" type="s" direction="out"/>
@@ -59,9 +55,14 @@
         GCD ID if the device is registered or empty otherwise.
       </tp:docstring>
     </property>
-    <property name="State" type="s" access="read">
+    <property name="Components" type="s" access="read">
       <tp:docstring>
-        JSON with state of the devices.
+        JSON with device component tree.
+      </tp:docstring>
+    </property>
+    <property name="Traits" type="s" access="read">
+      <tp:docstring>
+        JSON with device trait definitions.
       </tp:docstring>
     </property>
     <property name="OemName" type="s" access="read">
diff --git a/buffet/dbus_command_dispatcher.cc b/buffet/dbus_command_dispatcher.cc
index 2fc39b3..d23d071 100644
--- a/buffet/dbus_command_dispatcher.cc
+++ b/buffet/dbus_command_dispatcher.cc
@@ -30,7 +30,7 @@
     const base::WeakPtr<ExportedObjectManager>& object_manager,
     weave::Device* device)
     : object_manager_{object_manager} {
-  device->AddCommandHandler("",
+  device->AddCommandHandler("", "",
                             base::Bind(&DBusCommandDispacher::OnCommandAdded,
                                        weak_ptr_factory_.GetWeakPtr()));
 }
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 85a9024..4cfa902 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -236,8 +236,15 @@
   command_dispatcher_.reset(
       new DBusCommandDispacher{dbus_object_.GetObjectManager(), device_.get()});
 
+  device_->AddTraitDefsChangedCallback(
+      base::Bind(&Manager::OnTraitDefsChanged,
+                 weak_ptr_factory_.GetWeakPtr()));
   device_->AddStateChangedCallback(
-      base::Bind(&Manager::OnStateChanged, weak_ptr_factory_.GetWeakPtr()));
+      base::Bind(&Manager::OnComponentTreeChanged,
+                 weak_ptr_factory_.GetWeakPtr()));
+  device_->AddComponentTreeChangedCallback(
+      base::Bind(&Manager::OnComponentTreeChanged,
+                 weak_ptr_factory_.GetWeakPtr()));
 
   device_->AddGcdStateChangedCallback(
       base::Bind(&Manager::OnGcdStateChanged, weak_ptr_factory_.GetWeakPtr()));
@@ -315,13 +322,6 @@
   response->Return();
 }
 
-bool Manager::GetState(brillo::ErrorPtr* error, std::string* state) {
-  const base::DictionaryValue& json = device_->GetState();
-  base::JSONWriter::WriteWithOptions(
-      json, base::JSONWriter::OPTIONS_PRETTY_PRINT, state);
-  return true;
-}
-
 void Manager::AddCommand(DBusMethodResponsePtr<std::string> response,
                          const std::string& json_command) {
   std::string error_message;
@@ -352,12 +352,20 @@
   return message;
 }
 
-void Manager::OnStateChanged() {
-  const base::DictionaryValue& state = device_->GetState();
+void Manager::OnTraitDefsChanged() {
+  const base::DictionaryValue& state = device_->GetTraits();
   std::string json;
   base::JSONWriter::WriteWithOptions(
       state, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
-  dbus_adaptor_.SetState(json);
+  dbus_adaptor_.SetTraits(json);
+}
+
+void Manager::OnComponentTreeChanged() {
+  const base::DictionaryValue& state = device_->GetComponents();
+  std::string json;
+  base::JSONWriter::WriteWithOptions(
+      state, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
+  dbus_adaptor_.SetComponents(json);
 }
 
 void Manager::OnGcdStateChanged(weave::GcdState state) {
diff --git a/buffet/manager.h b/buffet/manager.h
index 1dea711..9522340 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -93,7 +93,6 @@
   void UpdateState(DBusMethodResponsePtr<> response,
                    const std::string& component,
                    const brillo::VariantDictionary& property_set) override;
-  bool GetState(brillo::ErrorPtr* error, std::string* state) override;
   void AddCommand(DBusMethodResponsePtr<std::string> response,
                   const std::string& json_command) override;
   std::string TestMethod(const std::string& message) override;
@@ -101,7 +100,8 @@
   void StartPrivet(const Options& options,
                    brillo::dbus_utils::AsyncEventSequencer* sequencer);
 
-  void OnStateChanged();
+  void OnTraitDefsChanged();
+  void OnComponentTreeChanged();
   void OnGcdStateChanged(weave::GcdState state);
   void OnConfigChanged(const weave::Settings& settings);
   void OnPairingStart(const std::string& session_id,
