Delete the unneeded buffet sources
diff --git a/buffet/COMMIT-QUEUE.ini b/buffet/COMMIT-QUEUE.ini
deleted file mode 100644
index f5a018a..0000000
--- a/buffet/COMMIT-QUEUE.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Per-project Commit Queue settings.
-# Documentation: http://goo.gl/5J7oND
-
-[GENERAL]
-
-# Board-specific pre-cq
-pre-cq-configs: gizmo-pre-cq
diff --git a/buffet/HACKING b/buffet/HACKING
deleted file mode 100644
index 95c6193..0000000
--- a/buffet/HACKING
+++ /dev/null
@@ -1,147 +0,0 @@
-This file is intended for onboarding new SWEs hacking on buffet.
-
- A. Common workflows.
- B. Registering your DUT.
-
----
-A. COMMON WORKFLOWS
----
-
-Some common workflows for developing with buffet:
-
-# Tell portage that you'd like to make local changes to Buffet:
-cros_workon start --board=${BOARD} buffet
-
-# Edit files in platform2/buffet/
-vim ...
-
-# Compile and install those changes into the chroot:
-USE=buffet emerge-${BOARD} buffet
-
-# Compile and run buffet unittests
-USE=buffet FEATURES=test emerge-${BOARD} buffet
-
-# Deploy the most recently built version of buffet to a DUT:
-cros deploy --board=${BOARD} <remote host> buffet
-
-#To enable additional debug logging in buffet daemon, run it as:
-# buffet --v=<level>, where <level> is verbosity level of debug info:
-#  1 - enable additional tracing of internal object construction and destruction
-#  2 - add tracing of request and response data sent over HTTP (beware of
-#      privacy concerns).
-#  3 - enable low-level CURL tracing for HTTP communication.
-buffet --v=2
-
----
-B. REGISTERING YOUR DUT
----
-
-This process in described in great detail at
-
- https://developers.google.com/cloud-devices/v1/dev-guides/getting-started/register
-
-but since these instructions are generic and comprehensive, here's
-exactly what you need to do to get started when working with
-buffet/Brillo, in ten simple steps.
-
-The word DUT in this context is meant as the device that you want to
-associate with the cloud - for most buffet/Brillo developers this will
-be a Chromebook or another embedded device. These notes assume you
-have shell access to the DUT and also have access to a normal Linux
-workstation with shell and browser access.
-
-1. Open an Incognito window in Chrome on your workstation, go to
-https://www.google.com and log in with your test google account (NEVER
-use @google.com credentials on DUTs). In the following we're using
-<GMAIL_TEST_ACCOUNT> which you should replace with whatever you're
-using, e.g. my-testing-account-xyz@gmail.com.
-
-2. First we need an Authorization Code for the test user. This is
-covered in more detail in
-
- https://developers.google.com/cloud-devices/v1/dev-guides/getting-started/authorizing#code
-
-but basically amounts to entering the following URL in the Incognito window
-
- https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/clouddevices&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=58855907228.apps.googleusercontent.com
-
-If you're not using the default buffet gcd-project, replace the
-client_id parameter in the URL with the one for the product you
-registered as per
-
- https://developers.google.com/cloud-devices/v1/dev-guides/getting-started/authorizing#setup
-
-3. The browser window should display a prompt saying that
-"clouddevicesclient" would like to "Manage your cloud device". Press
-the "Accept" button and write down the Authorization Code
-displayed. It should look something like this
-
- 4/J23qfSkXYFgF_0H7DCOtwS5O7HO69zF9LtnG9_ILIGA.QhJE9WLeqwcaJvIeHux6iLavlvowlwI
-
-4. Open a bash prompt on your Linux workstation and type the following
-
- export SETUP_USER=<GMAIL_TEST_ACCOUNT>
- export SETUP_CODE=4/J23qfSkXYFgF_0H7DCOtwS5O7HO69zF9LtnG9_ILIGA.QhJE9WLeqwcaJvIeHux6iLavlvowlwI
- export SETUP_CLIENT_ID=58855907228.apps.googleusercontent.com
- export SETUP_CLIENT_SECRET=eHSAREAHrIqPsHBxCE9zPPBi
-
-replacing the values for SETUP_USER and SETUP_CODE as
-appropriate. Again, if you're not using the default buffet gcd-project
-replace the values SETUP_CLIENT_ID and SETUP_CLIENT_SECRET as
-appropriate.
-
-5. Now we can get an Access Token. Run the following command from the shell:
-
- curl -d "code=${SETUP_CODE}&client_id=${SETUP_CLIENT_ID}&client_secret=${SETUP_CLIENT_SECRET}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
-
-It should print out something like this:
-
- {
-   "access_token" : "ya29.HQE<...>",
-   "token_type" : "Bearer",
-   "expires_in" : 3600,
-   "refresh_token" : "1/iMq4<...>"
- }
-
-6. Export the access token in the shell:
-
- export SETUP_ACCESS_TOKEN=ya29.HQE<...>
-
-7. Now we can get the Registration Ticket Id for the device. Run the following
-
- curl --header "Authorization: Bearer ${SETUP_ACCESS_TOKEN}" --header "Content-Type: application/json; charset=UTF-8" --data "{ \"userEmail\": \"${SETUP_USER}\" }" https://www.googleapis.com/clouddevices/v1/registrationTickets
-
-It should print out something like this
-
- {
-  "kind": "clouddevices#registrationTicket",
-  "id": "453f1139-bd<...>",
-  "deviceId": "77500a3f-458b-<...>",
-  "userEmail": "<GMAIL_TEST_ACCOUNT>",
-  "creationTimeMs": "1424193538212",
-  "expirationTimeMs": "1424193778212"
- }
-
-8. Now, open a shell on the DUT and export the following
-
- export DUT_SETUP_TICKET_ID=453f1139-bd<...>
-
-9. Run the following command on the DUT shell
-
- buffet_client RegisterDevice ticket_id=${DUT_SETUP_TICKET_ID}
-
-appropriate. If you're not using the default buffet gcd-project you
-also need to pass other parameters such as client_id, client_secret
-and api_key.
-
-It should succeed and print the device-id
-
- Device registered: 77500a3f-458b-<...>
-
-10. The registered DUT should now show up in the Google account that
-you associated it with. In the Incognito window opened in step 1, go
-to
-
- https://security.google.com/settings/security/permissions
-
-where you can e.g. revoke access to the device.
diff --git a/buffet/OWNERS b/buffet/OWNERS
deleted file mode 100644
index 6000333..0000000
--- a/buffet/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-set noparent
-avakulenko@chromium.org
-sosa@chromium.org
-vitalybuka@chromium.org
-wiley@chromium.org
diff --git a/buffet/README b/buffet/README
deleted file mode 100644
index 9dc1e87..0000000
--- a/buffet/README
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-This directory contains the a Brillo service for registering a device and
-sending/receiving remote commands.
diff --git a/buffet/ap_manager_client.cc b/buffet/ap_manager_client.cc
deleted file mode 100644
index 6449c0f..0000000
--- a/buffet/ap_manager_client.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/ap_manager_client.h"
-
-namespace buffet {
-
-using org::chromium::apmanager::ConfigProxy;
-using org::chromium::apmanager::ManagerProxy;
-using org::chromium::apmanager::ServiceProxy;
-
-ApManagerClient::ApManagerClient(const scoped_refptr<dbus::Bus>& bus)
-    : bus_(bus) {}
-
-ApManagerClient::~ApManagerClient() {
-  Stop();
-}
-
-void ApManagerClient::Start(const std::string& ssid) {
-  if (service_path_.IsValid()) {
-    return;
-  }
-
-  ssid_ = ssid;
-
-  object_manager_proxy_.reset(
-      new org::chromium::apmanager::ObjectManagerProxy{bus_});
-  object_manager_proxy_->SetManagerAddedCallback(base::Bind(
-      &ApManagerClient::OnManagerAdded, weak_ptr_factory_.GetWeakPtr()));
-  object_manager_proxy_->SetServiceAddedCallback(base::Bind(
-      &ApManagerClient::OnServiceAdded, weak_ptr_factory_.GetWeakPtr()));
-
-  object_manager_proxy_->SetServiceRemovedCallback(base::Bind(
-      &ApManagerClient::OnServiceRemoved, weak_ptr_factory_.GetWeakPtr()));
-  object_manager_proxy_->SetManagerRemovedCallback(base::Bind(
-      &ApManagerClient::OnManagerRemoved, weak_ptr_factory_.GetWeakPtr()));
-}
-
-void ApManagerClient::Stop() {
-  if (manager_proxy_ && service_path_.IsValid()) {
-    RemoveService(service_path_);
-  }
-  service_path_ = dbus::ObjectPath();
-  service_proxy_ = nullptr;
-  manager_proxy_ = nullptr;
-  object_manager_proxy_.reset();
-  ssid_.clear();
-}
-
-void ApManagerClient::RemoveService(const dbus::ObjectPath& object_path) {
-  CHECK(object_path.IsValid());
-  chromeos::ErrorPtr error;
-  if (!manager_proxy_->RemoveService(object_path, &error)) {
-    LOG(ERROR) << "RemoveService failed: " << error->GetMessage();
-  }
-}
-
-void ApManagerClient::OnManagerAdded(ManagerProxy* manager_proxy) {
-  VLOG(1) << "manager added: " << manager_proxy->GetObjectPath().value();
-  manager_proxy_ = manager_proxy;
-
-  if (service_path_.IsValid())
-    return;
-
-  chromeos::ErrorPtr error;
-  if (!manager_proxy_->CreateService(&service_path_, &error)) {
-    LOG(ERROR) << "CreateService failed: " << error->GetMessage();
-  }
-}
-
-void ApManagerClient::OnServiceAdded(ServiceProxy* service_proxy) {
-  VLOG(1) << "service added: " << service_proxy->GetObjectPath().value();
-  if (service_proxy->GetObjectPath() != service_path_) {
-    RemoveService(service_proxy->GetObjectPath());
-    return;
-  }
-  service_proxy_ = service_proxy;
-
-  ConfigProxy* 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()));
-}
-
-void ApManagerClient::OnSsidSet(bool success) {
-  if (!success || !service_proxy_) {
-    LOG(ERROR) << "Failed to set ssid.";
-    return;
-  }
-  VLOG(1) << "SSID is set: " << ssid_;
-
-  chromeos::ErrorPtr error;
-  if (!service_proxy_->Start(&error)) {
-    LOG(ERROR) << "Service start failed: " << error->GetMessage();
-  }
-}
-
-void ApManagerClient::OnServiceRemoved(const dbus::ObjectPath& object_path) {
-  VLOG(1) << "service removed: " << object_path.value();
-  if (object_path != service_path_)
-    return;
-  service_path_ = dbus::ObjectPath();
-  service_proxy_ = nullptr;
-}
-
-void ApManagerClient::OnManagerRemoved(const dbus::ObjectPath& object_path) {
-  VLOG(1) << "manager removed: " << object_path.value();
-  manager_proxy_ = nullptr;
-  Stop();
-}
-
-}  // namespace buffet
diff --git a/buffet/ap_manager_client.h b/buffet/ap_manager_client.h
deleted file mode 100644
index 8397587..0000000
--- a/buffet/ap_manager_client.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_AP_MANAGER_CLIENT_H_
-#define BUFFET_AP_MANAGER_CLIENT_H_
-
-#include <memory>
-#include <string>
-
-#include <base/callback.h>
-#include <base/memory/ref_counted.h>
-
-#include "apmanager/dbus-proxies.h"
-
-namespace buffet {
-
-// Manages soft AP for wifi bootstrapping.
-// Once created can handle multiple Start/Stop requests.
-class ApManagerClient final {
- public:
-  explicit ApManagerClient(const scoped_refptr<dbus::Bus>& bus);
-  ~ApManagerClient();
-
-  void Start(const std::string& ssid);
-  void Stop();
-
-  std::string GetSsid() const { return ssid_; }
-
- 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 OnSsidSet(bool success);
-
-  void OnServiceRemoved(const dbus::ObjectPath& object_path);
-  void OnManagerRemoved(const dbus::ObjectPath& object_path);
-
-  scoped_refptr<dbus::Bus> bus_;
-
-  std::unique_ptr<org::chromium::apmanager::ObjectManagerProxy>
-      object_manager_proxy_;
-  org::chromium::apmanager::ManagerProxy* manager_proxy_{nullptr};
-
-  dbus::ObjectPath service_path_;
-  org::chromium::apmanager::ServiceProxy* service_proxy_{nullptr};
-
-  std::string ssid_;
-
-  base::WeakPtrFactory<ApManagerClient> weak_ptr_factory_{this};
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_AP_MANAGER_CLIENT_H_
diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
deleted file mode 100644
index 800737a..0000000
--- a/buffet/buffet.gyp
+++ /dev/null
@@ -1,157 +0,0 @@
-{
-  'target_defaults': {
-    'variables': {
-      'deps': [
-        'libchrome-<(libbase_ver)',
-        'libchromeos-<(libbase_ver)',
-        'system_api',
-      ],
-    },
-    'include_dirs': [
-      '.',
-    ],
-  },
-  'targets': [
-    {
-      'target_name': 'buffet_common',
-      'type': 'static_library',
-      'variables': {
-        'dbus_adaptors_out_dir': 'include/buffet',
-        'dbus_service_config': 'dbus_bindings/dbus-service-config.json',
-        'exported_deps': [
-          'libwebserv-<(libbase_ver)',
-          'libweave-<(libbase_ver)',
-        ],
-        'deps': ['<@(exported_deps)'],
-      },
-      'all_dependent_settings': {
-        'variables': {
-          'deps': [
-            '<@(exported_deps)',
-          ],
-        },
-      },
-      'sources': [
-        'ap_manager_client.cc',
-        'dbus_bindings/org.chromium.Buffet.Command.xml',
-        'dbus_bindings/org.chromium.Buffet.Manager.xml',
-        'dbus_command_dispatcher.cc',
-        'dbus_command_proxy.cc',
-        'dbus_conversion.cc',
-        'dbus_constants.cc',
-        'manager.cc',
-        'peerd_client.cc',
-        'shill_client.cc',
-        'webserv_client.cc',
-      ],
-      'includes': ['../common-mk/generate-dbus-adaptors.gypi'],
-      'actions': [
-        {
-          'action_name': 'generate-buffet-proxies',
-          'variables': {
-            'dbus_service_config': 'dbus_bindings/dbus-service-config.json',
-            'proxy_output_file': 'include/buffet/dbus-proxies.h'
-          },
-          'sources': [
-            'dbus_bindings/org.chromium.Buffet.Command.xml',
-            'dbus_bindings/org.chromium.Buffet.Manager.xml',
-          ],
-          'includes': ['../common-mk/generate-dbus-proxies.gypi'],
-        },
-        {
-          # Import D-Bus bindings from peerd.
-          'action_name': 'generate-peerd-proxies',
-          'variables': {
-            'dbus_service_config': '../peerd/dbus_bindings/dbus-service-config.json',
-            'proxy_output_file': 'include/peerd/dbus-proxies.h'
-          },
-          'sources': [
-            '../peerd/dbus_bindings/org.chromium.peerd.Manager.xml',
-            '../peerd/dbus_bindings/org.chromium.peerd.Peer.xml',
-            '../peerd/dbus_bindings/org.chromium.peerd.Service.xml',
-          ],
-          'includes': ['../common-mk/generate-dbus-proxies.gypi'],
-        },
-        {
-          # Import D-Bus bindings from shill.
-          'action_name': 'generate-shill-proxies',
-          'variables': {
-            'dbus_service_config': '../shill/dbus_bindings/dbus-service-config.json',
-            'proxy_output_file': 'include/shill/dbus-proxies.h'
-          },
-          'sources': [
-            '../shill/dbus_bindings/org.chromium.flimflam.Device.xml',
-            '../shill/dbus_bindings/org.chromium.flimflam.Manager.xml',
-            '../shill/dbus_bindings/org.chromium.flimflam.Service.xml',
-          ],
-          'includes': ['../common-mk/generate-dbus-proxies.gypi'],
-        },
-        {
-          # Import D-Bus bindings from apmanager.
-          'action_name': 'generate-apmanager-proxies',
-          'variables': {
-            'dbus_service_config': '../apmanager/dbus_bindings/dbus-service-config.json',
-            'proxy_output_file': 'include/apmanager/dbus-proxies.h'
-          },
-          'sources': [
-            '../apmanager/dbus_bindings/org.chromium.apmanager.Config.xml',
-            '../apmanager/dbus_bindings/org.chromium.apmanager.Device.xml',
-            '../apmanager/dbus_bindings/org.chromium.apmanager.Manager.xml',
-            '../apmanager/dbus_bindings/org.chromium.apmanager.Service.xml',
-          ],
-          'includes': ['../common-mk/generate-dbus-proxies.gypi'],
-        },
-      ],
-    },
-    {
-      'target_name': 'buffet',
-      'type': 'executable',
-      'dependencies': [
-        'buffet_common',
-      ],
-      'sources': [
-        'main.cc',
-      ],
-    },
-    {
-      'target_name': 'buffet_test_daemon',
-      'type': 'executable',
-      'sources': [
-        'test_daemon/main.cc',
-      ],
-    },
-    {
-      'target_name': 'buffet_client',
-      'type': 'executable',
-      'sources': [
-        'buffet_client.cc',
-      ],
-    },
-  ],
-  'conditions': [
-    ['USE_test == 1', {
-      'targets': [
-        {
-          'target_name': 'buffet_testrunner',
-          'type': 'executable',
-          'dependencies': [
-            'buffet_common',
-          ],
-          'variables': {
-            'deps': [
-              'libchrome-test-<(libbase_ver)',
-              'libchromeos-test-<(libbase_ver)',
-              'libweave-test-<(libbase_ver)',
-            ],
-          },
-          'includes': ['../common-mk/common_test.gypi'],
-          'sources': [
-            'buffet_testrunner.cc',
-            'dbus_command_proxy_unittest.cc',
-            'dbus_conversion_unittest.cc',
-          ],
-        },
-      ],
-    }],
-  ],
-}
diff --git a/buffet/buffet_client.cc b/buffet/buffet_client.cc
deleted file mode 100644
index cf9928f..0000000
--- a/buffet/buffet_client.cc
+++ /dev/null
@@ -1,400 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-#include <string>
-#include <sysexits.h>
-
-#include <base/cancelable_callback.h>
-#include <base/command_line.h>
-#include <base/json/json_reader.h>
-#include <base/logging.h>
-#include <base/memory/ref_counted.h>
-#include <base/memory/weak_ptr.h>
-#include <base/strings/stringprintf.h>
-#include <base/values.h>
-#include <chromeos/any.h>
-#include <chromeos/daemons/dbus_daemon.h>
-#include <chromeos/data_encoding.h>
-#include <chromeos/dbus/data_serialization.h>
-#include <chromeos/dbus/dbus_method_invoker.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/strings/string_utils.h>
-#include <chromeos/variant_dictionary.h>
-#include <dbus/bus.h>
-#include <dbus/message.h>
-#include <dbus/object_proxy.h>
-#include <dbus/object_manager.h>
-#include <dbus/values_util.h>
-
-#include "buffet/dbus-proxies.h"
-
-using chromeos::Error;
-using chromeos::ErrorPtr;
-using org::chromium::Buffet::ManagerProxy;
-
-namespace {
-
-void usage() {
-  printf(R"(Possible commands:
-  - TestMethod <message>
-  - CheckDeviceRegistered
-  - GetDeviceInfo
-  - RegisterDevice param1=val1&param2=val2...
-  - AddCommand '{"name":"command_name","parameters":{}}'
-  - UpdateState prop_name prop_value
-  - GetState
-  - PendingCommands
-  - SetCommandVisibility pkg1.cmd1[,pkg2.cm2,...] [all|cloud|local|none]
-)");
-}
-
-// Helpers for JsonToAny().
-template<typename T>
-chromeos::Any GetJsonValue(const base::Value& json,
-                           bool(base::Value::*fnc)(T*) const) {
-  T val;
-  CHECK((json.*fnc)(&val));
-  return val;
-}
-
-template<typename T>
-chromeos::Any GetJsonList(const base::ListValue& list);  // Prototype.
-
-// Converts a JSON value into an Any so it can be sent over D-Bus using
-// UpdateState D-Bus method from Buffet.
-chromeos::Any JsonToAny(const base::Value& json) {
-  chromeos::Any prop_value;
-  switch (json.GetType()) {
-    case base::Value::TYPE_NULL:
-      prop_value = nullptr;
-      break;
-    case base::Value::TYPE_BOOLEAN:
-      prop_value = GetJsonValue<bool>(json, &base::Value::GetAsBoolean);
-      break;
-    case base::Value::TYPE_INTEGER:
-      prop_value = GetJsonValue<int>(json, &base::Value::GetAsInteger);
-      break;
-    case base::Value::TYPE_DOUBLE:
-      prop_value = GetJsonValue<double>(json, &base::Value::GetAsDouble);
-      break;
-    case base::Value::TYPE_STRING:
-      prop_value = GetJsonValue<std::string>(json, &base::Value::GetAsString);
-      break;
-    case base::Value::TYPE_BINARY:
-      LOG(FATAL) << "Binary values should not happen";
-      break;
-    case base::Value::TYPE_DICTIONARY: {
-      const base::DictionaryValue* dict = nullptr;  // Still owned by |json|.
-      CHECK(json.GetAsDictionary(&dict));
-      chromeos::VariantDictionary var_dict;
-      base::DictionaryValue::Iterator it(*dict);
-      while (!it.IsAtEnd()) {
-        var_dict.emplace(it.key(), JsonToAny(it.value()));
-        it.Advance();
-      }
-      prop_value = var_dict;
-      break;
-    }
-    case base::Value::TYPE_LIST: {
-      const base::ListValue* list = nullptr;  // Still owned by |json|.
-      CHECK(json.GetAsList(&list));
-      CHECK(!list->empty()) << "Unable to deduce the type of list elements.";
-      switch ((*list->begin())->GetType()) {
-        case base::Value::TYPE_BOOLEAN:
-          prop_value = GetJsonList<bool>(*list);
-          break;
-        case base::Value::TYPE_INTEGER:
-          prop_value = GetJsonList<int>(*list);
-          break;
-        case base::Value::TYPE_DOUBLE:
-          prop_value = GetJsonList<double>(*list);
-          break;
-        case base::Value::TYPE_STRING:
-          prop_value = GetJsonList<std::string>(*list);
-          break;
-        case base::Value::TYPE_DICTIONARY:
-          prop_value = GetJsonList<chromeos::VariantDictionary>(*list);
-          break;
-        default:
-          LOG(FATAL) << "Unsupported JSON value type for list element: "
-                     << (*list->begin())->GetType();
-      }
-      break;
-    }
-    default:
-      LOG(FATAL) << "Unexpected JSON value type: " << json.GetType();
-      break;
-  }
-  return prop_value;
-}
-
-template<typename T>
-chromeos::Any GetJsonList(const base::ListValue& list) {
-  std::vector<T> val;
-  val.reserve(list.GetSize());
-  for (const base::Value* v : list)
-    val.push_back(JsonToAny(*v).Get<T>());
-  return val;
-}
-
-class Daemon final : public chromeos::DBusDaemon {
- public:
-  Daemon() = default;
-
- protected:
-  int OnInit() override {
-    int return_code = chromeos::DBusDaemon::OnInit();
-    if (return_code != EX_OK)
-      return return_code;
-
-    object_manager_.reset(new org::chromium::Buffet::ObjectManagerProxy{bus_});
-    return_code = ScheduleActions();
-    if (return_code == EX_USAGE) {
-      usage();
-    }
-    return return_code;
-  }
-
-  void OnShutdown(int* return_code) override {
-    if (*return_code == EX_OK)
-      *return_code = exit_code_;
-  }
-
- private:
-  int ScheduleActions() {
-    auto args = base::CommandLine::ForCurrentProcess()->GetArgs();
-
-    // Pop the command off of the args list.
-    std::string command = args.front();
-    args.erase(args.begin());
-    base::Callback<void(ManagerProxy*)> job;
-    if (command.compare("TestMethod") == 0) {
-      if (!args.empty() && !CheckArgs(command, args, 1))
-        return EX_USAGE;
-      std::string message;
-      if (!args.empty())
-        message = args.back();
-      job = base::Bind(&Daemon::CallTestMethod, weak_factory_.GetWeakPtr(),
-                       message);
-    } else if (command.compare("CheckDeviceRegistered") == 0 ||
-               command.compare("cr") == 0) {
-      if (!CheckArgs(command, args, 0))
-        return EX_USAGE;
-      job = base::Bind(&Daemon::CallCheckDeviceRegistered,
-                       weak_factory_.GetWeakPtr());
-    } else if (command.compare("GetDeviceInfo") == 0 ||
-               command.compare("di") == 0) {
-      if (!CheckArgs(command, args, 0))
-        return EX_USAGE;
-      job = base::Bind(&Daemon::CallGetDeviceInfo,
-                       weak_factory_.GetWeakPtr());
-    } else if (command.compare("RegisterDevice") == 0 ||
-               command.compare("rd") == 0) {
-      if (!args.empty() && !CheckArgs(command, args, 1))
-        return EX_USAGE;
-      std::string dict;
-      if (!args.empty())
-        dict = args.back();
-      job = base::Bind(&Daemon::CallRegisterDevice,
-                       weak_factory_.GetWeakPtr(), dict);
-    } else if (command.compare("UpdateState") == 0 ||
-               command.compare("us") == 0) {
-      if (!CheckArgs(command, args, 2))
-        return EX_USAGE;
-      job = base::Bind(&Daemon::CallUpdateState, weak_factory_.GetWeakPtr(),
-                       args.front(), args.back());
-    } else if (command.compare("GetState") == 0 ||
-               command.compare("gs") == 0) {
-      if (!CheckArgs(command, args, 0))
-        return EX_USAGE;
-      job = base::Bind(&Daemon::CallGetState, weak_factory_.GetWeakPtr());
-    } else if (command.compare("AddCommand") == 0 ||
-               command.compare("ac") == 0) {
-      if (!CheckArgs(command, args, 1))
-        return EX_USAGE;
-      job = base::Bind(&Daemon::CallAddCommand, weak_factory_.GetWeakPtr(),
-                       args.back());
-    } else if (command.compare("PendingCommands") == 0 ||
-               command.compare("pc") == 0) {
-      if (!CheckArgs(command, args, 0))
-        return EX_USAGE;
-      // CallGetPendingCommands relies on ObjectManager but it is being
-      // initialized asynchronously without a way to get a callback when
-      // it is ready to be used. So, just wait a bit before calling its
-      // methods.
-      base::MessageLoop::current()->PostDelayedTask(
-          FROM_HERE,
-          base::Bind(&Daemon::CallGetPendingCommands,
-                     weak_factory_.GetWeakPtr()),
-          base::TimeDelta::FromMilliseconds(100));
-    } else {
-      fprintf(stderr, "Unknown command: '%s'\n", command.c_str());
-      return EX_USAGE;
-    }
-    if (!job.is_null())
-      object_manager_->SetManagerAddedCallback(job);
-    timeout_task_.Reset(
-        base::Bind(&Daemon::OnJobTimeout, weak_factory_.GetWeakPtr()));
-    base::MessageLoop::current()->PostDelayedTask(
-        FROM_HERE,
-        timeout_task_.callback(),
-        base::TimeDelta::FromSeconds(10));
-
-    return EX_OK;
-  }
-
-  void OnJobComplete() {
-    timeout_task_.Cancel();
-    Quit();
-  }
-
-  void OnJobTimeout() {
-    fprintf(stderr, "Timed out before completing request.");
-    Quit();
-  }
-
-  void ReportError(Error* error) {
-    fprintf(stderr, "Failed to receive a response: %s\n",
-            error->GetMessage().c_str());
-    exit_code_ = EX_UNAVAILABLE;
-    OnJobComplete();
-  }
-
-  bool CheckArgs(const std::string& command,
-                 const std::vector<std::string>& args,
-                 size_t expected_arg_count) {
-    if (args.size() == expected_arg_count)
-      return true;
-    fprintf(stderr, "Invalid number of arguments for command '%s'\n",
-            command.c_str());
-    return false;
-  }
-
-  void CallTestMethod(const std::string& message, ManagerProxy* manager_proxy) {
-    ErrorPtr error;
-    std::string response_message;
-    if (!manager_proxy->TestMethod(message, &response_message, &error)) {
-      return ReportError(error.get());
-    }
-    printf("Received a response: %s\n", response_message.c_str());
-    OnJobComplete();
-  }
-
-  void CallCheckDeviceRegistered(ManagerProxy* manager_proxy) {
-    ErrorPtr error;
-    std::string device_id;
-    if (!manager_proxy->CheckDeviceRegistered(&device_id, &error)) {
-      return ReportError(error.get());
-    }
-
-    printf("Device ID: %s\n",
-           device_id.empty() ? "<unregistered>" : device_id.c_str());
-    OnJobComplete();
-  }
-
-  void CallGetDeviceInfo(ManagerProxy* manager_proxy) {
-    ErrorPtr error;
-    std::string device_info;
-    if (!manager_proxy->GetDeviceInfo(&device_info, &error)) {
-      return ReportError(error.get());
-    }
-
-    printf("%s\n", device_info.c_str());
-    OnJobComplete();
-  }
-
-  void CallRegisterDevice(const std::string& args,
-                          ManagerProxy* manager_proxy) {
-    std::string ticket_id;
-    if (!args.empty()) {
-      auto key_values = chromeos::data_encoding::WebParamsDecode(args);
-      for (const auto& pair : key_values) {
-        if (pair.first == "ticket_id")
-          ticket_id = pair.second;
-      }
-    }
-
-    ErrorPtr error;
-    std::string device_id;
-    if (!manager_proxy->RegisterDevice(ticket_id, &device_id, &error)) {
-      return ReportError(error.get());
-    }
-
-    printf("Device registered: %s\n", device_id.c_str());
-    OnJobComplete();
-  }
-
-  void CallUpdateState(const std::string& prop,
-                       const std::string& value,
-                       ManagerProxy* manager_proxy) {
-    ErrorPtr error;
-    std::string error_message;
-    std::unique_ptr<base::Value> json(
-        base::JSONReader::ReadAndReturnError(value, base::JSON_PARSE_RFC,
-                                             nullptr, &error_message)
-            .release());
-    if (!json) {
-      Error::AddTo(&error, FROM_HERE, chromeos::errors::json::kDomain,
-                   chromeos::errors::json::kParseError, error_message);
-      return ReportError(error.get());
-    }
-
-    chromeos::VariantDictionary property_set{{prop, JsonToAny(*json)}};
-    if (!manager_proxy->UpdateState(property_set, &error)) {
-      return ReportError(error.get());
-    }
-    OnJobComplete();
-  }
-
-  void CallGetState(ManagerProxy* manager_proxy) {
-    std::string json;
-    ErrorPtr error;
-    if (!manager_proxy->GetState(&json, &error)) {
-      return ReportError(error.get());
-    }
-    printf("%s\n", json.c_str());
-    OnJobComplete();
-  }
-
-  void CallAddCommand(const std::string& command, ManagerProxy* manager_proxy) {
-    ErrorPtr error;
-    std::string id;
-    if (!manager_proxy->AddCommand(command, "owner", &id, &error)) {
-      return ReportError(error.get());
-    }
-    OnJobComplete();
-  }
-
-  void CallGetPendingCommands() {
-    printf("Pending commands:\n");
-    for (auto* cmd : object_manager_->GetCommandInstances()) {
-      printf("%10s - '%s' (id:%s)\n", cmd->status().c_str(),
-             cmd->name().c_str(), cmd->id().c_str());
-    }
-    OnJobComplete();
-  }
-
-  std::unique_ptr<org::chromium::Buffet::ObjectManagerProxy> object_manager_;
-  int exit_code_{EX_OK};
-  base::CancelableCallback<void()> timeout_task_;
-
-  base::WeakPtrFactory<Daemon> weak_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(Daemon);
-};
-
-}  // anonymous namespace
-
-int main(int argc, char** argv) {
-  base::CommandLine::Init(argc, argv);
-  base::CommandLine* cl = base::CommandLine::ForCurrentProcess();
-  base::CommandLine::StringVector args = cl->GetArgs();
-  if (args.empty()) {
-    usage();
-    return EX_USAGE;
-  }
-
-  Daemon daemon;
-  return daemon.Run();
-}
diff --git a/buffet/buffet_testrunner.cc b/buffet/buffet_testrunner.cc
deleted file mode 100644
index 072461d..0000000
--- a/buffet/buffet_testrunner.cc
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <base/at_exit.h>
-#include <gtest/gtest.h>
-
-int main(int argc, char** argv) {
-  base::AtExitManager exit_manager;
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/buffet/dbus_bindings/dbus-service-config.json b/buffet/dbus_bindings/dbus-service-config.json
deleted file mode 100644
index e610c3d..0000000
--- a/buffet/dbus_bindings/dbus-service-config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "service_name": "org.chromium.Buffet",
-  "object_manager": {
-    "name": "org.chromium.Buffet.ObjectManager",
-    "object_path": "/org/chromium/Buffet"
-  }
-}
diff --git a/buffet/dbus_bindings/org.chromium.Buffet.Command.xml b/buffet/dbus_bindings/org.chromium.Buffet.Command.xml
deleted file mode 100644
index c9ed924..0000000
--- a/buffet/dbus_bindings/org.chromium.Buffet.Command.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
-  <interface name="org.chromium.Buffet.Command">
-    <method name="SetProgress">
-      <arg name="progress" type="a{sv}" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="SetResults">
-      <arg name="results" type="a{sv}" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="Abort">
-      <tp:docstring>
-        Mark the command as aborted. This tells the cloud that the device did
-        not successfully complete executing the command.
-      </tp:docstring>
-      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
-    </method>
-    <method name="Cancel">
-      <tp:docstring>
-        Mark the command as cancelled. Unlike Abort() this should be used when
-        the device detects a user request to cancel a command.
-      </tp:docstring>
-      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
-    </method>
-    <method name="Done">
-      <tp:docstring>
-        Mark the command as successfully completed.
-      </tp:docstring>
-      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
-    </method>
-    <property name="Name" type="s" access="read"/>
-    <property name="Category" type="s" access="read"/>
-    <property name="Id" type="s" access="read"/>
-    <property name="Status" type="s" access="read"/>
-    <property name="Parameters" type="a{sv}" access="read"/>
-    <property name="Progress" type="a{sv}" access="read"/>
-    <property name="Results" type="a{sv}" access="read"/>
-    <property name="Origin" type="s" access="read">
-      <tp:docstring>
-        Specifies the origin of the command. This is a string containing
-        "cloud" or "local" indicating the method of delivery of the command.
-      </tp:docstring>
-    </property>
-  </interface>
-</node>
diff --git a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
deleted file mode 100644
index 56370fa..0000000
--- a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node name="/org/chromium/Buffet/Manager"
-      xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
-  <interface name="org.chromium.Buffet.Manager">
-    <tp:docstring>
-      The Manager is responsible for global state of Buffet.  It exposes
-      interfaces which affect the entire device such as device registration and
-      device state.
-    </tp:docstring>
-    <method name="CheckDeviceRegistered">
-      <arg name="device_id" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
-    </method>
-    <method name="GetDeviceInfo">
-      <arg name="device_info" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
-    </method>
-    <method name="RegisterDevice">
-      <arg name="ticket_id" type="s" direction="in"/>
-      <arg name="device_id" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
-    </method>
-    <method name="UpdateDeviceInfo">
-      <arg name="name" type="s" direction="in"/>
-      <arg name="description" type="s" direction="in"/>
-      <arg name="location" type="s" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="UpdateServiceConfig">
-      <arg name="client_id" type="s" direction="in"/>
-      <arg name="client_secret" type="s" direction="in"/>
-      <arg name="api_key" type="s" direction="in"/>
-      <arg name="oauth_url" type="s" direction="in"/>
-      <arg name="service_url" type="s" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="UpdateState">
-      <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="user_role" type="s" direction="in"/>
-      <arg name="id" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
-    </method>
-    <method name="GetCommand">
-      <arg name="id" type="s" direction="in"/>
-      <arg name="json_command" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
-    </method>
-    <method name="TestMethod">
-      <arg name="message" type="s" direction="in"/>
-      <arg name="echoed_message" type="s" direction="out"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
-    </method>
-    <method name="EnableWiFiBootstrapping">
-      <tp:docstring>
-        Enables WiFiBootstrapping if manual bootstrapping is selected via the
-        configuration file.  This will re-purpose a WiFi interface for use in
-        bootstrapping.  This breaks any existing WiFi connection on the
-        interface.
-      </tp:docstring>
-      <arg name="listener_path" type="o" direction="in">
-        <tp:docstring>
-          Path to an object exposed by the caller.  This object must support
-          the org.chromium.Buffet.WiFiBootstrapListener interface.
-        </tp:docstring>
-      </arg>
-      <arg name="options" type="a{sv}" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="DisableWiFiBootstrapping">
-      <tp:docstring>
-        If a previous call to EnableWiFiBootstrapping was successful and
-        has not been cancelled or completed since, disables that bootstrapping
-        process.
-      </tp:docstring>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="EnableGCDBootstrapping">
-      <arg name="listener_path" type="o" direction="in"/>
-      <arg name="options" type="a{sv}" direction="in"/>
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-    <method name="DisableGCDBootstrapping">
-      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
-    </method>
-
-    <property name="Status" type="s" access="read">
-      <tp:docstring>
-        State of Buffet's cloud registration.
-        Possible values include:
-          "unconfigured": Buffet has no credentials, either from an out of box
-                          state, or because device was unregistered.
-
-          "connecting": Buffet is registered and attempting to connect to the
-                        cloud.
-
-          "connected": Buffet is online and connected to the cloud. Note that
-                       only this state requires internet connectivity.
-
-          "invalid_credentials": Buffet has credentials, but they are no longer
-                                 valid.
-      </tp:docstring>
-    </property>
-    <property name="DeviceId" type="s" access="read">
-      <tp:docstring>
-        GCD ID if the device is registered or empty otherwise.
-      </tp:docstring>
-    </property>
-    <property name="State" type="s" access="read">
-      <tp:docstring>
-        JSON with state of the devices.
-      </tp:docstring>
-    </property>
-    <property name="OemName" type="s" access="read">
-      <tp:docstring>
-        Name of the device maker.
-      </tp:docstring>
-    </property>
-    <property name="ModelName" type="s" access="read">
-      <tp:docstring>
-        Name of the device model.
-      </tp:docstring>
-    </property>
-    <property name="ModelId" type="s" access="read">
-      <tp:docstring>
-        Five character code assigned by the cloud registry of device models.
-      </tp:docstring>
-    </property>
-    <property name="Name" type="s" access="read">
-      <tp:docstring>
-        Human readable name of the device. Must not be empty.
-      </tp:docstring>
-    </property>
-    <property name="Description" type="s" access="read">
-      <tp:docstring>
-        Human readable description of the device.
-      </tp:docstring>
-    </property>
-    <property name="Location" type="s" access="read">
-      <tp:docstring>
-        Location of the device.
-      </tp:docstring>
-    </property>
-    <property name="AnonymousAccessRole" type="s" access="read">
-      <tp:docstring>
-        Max role granted to anonymous user when accessing device over the local
-        network.
-        Possible values include:
-          "none": Device does not allow local access by unauthenticated users.
-
-          "viewer": Device allows everyone authenticated to access device.
-
-          "user": Device allows everyone authenticated as 'user' to access
-                  device.
-
-          "owner": Device allows everyone authenticated as 'owner' to access
-                  device.
-      </tp:docstring>
-    </property>
-    <property name="WiFiBootstrapState" type="s" access="read">
-      <tp:docstring>
-        Contains one of the following values describing the state of WiFi
-        bootstrapping:
-          “disabled” - Bootstrapping has been disabled in the config file.
-          “waiting” - buffet is waiting to receive WiFi credentials from
-                      a paired peer.
-          “connecting” - buffet has received WiFi credentials, and is now
-                         attempting to connect to a WiFi network.
-          “monitoring” - buffet is monitoring our connectivity and will
-                         re-enable bootstrapping if connectivity fails in
-                         automatic mode.
-
-       Note: more values may be added later to this list.
-      </tp:docstring>
-    </property>
-    <property name="GCDBootstrapState" type="s" access="read">
-      <tp:docstring>
-        Contains one of the following values describing the state of GCD
-        bootstrapping:
-          “disabled” - GCD registration has been disabled in the config file.
-          “offline” - GCD registration is unknown because the device is offline.
-          “connecting” - GCD registration is unknown because the device is still
-                         connecting to the cloud.
-          “waiting” - Waiting to be configured with GCD credentials.
-          “registering” - Registering the device with the GCD servers.
-          “online” - Device is online and registered with GCD servers.
-
-        Note: more values may be added later to this list.
-
-        Clients that wish to present a single linear bootstrapping flow to users
-        may treat GCD bootstrapping states as a suffix to WiFi bootstrapping
-        states.  If we have no cloud connectivity, we cannot possibly do GCD
-        registration/credential verification.
-      </tp:docstring>
-    </property>
-    <property name="PairingInfo" type="a{sv}" access="read">
-      <tp:docstring>
-        Describes the state of device pairing. While no pairing attempt is in
-        progress, this dictionary will be empty. When a client initiates a
-        pairing transaction via /privet/v3/pairing/start, dictionary will
-        contain the following keys:
-          “sessionId” - ID of the pairing session; generated by device
-          “pairingMode” - Selected type of pairing from /privet/v3/pairing/start
-                          (e.g. “pinCode” or “embeddedCode”)
-          “code” - The pin code or embedded code as appropriate to the
-                   “pairingMode” value.  See design document.
-                   This value will be a string.
-      </tp:docstring>
-    </property>
-  </interface>
-</node>
diff --git a/buffet/dbus_command_dispatcher.cc b/buffet/dbus_command_dispatcher.cc
deleted file mode 100644
index 1af0983..0000000
--- a/buffet/dbus_command_dispatcher.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_command_dispatcher.h"
-
-#include <chromeos/dbus/exported_object_manager.h>
-#include <weave/command.h>
-
-#include "buffet/dbus_command_proxy.h"
-#include "buffet/dbus_constants.h"
-
-using chromeos::dbus_utils::AsyncEventSequencer;
-using chromeos::dbus_utils::ExportedObjectManager;
-
-namespace buffet {
-
-DBusCommandDispacher::DBusCommandDispacher(
-    const base::WeakPtr<ExportedObjectManager>& object_manager,
-    weave::Commands* command_manager)
-    : object_manager_{object_manager} {
-  command_manager->AddOnCommandAddedCallback(base::Bind(
-      &DBusCommandDispacher::OnCommandAdded, weak_ptr_factory_.GetWeakPtr()));
-}
-
-void DBusCommandDispacher::OnCommandAdded(weave::Command* command) {
-  if (!object_manager_)
-    return;
-  std::unique_ptr<DBusCommandProxy> proxy{new DBusCommandProxy(
-      object_manager_.get(), object_manager_->GetBus(), command,
-      buffet::kCommandServicePathPrefix + std::to_string(++next_id_))};
-  proxy->RegisterAsync(AsyncEventSequencer::GetDefaultCompletionAction());
-  // DBusCommandProxy::DBusCommandProxy() subscribe itself to weave::Command
-  // notifications. When weave::Command is being destroyed it sends
-  // ::OnCommandDestroyed() and DBusCommandProxy deletes itself.
-  proxy.release();
-}
-
-}  // namespace buffet
diff --git a/buffet/dbus_command_dispatcher.h b/buffet/dbus_command_dispatcher.h
deleted file mode 100644
index fa17ad6..0000000
--- a/buffet/dbus_command_dispatcher.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_DBUS_COMMAND_DISPATCHER_H_
-#define BUFFET_DBUS_COMMAND_DISPATCHER_H_
-
-#include <map>
-#include <string>
-
-#include <base/macros.h>
-#include <base/memory/weak_ptr.h>
-#include <weave/commands.h>
-
-namespace chromeos {
-namespace dbus_utils {
-class ExportedObjectManager;
-}  // namespace dbus_utils
-}  // namespace chromeos
-
-namespace buffet {
-
-// Implements D-Bus dispatch of commands. When OnCommandAdded is called,
-// DBusCommandDispacher creates an instance of DBusCommandProxy object and
-// advertises it through ExportedObjectManager on D-Bus. Command handling
-// processes can watch the new D-Bus object appear and communicate with it to
-// update the command handling progress. Once command is handled,
-// DBusCommandProxy::Done() is called and the command is removed from the
-// command queue and D-Bus ExportedObjectManager.
-class DBusCommandDispacher final {
- public:
-  explicit DBusCommandDispacher(
-      const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
-          object_manager,
-      weave::Commands* command_manager);
-
- private:
-  void OnCommandAdded(weave::Command* command);
-
-  base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager> object_manager_;
-  int next_id_{0};
-
-  // Default constructor is used in special circumstances such as for testing.
-  DBusCommandDispacher() = default;
-
-  base::WeakPtrFactory<DBusCommandDispacher> weak_ptr_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(DBusCommandDispacher);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_DBUS_COMMAND_DISPATCHER_H_
diff --git a/buffet/dbus_command_proxy.cc b/buffet/dbus_command_proxy.cc
deleted file mode 100644
index 064c801..0000000
--- a/buffet/dbus_command_proxy.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_command_proxy.h"
-
-#include <chromeos/dbus/async_event_sequencer.h>
-#include <chromeos/dbus/exported_object_manager.h>
-#include <weave/enum_to_string.h>
-
-#include "buffet/dbus_conversion.h"
-
-using chromeos::dbus_utils::AsyncEventSequencer;
-using chromeos::dbus_utils::ExportedObjectManager;
-
-namespace buffet {
-
-DBusCommandProxy::DBusCommandProxy(ExportedObjectManager* object_manager,
-                                   const scoped_refptr<dbus::Bus>& bus,
-                                   weave::Command* command,
-                                   std::string object_path)
-    : command_{command},
-      dbus_object_{object_manager, bus, dbus::ObjectPath{object_path}} {
-  observer_.Add(command);
-}
-
-void DBusCommandProxy::RegisterAsync(
-    const AsyncEventSequencer::CompletionAction& completion_callback) {
-  dbus_adaptor_.RegisterWithDBusObject(&dbus_object_);
-
-  // Set the initial property values before registering the DBus object.
-  dbus_adaptor_.SetName(command_->GetName());
-  dbus_adaptor_.SetCategory(command_->GetCategory());
-  dbus_adaptor_.SetId(command_->GetID());
-  dbus_adaptor_.SetStatus(EnumToString(command_->GetStatus()));
-  dbus_adaptor_.SetProgress(
-      DictionaryToDBusVariantDictionary(*command_->GetProgress()));
-  dbus_adaptor_.SetOrigin(EnumToString(command_->GetOrigin()));
-  dbus_adaptor_.SetParameters(
-      DictionaryToDBusVariantDictionary(*command_->GetParameters()));
-  dbus_adaptor_.SetResults(
-      DictionaryToDBusVariantDictionary(*command_->GetResults()));
-
-  // Register the command DBus object and expose its methods and properties.
-  dbus_object_.RegisterAsync(completion_callback);
-}
-
-void DBusCommandProxy::OnResultsChanged() {
-  dbus_adaptor_.SetResults(
-      DictionaryToDBusVariantDictionary(*command_->GetResults()));
-}
-
-void DBusCommandProxy::OnStatusChanged() {
-  dbus_adaptor_.SetStatus(EnumToString(command_->GetStatus()));
-}
-
-void DBusCommandProxy::OnProgressChanged() {
-  dbus_adaptor_.SetProgress(
-      DictionaryToDBusVariantDictionary(*command_->GetProgress()));
-}
-
-void DBusCommandProxy::OnCommandDestroyed() {
-  delete this;
-}
-
-bool DBusCommandProxy::SetProgress(
-    chromeos::ErrorPtr* error,
-    const chromeos::VariantDictionary& progress) {
-  LOG(INFO) << "Received call to Command<" << command_->GetName()
-            << ">::SetProgress()";
-  auto dictionary = DictionaryFromDBusVariantDictionary(progress, error);
-  if (!dictionary)
-    return false;
-  return command_->SetProgress(*dictionary, error);
-}
-
-bool DBusCommandProxy::SetResults(chromeos::ErrorPtr* error,
-                                  const chromeos::VariantDictionary& results) {
-  LOG(INFO) << "Received call to Command<" << command_->GetName()
-            << ">::SetResults()";
-  auto dictionary = DictionaryFromDBusVariantDictionary(results, error);
-  if (!dictionary)
-    return false;
-  return command_->SetResults(*dictionary, error);
-}
-
-void DBusCommandProxy::Abort() {
-  LOG(INFO) << "Received call to Command<" << command_->GetName()
-            << ">::Abort()";
-  command_->Abort();
-}
-
-void DBusCommandProxy::Cancel() {
-  LOG(INFO) << "Received call to Command<" << command_->GetName()
-            << ">::Cancel()";
-  command_->Cancel();
-}
-
-void DBusCommandProxy::Done() {
-  LOG(INFO) << "Received call to Command<" << command_->GetName()
-            << ">::Done()";
-  command_->Done();
-}
-
-}  // namespace buffet
diff --git a/buffet/dbus_command_proxy.h b/buffet/dbus_command_proxy.h
deleted file mode 100644
index c13ee0a..0000000
--- a/buffet/dbus_command_proxy.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_DBUS_COMMAND_PROXY_H_
-#define BUFFET_DBUS_COMMAND_PROXY_H_
-
-#include <string>
-
-#include <base/macros.h>
-#include <base/scoped_observer.h>
-#include <chromeos/dbus/data_serialization.h>
-#include <chromeos/dbus/dbus_object.h>
-#include <weave/command.h>
-
-#include "buffet/org.chromium.Buffet.Command.h"
-
-namespace chromeos {
-namespace dbus_utils {
-class ExportedObjectManager;
-}  // namespace dbus_utils
-}  // namespace chromeos
-
-namespace buffet {
-
-class DBusCommandProxy : public weave::Command::Observer,
-                         public org::chromium::Buffet::CommandInterface {
- public:
-  DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
-                   const scoped_refptr<dbus::Bus>& bus,
-                   weave::Command* command,
-                   std::string object_path);
-  ~DBusCommandProxy() override = default;
-
-  void RegisterAsync(
-      const chromeos::dbus_utils::AsyncEventSequencer::CompletionAction&
-          completion_callback);
-
-  // CommandProxyInterface implementation/overloads.
-  void OnResultsChanged() override;
-  void OnStatusChanged() override;
-  void OnProgressChanged() override;
-  void OnCommandDestroyed() override;
-
- private:
-  // Handles calls to org.chromium.Buffet.Command.SetProgress(progress).
-  bool SetProgress(chromeos::ErrorPtr* error,
-                   const chromeos::VariantDictionary& progress) override;
-  // Handles calls to org.chromium.Buffet.Command.SetResults(results).
-  bool SetResults(chromeos::ErrorPtr* error,
-                  const chromeos::VariantDictionary& results) override;
-  // Handles calls to org.chromium.Buffet.Command.Abort().
-  void Abort() override;
-  // Handles calls to org.chromium.Buffet.Command.Cancel().
-  void Cancel() override;
-  // Handles calls to org.chromium.Buffet.Command.Done().
-  void Done() override;
-
-  weave::Command* command_;
-  org::chromium::Buffet::CommandAdaptor dbus_adaptor_{this};
-  chromeos::dbus_utils::DBusObject dbus_object_;
-
-  ScopedObserver<weave::Command, weave::Command::Observer> observer_{this};
-
-  friend class DBusCommandProxyTest;
-  friend class DBusCommandDispacherTest;
-  DISALLOW_COPY_AND_ASSIGN(DBusCommandProxy);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_DBUS_COMMAND_PROXY_H_
diff --git a/buffet/dbus_command_proxy_unittest.cc b/buffet/dbus_command_proxy_unittest.cc
deleted file mode 100644
index 18dd8e0..0000000
--- a/buffet/dbus_command_proxy_unittest.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_command_proxy.h"
-
-#include <functional>
-#include <memory>
-#include <vector>
-
-#include <dbus/mock_bus.h>
-#include <dbus/mock_exported_object.h>
-#include <dbus/property.h>
-#include <chromeos/dbus/dbus_object.h>
-#include <chromeos/dbus/dbus_object_test_helpers.h>
-#include <gtest/gtest.h>
-#include <weave/command.h>
-#include <weave/enum_to_string.h>
-#include <weave/mock_command.h>
-#include <weave/mock_commands.h>
-#include <weave/unittest_utils.h>
-
-#include "buffet/dbus_constants.h"
-
-namespace buffet {
-
-using ::testing::AnyNumber;
-using ::testing::Return;
-using ::testing::ReturnRefOfCopy;
-using ::testing::_;
-
-using chromeos::VariantDictionary;
-using chromeos::dbus_utils::AsyncEventSequencer;
-using weave::unittests::CreateDictionaryValue;
-using weave::unittests::IsEqualValue;
-
-namespace {
-
-const char kTestCommandCategoty[] = "test_command_category";
-const char kTestCommandId[] = "cmd_1";
-
-MATCHER_P(EqualToJson, json, "") {
-  auto json_value = CreateDictionaryValue(json);
-  return IsEqualValue(*json_value, arg);
-}
-
-}  // namespace
-
-class DBusCommandProxyTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    // Set up a mock DBus bus object.
-    dbus::Bus::Options options;
-    options.bus_type = dbus::Bus::SYSTEM;
-    bus_ = new dbus::MockBus(options);
-    // By default, don't worry about threading assertions.
-    EXPECT_CALL(*bus_, AssertOnOriginThread()).Times(AnyNumber());
-    EXPECT_CALL(*bus_, AssertOnDBusThread()).Times(AnyNumber());
-
-    EXPECT_CALL(command_, GetID())
-        .WillOnce(ReturnRefOfCopy<std::string>(kTestCommandId));
-    // Use WillRepeatedly becase GetName is used for logging.
-    EXPECT_CALL(command_, GetName())
-        .WillRepeatedly(ReturnRefOfCopy<std::string>("robot.jump"));
-    EXPECT_CALL(command_, GetCategory())
-        .WillOnce(ReturnRefOfCopy<std::string>(kTestCommandCategoty));
-    EXPECT_CALL(command_, GetStatus())
-        .WillOnce(Return(weave::CommandStatus::kQueued));
-    EXPECT_CALL(command_, GetOrigin())
-        .WillOnce(Return(weave::CommandOrigin::kLocal));
-    EXPECT_CALL(command_, MockGetParameters())
-        .WillOnce(ReturnRefOfCopy<std::string>(R"({
-          'height': 53,
-          '_jumpType': '_withKick'
-        })"));
-    EXPECT_CALL(command_, MockGetProgress())
-        .WillOnce(ReturnRefOfCopy<std::string>("{}"));
-    EXPECT_CALL(command_, MockGetResults())
-        .WillOnce(ReturnRefOfCopy<std::string>("{}"));
-
-    // Set up a mock ExportedObject to be used with the DBus command proxy.
-    std::string cmd_path = buffet::kCommandServicePathPrefix;
-    cmd_path += kTestCommandId;
-    const dbus::ObjectPath kCmdObjPath(cmd_path);
-    // Use a mock exported object for the exported object manager.
-    mock_exported_object_command_ =
-        new dbus::MockExportedObject(bus_.get(), kCmdObjPath);
-    EXPECT_CALL(*bus_, GetExportedObject(kCmdObjPath))
-        .Times(AnyNumber())
-        .WillRepeatedly(Return(mock_exported_object_command_.get()));
-    EXPECT_CALL(*mock_exported_object_command_, ExportMethod(_, _, _, _))
-        .Times(AnyNumber());
-
-    proxy_.reset(new DBusCommandProxy(nullptr, bus_, &command_, cmd_path));
-    GetCommandProxy()->RegisterAsync(
-        AsyncEventSequencer::GetDefaultCompletionAction());
-  }
-
-  void TearDown() override {
-    EXPECT_CALL(*mock_exported_object_command_, Unregister()).Times(1);
-    bus_ = nullptr;
-  }
-
-  DBusCommandProxy* GetCommandProxy() const { return proxy_.get(); }
-
-  org::chromium::Buffet::CommandAdaptor* GetCommandAdaptor() const {
-    return &GetCommandProxy()->dbus_adaptor_;
-  }
-
-  org::chromium::Buffet::CommandInterface* GetCommandInterface() const {
-    // DBusCommandProxy also implements CommandInterface.
-    return GetCommandProxy();
-  }
-
-  weave::CommandStatus GetCommandStatus() const {
-    weave::CommandStatus status;
-    EXPECT_TRUE(StringToEnum(GetCommandAdaptor()->GetStatus(), &status));
-    return status;
-  }
-
-  scoped_refptr<dbus::MockExportedObject> mock_exported_object_command_;
-  scoped_refptr<dbus::MockBus> bus_;
-
-  weave::unittests::MockCommand command_;
-  std::unique_ptr<DBusCommandProxy> proxy_;
-};
-
-TEST_F(DBusCommandProxyTest, Init) {
-  VariantDictionary params = {
-      {"height", int32_t{53}}, {"_jumpType", std::string{"_withKick"}},
-  };
-  EXPECT_EQ(weave::CommandStatus::kQueued, GetCommandStatus());
-  EXPECT_EQ(params, GetCommandAdaptor()->GetParameters());
-  EXPECT_EQ(VariantDictionary{}, GetCommandAdaptor()->GetProgress());
-  EXPECT_EQ(VariantDictionary{}, GetCommandAdaptor()->GetResults());
-  EXPECT_EQ("robot.jump", GetCommandAdaptor()->GetName());
-  EXPECT_EQ(kTestCommandCategoty, GetCommandAdaptor()->GetCategory());
-  EXPECT_EQ(kTestCommandId, GetCommandAdaptor()->GetId());
-}
-
-TEST_F(DBusCommandProxyTest, OnProgressChanged) {
-  EXPECT_CALL(*mock_exported_object_command_, SendSignal(_)).Times(1);
-  EXPECT_CALL(command_, MockGetProgress())
-      .WillOnce(ReturnRefOfCopy<std::string>("{'progress': 10}"));
-  proxy_->OnProgressChanged();
-  EXPECT_EQ((VariantDictionary{{"progress", int32_t{10}}}),
-            GetCommandAdaptor()->GetProgress());
-}
-
-TEST_F(DBusCommandProxyTest, OnResultsChanged) {
-  EXPECT_CALL(*mock_exported_object_command_, SendSignal(_)).Times(1);
-  EXPECT_CALL(command_, MockGetResults())
-      .WillOnce(ReturnRefOfCopy<std::string>(
-          "{'foo': 42, 'bar': 'foobar', 'resultList': [1, 2, 3]}"));
-  proxy_->OnResultsChanged();
-
-  EXPECT_EQ((VariantDictionary{{"foo", int32_t{42}},
-                               {"bar", std::string{"foobar"}},
-                               {"resultList", std::vector<int>{1, 2, 3}}}),
-            GetCommandAdaptor()->GetResults());
-}
-
-TEST_F(DBusCommandProxyTest, OnStatusChanged) {
-  EXPECT_CALL(*mock_exported_object_command_, SendSignal(_)).Times(1);
-  EXPECT_CALL(command_, GetStatus())
-      .WillOnce(Return(weave::CommandStatus::kInProgress));
-  proxy_->OnStatusChanged();
-  EXPECT_EQ(weave::CommandStatus::kInProgress, GetCommandStatus());
-}
-
-TEST_F(DBusCommandProxyTest, SetProgress) {
-  EXPECT_CALL(command_, SetProgress(EqualToJson("{'progress': 10}"), _))
-      .WillOnce(Return(true));
-  EXPECT_TRUE(
-      GetCommandInterface()->SetProgress(nullptr, {{"progress", int32_t{10}}}));
-}
-
-TEST_F(DBusCommandProxyTest, SetResults) {
-  EXPECT_CALL(
-      command_,
-      SetResults(
-          EqualToJson("{'foo': 42, 'bar': 'foobar', 'resultList': [1, 2, 3]}"),
-          _))
-      .WillOnce(Return(true));
-  EXPECT_TRUE(GetCommandInterface()->SetResults(
-      nullptr, VariantDictionary{{"foo", int32_t{42}},
-                                 {"bar", std::string{"foobar"}},
-                                 {"resultList", std::vector<int>{1, 2, 3}}}));
-}
-
-TEST_F(DBusCommandProxyTest, Abort) {
-  EXPECT_CALL(command_, Abort());
-  GetCommandInterface()->Abort();
-}
-
-TEST_F(DBusCommandProxyTest, Cancel) {
-  EXPECT_CALL(command_, Cancel());
-  GetCommandInterface()->Cancel();
-}
-
-TEST_F(DBusCommandProxyTest, Done) {
-  EXPECT_CALL(command_, Done());
-  GetCommandInterface()->Done();
-}
-
-}  // namespace buffet
diff --git a/buffet/dbus_constants.cc b/buffet/dbus_constants.cc
deleted file mode 100644
index 6ab587a..0000000
--- a/buffet/dbus_constants.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_constants.h"
-
-namespace buffet {
-
-const char kServiceName[] = "org.chromium.Buffet";
-const char kRootServicePath[] = "/org/chromium/Buffet";
-const char kCommandServicePathPrefix[] = "/org/chromium/Buffet/commands/";
-
-}  // namespace buffet
diff --git a/buffet/dbus_constants.h b/buffet/dbus_constants.h
deleted file mode 100644
index 0bb72dc..0000000
--- a/buffet/dbus_constants.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_DBUS_CONSTANTS_H_
-#define BUFFET_DBUS_CONSTANTS_H_
-
-namespace buffet {
-
-// The service name claimed by the Buffet daemon.
-extern const char kServiceName[];
-
-// The object at this path implements the ObjectManager interface.
-extern const char kRootServicePath[];
-
-// D-Bus object path prefix for Command objects.
-extern const char kCommandServicePathPrefix[];
-
-}  // namespace buffet
-
-#endif  // BUFFET_DBUS_CONSTANTS_H_
diff --git a/buffet/dbus_conversion.cc b/buffet/dbus_conversion.cc
deleted file mode 100644
index 51d35f1..0000000
--- a/buffet/dbus_conversion.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_conversion.h"
-
-#include <set>
-#include <string>
-#include <vector>
-
-#include <chromeos/type_name_undecorate.h>
-
-namespace buffet {
-
-namespace {
-
-// Helpers for JsonToAny().
-template <typename T>
-chromeos::Any ValueToAny(const base::Value& json,
-                         bool (base::Value::*fnc)(T*) const) {
-  T val;
-  CHECK((json.*fnc)(&val));
-  return val;
-}
-
-chromeos::Any ValueToAny(const base::Value& json);
-
-template <typename T>
-chromeos::Any ListToAny(const base::ListValue& list,
-                        bool (base::Value::*fnc)(T*) const) {
-  std::vector<T> result;
-  result.reserve(list.GetSize());
-  for (const base::Value* v : list) {
-    T val;
-    CHECK((v->*fnc)(&val));
-    result.push_back(val);
-  }
-  return result;
-}
-
-chromeos::Any DictListToAny(const base::ListValue& list) {
-  std::vector<chromeos::VariantDictionary> result;
-  result.reserve(list.GetSize());
-  for (const base::Value* v : list) {
-    const base::DictionaryValue* dict = nullptr;
-    CHECK(v->GetAsDictionary(&dict));
-    result.push_back(DictionaryToDBusVariantDictionary(*dict));
-  }
-  return result;
-}
-
-chromeos::Any ListListToAny(const base::ListValue& list) {
-  std::vector<chromeos::Any> result;
-  result.reserve(list.GetSize());
-  for (const base::Value* v : list)
-    result.push_back(ValueToAny(*v));
-  return result;
-}
-
-// Converts a JSON value into an Any so it can be sent over D-Bus using
-// UpdateState D-Bus method from Buffet.
-chromeos::Any ValueToAny(const base::Value& json) {
-  chromeos::Any prop_value;
-  switch (json.GetType()) {
-    case base::Value::TYPE_BOOLEAN:
-      prop_value = ValueToAny<bool>(json, &base::Value::GetAsBoolean);
-      break;
-    case base::Value::TYPE_INTEGER:
-      prop_value = ValueToAny<int>(json, &base::Value::GetAsInteger);
-      break;
-    case base::Value::TYPE_DOUBLE:
-      prop_value = ValueToAny<double>(json, &base::Value::GetAsDouble);
-      break;
-    case base::Value::TYPE_STRING:
-      prop_value = ValueToAny<std::string>(json, &base::Value::GetAsString);
-      break;
-    case base::Value::TYPE_DICTIONARY: {
-      const base::DictionaryValue* dict = nullptr;
-      CHECK(json.GetAsDictionary(&dict));
-      prop_value = DictionaryToDBusVariantDictionary(*dict);
-      break;
-    }
-    case base::Value::TYPE_LIST: {
-      const base::ListValue* list = nullptr;
-      CHECK(json.GetAsList(&list));
-      if (list->empty()) {
-        // We don't know type of objects this list intended for, so we just use
-        // vector<chromeos::Any>.
-        prop_value = ListListToAny(*list);
-        break;
-      }
-      auto type = (*list->begin())->GetType();
-      for (const base::Value* v : *list)
-        CHECK_EQ(v->GetType(), type) << "Unsupported different type elements";
-
-      switch (type) {
-        case base::Value::TYPE_BOOLEAN:
-          prop_value = ListToAny<bool>(*list, &base::Value::GetAsBoolean);
-          break;
-        case base::Value::TYPE_INTEGER:
-          prop_value = ListToAny<int>(*list, &base::Value::GetAsInteger);
-          break;
-        case base::Value::TYPE_DOUBLE:
-          prop_value = ListToAny<double>(*list, &base::Value::GetAsDouble);
-          break;
-        case base::Value::TYPE_STRING:
-          prop_value = ListToAny<std::string>(*list, &base::Value::GetAsString);
-          break;
-        case base::Value::TYPE_DICTIONARY:
-          prop_value = DictListToAny(*list);
-          break;
-        case base::Value::TYPE_LIST:
-          // We can't support Any{vector<vector<>>} as the type is only known
-          // in runtime when we need to instantiate templates in compile time.
-          // We can use Any{vector<Any>} instead.
-          prop_value = ListListToAny(*list);
-          break;
-        default:
-          LOG(FATAL) << "Unsupported JSON value type for list element: "
-                     << (*list->begin())->GetType();
-      }
-      break;
-    }
-    default:
-      LOG(FATAL) << "Unexpected JSON value type: " << json.GetType();
-      break;
-  }
-  return prop_value;
-}
-
-template <typename T>
-std::unique_ptr<base::Value> CreateValue(const T& value,
-                                         chromeos::ErrorPtr* error) {
-  return std::unique_ptr<base::Value>{new base::FundamentalValue{value}};
-}
-
-template <>
-std::unique_ptr<base::Value> CreateValue<std::string>(
-    const std::string& value,
-    chromeos::ErrorPtr* error) {
-  return std::unique_ptr<base::Value>{new base::StringValue{value}};
-}
-
-template <>
-std::unique_ptr<base::Value> CreateValue<chromeos::VariantDictionary>(
-    const chromeos::VariantDictionary& value,
-    chromeos::ErrorPtr* error) {
-  return DictionaryFromDBusVariantDictionary(value, error);
-}
-
-template <typename T>
-std::unique_ptr<base::ListValue> CreateListValue(const std::vector<T>& value,
-                                                 chromeos::ErrorPtr* error) {
-  std::unique_ptr<base::ListValue> list{new base::ListValue};
-
-  for (const T& i : value) {
-    auto item = CreateValue(i, error);
-    if (!item)
-      return nullptr;
-    list->Append(item.release());
-  }
-
-  return list;
-}
-
-// Returns false only in case of error. True can be returned if type is not
-// matched.
-template <typename T>
-bool TryCreateValue(const chromeos::Any& any,
-                    std::unique_ptr<base::Value>* value,
-                    chromeos::ErrorPtr* error) {
-  if (any.IsTypeCompatible<T>()) {
-    *value = CreateValue(any.Get<T>(), error);
-    return *value != nullptr;
-  }
-
-  if (any.IsTypeCompatible<std::vector<T>>()) {
-    *value = CreateListValue(any.Get<std::vector<T>>(), error);
-    return *value != nullptr;
-  }
-
-  return true;  // Not an error, we will try different type.
-}
-
-template <>
-std::unique_ptr<base::Value> CreateValue<chromeos::Any>(
-    const chromeos::Any& any,
-    chromeos::ErrorPtr* error) {
-  std::unique_ptr<base::Value> result;
-  if (!TryCreateValue<bool>(any, &result, error) || result)
-    return result;
-
-  if (!TryCreateValue<int>(any, &result, error) || result)
-    return result;
-
-  if (!TryCreateValue<double>(any, &result, error) || result)
-    return result;
-
-  if (!TryCreateValue<std::string>(any, &result, error) || result)
-    return result;
-
-  if (!TryCreateValue<chromeos::VariantDictionary>(any, &result, error) ||
-      result) {
-    return result;
-  }
-
-  // This will collapse Any{Any{T}} and vector{Any{T}}.
-  if (!TryCreateValue<chromeos::Any>(any, &result, error) || result)
-    return result;
-
-  chromeos::Error::AddToPrintf(
-      error, FROM_HERE, "buffet", "unknown_type", "Type '%s' is not supported.",
-      chromeos::UndecorateTypeName(any.GetType().name()).c_str());
-
-  return nullptr;
-}
-
-}  // namespace
-
-// TODO(vitalybuka): Use in buffet_client.
-chromeos::VariantDictionary DictionaryToDBusVariantDictionary(
-    const base::DictionaryValue& object) {
-  chromeos::VariantDictionary result;
-
-  for (base::DictionaryValue::Iterator it(object); !it.IsAtEnd(); it.Advance())
-    result.emplace(it.key(), ValueToAny(it.value()));
-
-  return result;
-}
-
-std::unique_ptr<base::DictionaryValue> DictionaryFromDBusVariantDictionary(
-    const chromeos::VariantDictionary& object,
-    chromeos::ErrorPtr* error) {
-  std::unique_ptr<base::DictionaryValue> result{new base::DictionaryValue};
-
-  for (const auto& pair : object) {
-    auto value = CreateValue(pair.second, error);
-    if (!value)
-      return nullptr;
-    result->SetWithoutPathExpansion(pair.first, value.release());
-  }
-
-  return result;
-}
-
-}  // namespace buffet
diff --git a/buffet/dbus_conversion.h b/buffet/dbus_conversion.h
deleted file mode 100644
index 20c3f58..0000000
--- a/buffet/dbus_conversion.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_DBUS_CONVERSION_H_
-#define BUFFET_DBUS_CONVERSION_H_
-
-#include <base/values.h>
-#include <chromeos/any.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/variant_dictionary.h>
-
-namespace buffet {
-
-// Converts DictionaryValue to D-Bus variant dictionary.
-chromeos::VariantDictionary DictionaryToDBusVariantDictionary(
-    const base::DictionaryValue& object);
-
-// Converts D-Bus variant dictionary to DictionaryValue.
-std::unique_ptr<base::DictionaryValue> DictionaryFromDBusVariantDictionary(
-    const chromeos::VariantDictionary& object,
-    chromeos::ErrorPtr* error);
-
-}  // namespace buffet
-
-#endif  // BUFFET_DBUS_CONVERSION_H_
diff --git a/buffet/dbus_conversion_unittest.cc b/buffet/dbus_conversion_unittest.cc
deleted file mode 100644
index 0d94576..0000000
--- a/buffet/dbus_conversion_unittest.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/dbus_conversion.h"
-
-#include <limits>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <base/guid.h>
-#include <base/rand_util.h>
-#include <base/values.h>
-#include <chromeos/variant_dictionary.h>
-#include <gtest/gtest.h>
-#include <weave/unittest_utils.h>
-
-namespace buffet {
-
-namespace {
-
-using chromeos::Any;
-using chromeos::VariantDictionary;
-using weave::unittests::CreateDictionaryValue;
-using weave::unittests::IsEqualValue;
-
-chromeos::VariantDictionary ToDBus(const base::DictionaryValue& object) {
-  return DictionaryToDBusVariantDictionary(object);
-}
-
-std::unique_ptr<base::DictionaryValue> FromDBus(
-    const chromeos::VariantDictionary& object) {
-  chromeos::ErrorPtr error;
-  auto result = DictionaryFromDBusVariantDictionary(object, &error);
-  EXPECT_TRUE(result || error);
-  return result;
-}
-
-std::unique_ptr<base::Value> CreateRandomValue(int children);
-std::unique_ptr<base::Value> CreateRandomValue(int children,
-                                               base::Value::Type type);
-
-const base::Value::Type kRandomTypes[] = {
-    base::Value::TYPE_BOOLEAN,    base::Value::TYPE_INTEGER,
-    base::Value::TYPE_DOUBLE,     base::Value::TYPE_STRING,
-    base::Value::TYPE_DICTIONARY, base::Value::TYPE_LIST,
-};
-
-const base::Value::Type kRandomTypesWithChildren[] = {
-    base::Value::TYPE_DICTIONARY, base::Value::TYPE_LIST,
-};
-
-base::Value::Type CreateRandomValueType(bool with_children) {
-  if (with_children) {
-    return kRandomTypesWithChildren[base::RandInt(
-        0, arraysize(kRandomTypesWithChildren) - 1)];
-  }
-  return kRandomTypes[base::RandInt(0, arraysize(kRandomTypes) - 1)];
-}
-
-std::unique_ptr<base::DictionaryValue> CreateRandomDictionary(int children) {
-  std::unique_ptr<base::DictionaryValue> result{new base::DictionaryValue};
-
-  while (children > 0) {
-    int sub_children = base::RandInt(1, children);
-    children -= sub_children;
-    result->Set(base::GenerateGUID(),
-                CreateRandomValue(sub_children).release());
-  }
-
-  return result;
-}
-
-std::unique_ptr<base::ListValue> CreateRandomList(int children) {
-  std::unique_ptr<base::ListValue> result{new base::ListValue};
-
-  base::Value::Type type = CreateRandomValueType(children > 0);
-  while (children > 0) {
-    size_t max_children =
-        (type != base::Value::TYPE_DICTIONARY && type != base::Value::TYPE_LIST)
-            ? 1
-            : children;
-    size_t sub_children = base::RandInt(1, max_children);
-    children -= sub_children;
-    result->Append(CreateRandomValue(sub_children, type).release());
-  }
-
-  return result;
-}
-
-std::unique_ptr<base::Value> CreateRandomValue(int children,
-                                               base::Value::Type type) {
-  CHECK_GE(children, 1);
-  switch (type) {
-    case base::Value::TYPE_INTEGER:
-      return std::unique_ptr<base::Value>{new base::FundamentalValue{
-          base::RandInt(std::numeric_limits<int>::min(),
-                        std::numeric_limits<int>::max())}};
-    case base::Value::TYPE_DOUBLE:
-      return std::unique_ptr<base::Value>{
-          new base::FundamentalValue{base::RandDouble()}};
-    case base::Value::TYPE_STRING:
-      return std::unique_ptr<base::Value>{
-          new base::StringValue{base::GenerateGUID()}};
-    case base::Value::TYPE_DICTIONARY:
-      CHECK_GE(children, 1);
-      return CreateRandomDictionary(children - 1);
-    case base::Value::TYPE_LIST:
-      CHECK_GE(children, 1);
-      return CreateRandomList(children - 1);
-    default:
-      return std::unique_ptr<base::Value>{
-          new base::FundamentalValue{base::RandInt(0, 1) != 0}};
-  }
-}
-
-std::unique_ptr<base::Value> CreateRandomValue(int children) {
-  return CreateRandomValue(children, CreateRandomValueType(children > 0));
-}
-
-}  // namespace
-
-TEST(DBusConversionTest, DictionaryToDBusVariantDictionary) {
-  EXPECT_EQ((VariantDictionary{{"bool", true}}),
-            ToDBus(*CreateDictionaryValue("{'bool': true}")));
-  EXPECT_EQ((VariantDictionary{{"int", 5}}),
-            ToDBus(*CreateDictionaryValue("{'int': 5}")));
-  EXPECT_EQ((VariantDictionary{{"double", 6.7}}),
-            ToDBus(*CreateDictionaryValue("{'double': 6.7}")));
-  EXPECT_EQ((VariantDictionary{{"string", std::string{"abc"}}}),
-            ToDBus(*CreateDictionaryValue("{'string': 'abc'}")));
-  EXPECT_EQ((VariantDictionary{{"object", VariantDictionary{{"bool", true}}}}),
-            ToDBus(*CreateDictionaryValue("{'object': {'bool': true}}")));
-  EXPECT_EQ((VariantDictionary{{"emptyList", std::vector<Any>{}}}),
-            ToDBus(*CreateDictionaryValue("{'emptyList': []}")));
-  EXPECT_EQ((VariantDictionary{{"intList", std::vector<int>{5}}}),
-            ToDBus(*CreateDictionaryValue("{'intList': [5]}")));
-  EXPECT_EQ((VariantDictionary{
-                {"intListList", std::vector<Any>{std::vector<int>{5},
-                                                 std::vector<int>{6, 7}}}}),
-            ToDBus(*CreateDictionaryValue("{'intListList': [[5], [6, 7]]}")));
-  EXPECT_EQ((VariantDictionary{{"objList",
-                                std::vector<VariantDictionary>{
-                                    {{"string", std::string{"abc"}}}}}}),
-            ToDBus(*CreateDictionaryValue("{'objList': [{'string': 'abc'}]}")));
-}
-
-TEST(DBusConversionTest, DictionaryFromDBusVariantDictionary) {
-  EXPECT_JSON_EQ("{'bool': true}", *FromDBus({{"bool", true}}));
-  EXPECT_JSON_EQ("{'int': 5}", *FromDBus({{"int", 5}}));
-  EXPECT_JSON_EQ("{'double': 6.7}", *FromDBus({{"double", 6.7}}));
-  EXPECT_JSON_EQ("{'string': 'abc'}",
-                 *FromDBus({{"string", std::string{"abc"}}}));
-  EXPECT_JSON_EQ("{'object': {'bool': true}}",
-                 *FromDBus({{"object", VariantDictionary{{"bool", true}}}}));
-  EXPECT_JSON_EQ("{'emptyList': []}",
-                 *FromDBus({{"emptyList", std::vector<bool>{}}}));
-  EXPECT_JSON_EQ("{'intList': [5]}",
-                 *FromDBus({{"intList", std::vector<int>{5}}}));
-  EXPECT_JSON_EQ(
-      "{'intListList': [[5], [6, 7]]}",
-      *FromDBus({{"intListList", std::vector<Any>{std::vector<int>{5},
-                                                  std::vector<int>{6, 7}}}}));
-  EXPECT_JSON_EQ(
-      "{'objList': [{'string': 'abc'}]}",
-      *FromDBus({{"objList", std::vector<VariantDictionary>{
-                                 {{"string", std::string{"abc"}}}}}}));
-  EXPECT_JSON_EQ("{'int': 5}", *FromDBus({{"int", Any{Any{5}}}}));
-}
-
-TEST(DBusConversionTest, DictionaryFromDBusVariantDictionary_Errors) {
-  EXPECT_FALSE(FromDBus({{"cString", "abc"}}));
-  EXPECT_FALSE(FromDBus({{"float", 1.0f}}));
-  EXPECT_FALSE(FromDBus({{"listList", std::vector<std::vector<int>>{}}}));
-  EXPECT_FALSE(FromDBus({{"any", Any{}}}));
-  EXPECT_FALSE(FromDBus({{"null", nullptr}}));
-}
-
-TEST(DBusConversionTest, DBusRandomDictionaryConversion) {
-  auto dict = CreateRandomDictionary(10000);
-  auto varian_dict = ToDBus(*dict);
-  auto dict_restored = FromDBus(varian_dict);
-  EXPECT_PRED2(IsEqualValue, *dict, *dict_restored);
-}
-
-}  // namespace buffet
diff --git a/buffet/etc/buffet/base_state.defaults.json b/buffet/etc/buffet/base_state.defaults.json
deleted file mode 100644
index 166f2f1..0000000
--- a/buffet/etc/buffet/base_state.defaults.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "base": {
-    "firmwareVersion": "",
-    "localDiscoveryEnabled": false,
-    "localAnonymousAccessMaxRole": "none",
-    "localPairingEnabled": false
-  }
-}
diff --git a/buffet/etc/buffet/base_state.schema.json b/buffet/etc/buffet/base_state.schema.json
deleted file mode 100644
index 19cc9b2..0000000
--- a/buffet/etc/buffet/base_state.schema.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "base": {
-    "firmwareVersion": "string",
-    "localDiscoveryEnabled": "boolean",
-    "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-    "localPairingEnabled": "boolean",
-    "network": {
-      "properties": {
-        "name": "string"
-      }
-    }
-  }
-}
diff --git a/buffet/etc/buffet/commands/buffet.json b/buffet/etc/buffet/commands/buffet.json
deleted file mode 100644
index 4196a22..0000000
--- a/buffet/etc/buffet/commands/buffet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "base": {
-    "updateBaseConfiguration": { },
-    "updateDeviceInfo": { }
-  }
-}
diff --git a/buffet/etc/buffet/commands/test.json b/buffet/etc/buffet/commands/test.json
deleted file mode 100644
index 911d8f0..0000000
--- a/buffet/etc/buffet/commands/test.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "base": {
-    "_jump": {
-      "parameters": {
-        "_height": "integer"
-      },
-      "progress": {
-        "progress": {
-          "type": "integer",
-          "minimum": 0,
-          "maximum": 100,
-          "isRequired": true
-        }
-      }
-    }
-  }
-}
diff --git a/buffet/etc/buffet/gcd.json b/buffet/etc/buffet/gcd.json
deleted file mode 100644
index 368704e..0000000
--- a/buffet/etc/buffet/gcd.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "base": {
-    "updateBaseConfiguration": {
-      "minimalRole": "manager",
-      "parameters": {
-        "localDiscoveryEnabled": "boolean",
-        "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-        "localPairingEnabled": "boolean"
-      },
-      "results": {}
-    },
-
-    "reboot": {
-      "minimalRole": "user",
-      "parameters": {},
-      "results": {}
-    },
-
-    "identify": {
-      "minimalRole": "user",
-      "parameters": {},
-      "results": {}
-    },
-
-    "updateDeviceInfo": {
-      "minimalRole": "manager",
-      "parameters": {
-        "description": "string",
-        "name": "string",
-        "location": "string"
-      },
-      "results": {}
-    }
-  }
-}
diff --git a/buffet/etc/dbus-1/org.chromium.Buffet.conf b/buffet/etc/dbus-1/org.chromium.Buffet.conf
deleted file mode 100644
index 23a4ffc..0000000
--- a/buffet/etc/dbus-1/org.chromium.Buffet.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE busconfig PUBLIC
- "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-  <policy user="root">
-    <allow send_destination="org.chromium.Buffet" />
-  </policy>
-
-  <policy group="buffet">
-    <allow send_destination="org.chromium.Buffet" />
-  </policy>
-
-  <policy user="buffet">
-    <allow own="org.chromium.Buffet" />
-  </policy>
-
-  <policy user="webservd">
-        <allow send_destination="org.chromium.Buffet"
-               send_interface="org.chromium.WebServer.RequestHandler"/>
-  </policy>
-</busconfig>
diff --git a/buffet/etc/init/buffet.conf b/buffet/etc/init/buffet.conf
deleted file mode 100644
index 6948605..0000000
--- a/buffet/etc/init/buffet.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-description     "Brillo Buffet Service"
-author          "chromium-os-dev@chromium.org"
-
-start on starting system-services
-stop on stopping system-services
-respawn
-
-env BUFFET_LOG_LEVEL=0
-env BUFFET_ENABLE_XMPP=
-env BUFFET_STATE_PATH=
-env BUFFET_CONFIG_PATH=
-env BUFFET_ENABLE_PING=false
-env BUFFET_DEVICE_WHITELIST=
-env BUFFET_DISABLE_PRIVET=false
-env BUFFET_TEST_DEFINITIONS_PATH=
-env BUFFET_DISABLE_SECURITY=false
-env BUFFET_TEST_PRIVET_SSID=
-
-pre-start script
-  mkdir -m 0755 -p /var/lib/buffet
-  chown -R buffet:buffet /var/lib/buffet
-end script
-
-# Minijail actually forks off our desired process.
-expect fork
-
-exec minijail0 -i -g buffet -u buffet /usr/bin/buffet \
-    --v="${BUFFET_LOG_LEVEL}" \
-    --config_path="${BUFFET_CONFIG_PATH}" \
-    --state_path="${BUFFET_STATE_PATH}" \
-    --disable_security="${BUFFET_DISABLE_SECURITY}" \
-    --enable_ping="${BUFFET_ENABLE_PING}" \
-    --device_whitelist="${BUFFET_DEVICE_WHITELIST}" \
-    --disable_privet="${BUFFET_DISABLE_PRIVET}" \
-    --test_definitions_path="${BUFFET_TEST_DEFINITIONS_PATH}" \
-    --enable_xmpp="${BUFFET_ENABLE_XMPP}" \
-    --test_privet_ssid="${BUFFET_TEST_PRIVET_SSID}"
-
-# Wait for daemon to claim its D-Bus name before transitioning to started.
-post-start exec gdbus wait --system --timeout 30 org.chromium.Buffet
diff --git a/buffet/main.cc b/buffet/main.cc
deleted file mode 100644
index 276e030..0000000
--- a/buffet/main.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <string>
-
-#include <base/files/file_path.h>
-#include <chromeos/dbus/async_event_sequencer.h>
-#include <chromeos/dbus/exported_object_manager.h>
-#include <chromeos/daemons/dbus_daemon.h>
-#include <chromeos/flag_helper.h>
-#include <chromeos/strings/string_utils.h>
-#include <chromeos/syslog_logging.h>
-
-#include "buffet/dbus_constants.h"
-#include "buffet/manager.h"
-
-using chromeos::dbus_utils::AsyncEventSequencer;
-using chromeos::DBusServiceDaemon;
-using buffet::kServiceName;
-using buffet::kRootServicePath;
-
-namespace buffet {
-
-class Daemon final : public DBusServiceDaemon {
- public:
-  Daemon(const weave::Device::Options& options,
-         const std::set<std::string>& device_whitelist)
-      : DBusServiceDaemon(kServiceName, kRootServicePath),
-        options_{options},
-        device_whitelist_{device_whitelist} {}
-
- protected:
-  void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override {
-    manager_.reset(new buffet::Manager(object_manager_->AsWeakPtr()));
-    manager_->Start(options_, device_whitelist_, sequencer);
-  }
-
-  void OnShutdown(int* return_code) override { manager_->Stop(); }
-
- private:
-  weave::Device::Options options_;
-  std::set<std::string> device_whitelist_;
-
-  std::unique_ptr<buffet::Manager> manager_;
-  DISALLOW_COPY_AND_ASSIGN(Daemon);
-};
-
-}  // namespace buffet
-
-namespace {
-
-const char kDefaultConfigFilePath[] = "/etc/buffet/buffet.conf";
-const char kDefaultStateFilePath[] = "/var/lib/buffet/device_reg_info";
-
-}  // namespace
-
-int main(int argc, char* argv[]) {
-  DEFINE_bool(log_to_stderr, false, "log trace messages to stderr as well");
-  DEFINE_string(config_path, kDefaultConfigFilePath,
-                "Path to file containing config information.");
-  DEFINE_string(state_path, kDefaultStateFilePath,
-                "Path to file containing state information.");
-  DEFINE_bool(enable_xmpp, true,
-              "Connect to GCD via a persistent XMPP connection.");
-  DEFINE_bool(disable_privet, false, "disable Privet protocol");
-  DEFINE_bool(enable_ping, false, "enable test HTTP handler at /privet/ping");
-  DEFINE_string(device_whitelist, "",
-                "Comma separated list of network interfaces to monitor for "
-                "connectivity (an empty list enables all interfaces).");
-
-  DEFINE_bool(disable_security, false,
-              "disable Privet security for tests. For test only.");
-  DEFINE_string(test_privet_ssid, "",
-                "Fixed SSID for WiFi bootstrapping. For test only.");
-  DEFINE_string(test_definitions_path, "",
-                "Path to directory containing additional command "
-                "and state definitions. For test only.");
-
-  chromeos::FlagHelper::Init(argc, argv, "Privet protocol handler daemon");
-  if (FLAGS_config_path.empty())
-    FLAGS_config_path = kDefaultConfigFilePath;
-  if (FLAGS_state_path.empty())
-    FLAGS_state_path = kDefaultStateFilePath;
-  int flags = chromeos::kLogToSyslog | chromeos::kLogHeader;
-  if (FLAGS_log_to_stderr)
-    flags |= chromeos::kLogToStderr;
-  chromeos::InitLog(flags);
-
-  auto device_whitelist =
-      chromeos::string_utils::Split(FLAGS_device_whitelist, ",", true, true);
-
-  weave::Device::Options options;
-  options.config_path = base::FilePath{FLAGS_config_path};
-  options.state_path = base::FilePath{FLAGS_state_path};
-  options.definitions_path = base::FilePath{"/etc/buffet"};
-  options.test_definitions_path = base::FilePath{FLAGS_test_definitions_path};
-  options.xmpp_enabled = FLAGS_enable_xmpp;
-  options.disable_privet = FLAGS_disable_privet;
-  options.disable_security = FLAGS_disable_security;
-  options.enable_ping = FLAGS_enable_ping;
-  options.test_privet_ssid = FLAGS_test_privet_ssid;
-
-  buffet::Daemon daemon{options, std::set<std::string>{device_whitelist.begin(),
-                                                       device_whitelist.end()}};
-  return daemon.Run();
-}
diff --git a/buffet/manager.cc b/buffet/manager.cc
deleted file mode 100644
index cc83686..0000000
--- a/buffet/manager.cc
+++ /dev/null
@@ -1,324 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/manager.h"
-
-#include <map>
-#include <set>
-#include <string>
-
-#include <base/bind.h>
-#include <base/bind_helpers.h>
-#include <base/json/json_reader.h>
-#include <base/json/json_writer.h>
-#include <base/message_loop/message_loop.h>
-#include <base/time/time.h>
-#include <chromeos/dbus/async_event_sequencer.h>
-#include <chromeos/dbus/exported_object_manager.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/http/http_transport.h>
-#include <chromeos/key_value_store.h>
-#include <dbus/bus.h>
-#include <dbus/object_path.h>
-#include <dbus/values_util.h>
-#include <weave/enum_to_string.h>
-
-#include "buffet/dbus_command_dispatcher.h"
-#include "buffet/dbus_conversion.h"
-#include "buffet/peerd_client.h"
-#include "buffet/shill_client.h"
-#include "buffet/webserv_client.h"
-
-using chromeos::dbus_utils::AsyncEventSequencer;
-using chromeos::dbus_utils::ExportedObjectManager;
-
-namespace buffet {
-
-namespace {
-
-const char kPairingSessionIdKey[] = "sessionId";
-const char kPairingModeKey[] = "mode";
-const char kPairingCodeKey[] = "code";
-
-const char kErrorDomain[] = "buffet";
-const char kNotImplemented[] = "notImplemented";
-
-}  // anonymous namespace
-
-Manager::Manager(const base::WeakPtr<ExportedObjectManager>& object_manager)
-    : dbus_object_(object_manager.get(),
-                   object_manager->GetBus(),
-                   org::chromium::Buffet::ManagerAdaptor::GetObjectPath()) {
-}
-
-Manager::~Manager() {
-}
-
-void Manager::Start(const weave::Device::Options& options,
-                    const std::set<std::string>& device_whitelist,
-                    AsyncEventSequencer* sequencer) {
-  shill_client_.reset(new ShillClient{dbus_object_.GetBus(), device_whitelist});
-  if (!options.disable_privet) {
-    peerd_client_.reset(new PeerdClient{dbus_object_.GetBus()});
-    web_serv_client_.reset(new WebServClient{dbus_object_.GetBus(), sequencer});
-  }
-
-  device_ = weave::Device::Create();
-  device_->Start(options, shill_client_.get(), peerd_client_.get(),
-                 web_serv_client_.get());
-
-  command_dispatcher_.reset(new DBusCommandDispacher{
-      dbus_object_.GetObjectManager(), device_->GetCommands()});
-
-  device_->GetState()->AddOnChangedCallback(
-      base::Bind(&Manager::OnStateChanged, weak_ptr_factory_.GetWeakPtr()));
-
-  device_->GetConfig()->AddOnChangedCallback(
-      base::Bind(&Manager::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
-
-  device_->GetCloud()->AddOnRegistrationChangedCallback(base::Bind(
-      &Manager::OnRegistrationChanged, weak_ptr_factory_.GetWeakPtr()));
-
-  if (device_->GetPrivet()) {
-    device_->GetPrivet()->AddOnWifiSetupChangedCallback(base::Bind(
-        &Manager::UpdateWiFiBootstrapState, weak_ptr_factory_.GetWeakPtr()));
-
-    device_->GetPrivet()->AddOnPairingChangedCallbacks(
-        base::Bind(&Manager::OnPairingStart, weak_ptr_factory_.GetWeakPtr()),
-        base::Bind(&Manager::OnPairingEnd, weak_ptr_factory_.GetWeakPtr()));
-  } else {
-    UpdateWiFiBootstrapState(weave::WifiSetupState::kDisabled);
-  }
-
-  dbus_adaptor_.RegisterWithDBusObject(&dbus_object_);
-  dbus_object_.RegisterAsync(
-      sequencer->GetHandler("Manager.RegisterAsync() failed.", true));
-}
-
-void Manager::Stop() {
-  device_.reset();
-}
-
-// TODO(vitalybuka): Remove, it's just duplicate of property.
-void Manager::CheckDeviceRegistered(
-    DBusMethodResponsePtr<std::string> response) {
-  LOG(INFO) << "Received call to Manager.CheckDeviceRegistered()";
-  response->Return(dbus_adaptor_.GetDeviceId());
-}
-
-// TODO(vitalybuka): Remove or rename to leave for testing.
-void Manager::GetDeviceInfo(DBusMethodResponsePtr<std::string> response) {
-  LOG(INFO) << "Received call to Manager.GetDeviceInfo()";
-  std::shared_ptr<DBusMethodResponse<std::string>> shared_response =
-      std::move(response);
-
-  device_->GetCloud()->GetDeviceInfo(
-      base::Bind(&Manager::OnGetDeviceInfoSuccess,
-                 weak_ptr_factory_.GetWeakPtr(), shared_response),
-      base::Bind(&Manager::OnGetDeviceInfoError, weak_ptr_factory_.GetWeakPtr(),
-                 shared_response));
-}
-
-void Manager::OnGetDeviceInfoSuccess(
-    const std::shared_ptr<DBusMethodResponse<std::string>>& response,
-    const base::DictionaryValue& device_info) {
-  std::string device_info_str;
-  base::JSONWriter::WriteWithOptions(
-      device_info, base::JSONWriter::OPTIONS_PRETTY_PRINT, &device_info_str);
-  response->Return(device_info_str);
-}
-
-void Manager::OnGetDeviceInfoError(
-    const std::shared_ptr<DBusMethodResponse<std::string>>& response,
-    const chromeos::Error* error) {
-  response->ReplyWithError(error);
-}
-
-void Manager::RegisterDevice(DBusMethodResponsePtr<std::string> response,
-                             const std::string& ticket_id) {
-  LOG(INFO) << "Received call to Manager.RegisterDevice()";
-
-  chromeos::ErrorPtr error;
-  std::string device_id =
-      device_->GetCloud()->RegisterDevice(ticket_id, &error);
-  if (!device_id.empty()) {
-    response->Return(device_id);
-    return;
-  }
-  CHECK(error);
-  response->ReplyWithError(error.get());
-}
-
-void Manager::UpdateState(DBusMethodResponsePtr<> response,
-                          const chromeos::VariantDictionary& property_set) {
-  chromeos::ErrorPtr error;
-  auto properties = DictionaryFromDBusVariantDictionary(property_set, &error);
-  if (!properties)
-    response->ReplyWithError(error.get());
-
-  if (!device_->GetState()->SetProperties(*properties, &error))
-    response->ReplyWithError(error.get());
-  else
-    response->Return();
-}
-
-bool Manager::GetState(chromeos::ErrorPtr* error, std::string* state) {
-  auto json = device_->GetState()->GetStateValuesAsJson();
-  CHECK(json);
-  base::JSONWriter::WriteWithOptions(
-      *json, base::JSONWriter::OPTIONS_PRETTY_PRINT, state);
-  return true;
-}
-
-void Manager::AddCommand(DBusMethodResponsePtr<std::string> response,
-                         const std::string& json_command,
-                         const std::string& in_user_role) {
-  std::string error_message;
-  std::unique_ptr<base::Value> value(
-      base::JSONReader::ReadAndReturnError(json_command, base::JSON_PARSE_RFC,
-                                           nullptr, &error_message)
-          .release());
-  const base::DictionaryValue* command{nullptr};
-  if (!value || !value->GetAsDictionary(&command)) {
-    return response->ReplyWithError(FROM_HERE, chromeos::errors::json::kDomain,
-                                    chromeos::errors::json::kParseError,
-                                    error_message);
-  }
-
-  chromeos::ErrorPtr error;
-  weave::UserRole role;
-  if (!StringToEnum(in_user_role, &role)) {
-    chromeos::Error::AddToPrintf(&error, FROM_HERE, kErrorDomain,
-                                 "invalid_user_role", "Invalid role: '%s'",
-                                 in_user_role.c_str());
-    return response->ReplyWithError(error.get());
-  }
-
-  std::string id;
-  if (!device_->GetCommands()->AddCommand(*command, role, &id, &error))
-    return response->ReplyWithError(error.get());
-
-  response->Return(id);
-}
-
-void Manager::GetCommand(DBusMethodResponsePtr<std::string> response,
-                         const std::string& id) {
-  const weave::Command* command = device_->GetCommands()->FindCommand(id);
-  if (!command) {
-    response->ReplyWithError(FROM_HERE, kErrorDomain, "unknown_command",
-                             "Can't find command with id: " + id);
-    return;
-  }
-  std::string command_str;
-  base::JSONWriter::WriteWithOptions(
-      *command->ToJson(), base::JSONWriter::OPTIONS_PRETTY_PRINT, &command_str);
-  response->Return(command_str);
-}
-
-std::string Manager::TestMethod(const std::string& message) {
-  LOG(INFO) << "Received call to test method: " << message;
-  return message;
-}
-
-bool Manager::EnableWiFiBootstrapping(
-    chromeos::ErrorPtr* error,
-    const dbus::ObjectPath& in_listener_path,
-    const chromeos::VariantDictionary& in_options) {
-  chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
-                         "Manual WiFi bootstrapping is not implemented");
-  return false;
-}
-
-bool Manager::DisableWiFiBootstrapping(chromeos::ErrorPtr* error) {
-  chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
-                         "Manual WiFi bootstrapping is not implemented");
-  return false;
-}
-
-bool Manager::EnableGCDBootstrapping(
-    chromeos::ErrorPtr* error,
-    const dbus::ObjectPath& in_listener_path,
-    const chromeos::VariantDictionary& in_options) {
-  chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
-                         "Manual GCD bootstrapping is not implemented");
-  return false;
-}
-
-bool Manager::DisableGCDBootstrapping(chromeos::ErrorPtr* error) {
-  chromeos::Error::AddTo(error, FROM_HERE, kErrorDomain, kNotImplemented,
-                         "Manual GCD bootstrapping is not implemented");
-  return false;
-}
-
-bool Manager::UpdateDeviceInfo(chromeos::ErrorPtr* error,
-                               const std::string& name,
-                               const std::string& description,
-                               const std::string& location) {
-  return device_->GetCloud()->UpdateDeviceInfo(name, description, location,
-                                               error);
-}
-
-bool Manager::UpdateServiceConfig(chromeos::ErrorPtr* error,
-                                  const std::string& client_id,
-                                  const std::string& client_secret,
-                                  const std::string& api_key,
-                                  const std::string& oauth_url,
-                                  const std::string& service_url) {
-  return device_->GetCloud()->UpdateServiceConfig(
-      client_id, client_secret, api_key, oauth_url, service_url, error);
-}
-
-void Manager::OnStateChanged() {
-  auto state = device_->GetState()->GetStateValuesAsJson();
-  CHECK(state);
-  std::string json;
-  base::JSONWriter::WriteWithOptions(
-      *state, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
-  dbus_adaptor_.SetState(json);
-}
-
-void Manager::OnRegistrationChanged(weave::RegistrationStatus status) {
-  dbus_adaptor_.SetStatus(weave::EnumToString(status));
-}
-
-void Manager::OnConfigChanged(const weave::Settings& settings) {
-  dbus_adaptor_.SetDeviceId(settings.device_id);
-  dbus_adaptor_.SetOemName(settings.oem_name);
-  dbus_adaptor_.SetModelName(settings.model_name);
-  dbus_adaptor_.SetModelId(settings.model_id);
-  dbus_adaptor_.SetName(settings.name);
-  dbus_adaptor_.SetDescription(settings.description);
-  dbus_adaptor_.SetLocation(settings.location);
-  dbus_adaptor_.SetAnonymousAccessRole(settings.local_anonymous_access_role);
-}
-
-void Manager::UpdateWiFiBootstrapState(weave::WifiSetupState state) {
-  dbus_adaptor_.SetWiFiBootstrapState(weave::EnumToString(state));
-}
-
-void Manager::OnPairingStart(const std::string& session_id,
-                             weave::PairingType pairing_type,
-                             const std::vector<uint8_t>& code) {
-  // For now, just overwrite the exposed PairInfo with
-  // the most recent pairing attempt.
-  dbus_adaptor_.SetPairingInfo(chromeos::VariantDictionary{
-      {kPairingSessionIdKey, session_id},
-      {kPairingModeKey, weave::EnumToString(pairing_type)},
-      {kPairingCodeKey, code},
-  });
-}
-
-void Manager::OnPairingEnd(const std::string& session_id) {
-  auto exposed_pairing_attempt = dbus_adaptor_.GetPairingInfo();
-  auto it = exposed_pairing_attempt.find(kPairingSessionIdKey);
-  if (it == exposed_pairing_attempt.end()) {
-    return;
-  }
-  std::string exposed_session{it->second.TryGet<std::string>()};
-  if (exposed_session == session_id) {
-    dbus_adaptor_.SetPairingInfo(chromeos::VariantDictionary{});
-  }
-}
-
-}  // namespace buffet
diff --git a/buffet/manager.h b/buffet/manager.h
deleted file mode 100644
index 821acff..0000000
--- a/buffet/manager.h
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_MANAGER_H_
-#define BUFFET_MANAGER_H_
-
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <base/files/file_path.h>
-#include <base/macros.h>
-#include <base/memory/weak_ptr.h>
-#include <base/values.h>
-#include <chromeos/dbus/data_serialization.h>
-#include <chromeos/dbus/dbus_object.h>
-#include <chromeos/dbus/exported_property_set.h>
-#include <chromeos/errors/error.h>
-#include <weave/device.h>
-
-#include "buffet/org.chromium.Buffet.Manager.h"
-
-namespace chromeos {
-namespace dbus_utils {
-class ExportedObjectManager;
-}  // namespace dbus_utils
-}  // namespace chromeos
-
-namespace buffet {
-
-class DBusCommandDispacher;
-class PeerdClient;
-class ShillClient;
-class WebServClient;
-
-template<typename... Types>
-using DBusMethodResponsePtr =
-    std::unique_ptr<chromeos::dbus_utils::DBusMethodResponse<Types...>>;
-
-template<typename... Types>
-using DBusMethodResponse =
-    chromeos::dbus_utils::DBusMethodResponse<Types...>;
-
-// The Manager is responsible for global state of Buffet.  It exposes
-// interfaces which affect the entire device such as device registration and
-// device state.
-class Manager final : public org::chromium::Buffet::ManagerInterface {
- public:
-  explicit Manager(
-      const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
-          object_manager);
-  ~Manager();
-
-  void Start(const weave::Device::Options& options,
-             const std::set<std::string>& device_whitelist,
-             chromeos::dbus_utils::AsyncEventSequencer* sequencer);
-
-  void Stop();
-
- private:
-  // DBus methods:
-  void CheckDeviceRegistered(
-      DBusMethodResponsePtr<std::string> response) override;
-  void GetDeviceInfo(DBusMethodResponsePtr<std::string> response) override;
-  void RegisterDevice(DBusMethodResponsePtr<std::string> response,
-                      const std::string& ticket_id) override;
-  bool UpdateDeviceInfo(chromeos::ErrorPtr* error,
-                        const std::string& name,
-                        const std::string& description,
-                        const std::string& location) override;
-  bool UpdateServiceConfig(chromeos::ErrorPtr* error,
-                           const std::string& client_id,
-                           const std::string& client_secret,
-                           const std::string& api_key,
-                           const std::string& oauth_url,
-                           const std::string& service_url) override;
-  void UpdateState(DBusMethodResponsePtr<> response,
-                   const chromeos::VariantDictionary& property_set) override;
-  bool GetState(chromeos::ErrorPtr* error, std::string* state) override;
-  void AddCommand(DBusMethodResponsePtr<std::string> response,
-                  const std::string& json_command,
-                  const std::string& in_user_role) override;
-  void GetCommand(DBusMethodResponsePtr<std::string> response,
-                  const std::string& id) override;
-  std::string TestMethod(const std::string& message) override;
-  bool EnableWiFiBootstrapping(
-      chromeos::ErrorPtr* error,
-      const dbus::ObjectPath& in_listener_path,
-      const chromeos::VariantDictionary& in_options) override;
-  bool DisableWiFiBootstrapping(chromeos::ErrorPtr* error) override;
-  bool EnableGCDBootstrapping(
-      chromeos::ErrorPtr* error,
-      const dbus::ObjectPath& in_listener_path,
-      const chromeos::VariantDictionary& in_options) override;
-  bool DisableGCDBootstrapping(chromeos::ErrorPtr* error) override;
-
-  void OnGetDeviceInfoSuccess(
-      const std::shared_ptr<DBusMethodResponse<std::string>>& response,
-      const base::DictionaryValue& device_info);
-  void OnGetDeviceInfoError(
-      const std::shared_ptr<DBusMethodResponse<std::string>>& response,
-      const chromeos::Error* error);
-
-  void StartPrivet(const weave::Device::Options& options,
-                   chromeos::dbus_utils::AsyncEventSequencer* sequencer);
-
-  void OnStateChanged();
-  void OnRegistrationChanged(weave::RegistrationStatus status);
-  void OnConfigChanged(const weave::Settings& settings);
-  void UpdateWiFiBootstrapState(weave::WifiSetupState state);
-  void OnPairingStart(const std::string& session_id,
-                      weave::PairingType pairing_type,
-                      const std::vector<uint8_t>& code);
-  void OnPairingEnd(const std::string& session_id);
-
-  org::chromium::Buffet::ManagerAdaptor dbus_adaptor_{this};
-  chromeos::dbus_utils::DBusObject dbus_object_;
-
-  std::unique_ptr<ShillClient> shill_client_;
-  std::unique_ptr<PeerdClient> peerd_client_;
-  std::unique_ptr<WebServClient> web_serv_client_;
-  std::unique_ptr<weave::Device> device_;
-  std::unique_ptr<DBusCommandDispacher> command_dispatcher_;
-
-  base::WeakPtrFactory<Manager> weak_ptr_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(Manager);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_MANAGER_H_
diff --git a/buffet/peerd_client.cc b/buffet/peerd_client.cc
deleted file mode 100644
index cfbf64a..0000000
--- a/buffet/peerd_client.cc
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/peerd_client.h"
-
-#include <map>
-
-#include <base/message_loop/message_loop.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/strings/string_utils.h>
-
-using org::chromium::peerd::PeerProxy;
-
-namespace buffet {
-
-namespace {
-
-// Commit changes only if no update request happened during the timeout.
-// Usually updates happen in batches, so we don't want to flood network with
-// updates relevant for a short amount of time.
-const int kCommitTimeoutSeconds = 1;
-
-const char kSelfPath[] = "/org/chromium/peerd/Self";
-
-void OnError(const std::string& operation, chromeos::Error* error) {
-  LOG(ERROR) << operation << " failed:" << error->GetMessage();
-}
-
-}  // namespace
-
-PeerdClient::PeerdClient(const scoped_refptr<dbus::Bus>& bus)
-    : peerd_object_manager_proxy_{bus} {
-  peerd_object_manager_proxy_.SetManagerAddedCallback(
-      base::Bind(&PeerdClient::OnPeerdOnline, weak_ptr_factory_.GetWeakPtr()));
-  peerd_object_manager_proxy_.SetManagerRemovedCallback(
-      base::Bind(&PeerdClient::OnPeerdOffline, weak_ptr_factory_.GetWeakPtr()));
-  peerd_object_manager_proxy_.SetPeerAddedCallback(
-      base::Bind(&PeerdClient::OnNewPeer, weak_ptr_factory_.GetWeakPtr()));
-}
-
-PeerdClient::~PeerdClient() {
-  RemoveService();
-}
-
-std::string PeerdClient::GetId() const {
-  return device_id_;
-}
-
-void PeerdClient::PublishService(
-    const std::string& service_name,
-    uint16_t port,
-    const std::map<std::string, std::string>& txt) {
-  // Only one service supported.
-  CHECK(service_name_.empty() || service_name_ == service_name);
-  service_name_ = service_name;
-  port_ = port;
-  txt_ = txt;
-
-  Update();
-}
-
-void PeerdClient::StopPublishing(const std::string& service_name) {
-  // Only one service supported.
-  CHECK(service_name_.empty() || service_name_ == service_name);
-  service_name_ = service_name;
-  port_ = 0;
-
-  Update();
-}
-
-void PeerdClient::Update() {
-  // Abort pending updates, and wait for more changes.
-  restart_weak_ptr_factory_.InvalidateWeakPtrs();
-  base::MessageLoop::current()->PostDelayedTask(
-      FROM_HERE, base::Bind(&PeerdClient::UpdateImpl,
-                            restart_weak_ptr_factory_.GetWeakPtr()),
-      base::TimeDelta::FromSeconds(kCommitTimeoutSeconds));
-}
-
-void PeerdClient::OnNewPeer(PeerProxy* peer) {
-  if (!peer || peer->GetObjectPath().value() != kSelfPath)
-    return;
-  peer->SetPropertyChangedCallback(base::Bind(
-      &PeerdClient::OnPeerPropertyChanged, weak_ptr_factory_.GetWeakPtr()));
-  OnPeerPropertyChanged(peer, PeerProxy::UUIDName());
-}
-
-void PeerdClient::OnPeerPropertyChanged(PeerProxy* peer,
-                                        const std::string& property_name) {
-  if (property_name != PeerProxy::UUIDName() ||
-      peer->GetObjectPath().value() != kSelfPath)
-    return;
-  const std::string new_id{peer->uuid()};
-  if (new_id != device_id_) {
-    device_id_ = new_id;
-    Update();
-  }
-}
-
-void PeerdClient::OnPeerdOnline(
-    org::chromium::peerd::ManagerProxy* manager_proxy) {
-  peerd_manager_proxy_ = manager_proxy;
-  VLOG(1) << "Peerd manager is online at '"
-          << manager_proxy->GetObjectPath().value() << "'.";
-  Update();
-}
-
-void PeerdClient::OnPeerdOffline(const dbus::ObjectPath& object_path) {
-  peerd_manager_proxy_ = nullptr;
-  VLOG(1) << "Peerd manager is now offline.";
-}
-
-void PeerdClient::ExposeService() {
-  // Do nothing if peerd hasn't started yet.
-  if (peerd_manager_proxy_ == nullptr)
-    return;
-  VLOG(1) << "Starting peerd advertising.";
-  CHECK_NE(port_, 0);
-  CHECK(!service_name_.empty());
-  CHECK(!txt_.empty());
-  std::map<std::string, chromeos::Any> mdns_options{
-      {"port", chromeos::Any{port_}},
-  };
-
-  peerd_manager_proxy_->ExposeServiceAsync(
-      service_name_, txt_, {{"mdns", mdns_options}}, base::Closure(),
-      base::Bind(&OnError, "ExposeService"));
-}
-
-void PeerdClient::RemoveService() {
-  if (peerd_manager_proxy_ == nullptr)
-    return;
-
-  VLOG(1) << "Stopping peerd advertising.";
-  if (!service_name_.empty()) {
-    peerd_manager_proxy_->RemoveExposedServiceAsync(
-        service_name_, base::Closure(), base::Bind(&OnError, "RemoveService"));
-  }
-}
-
-void PeerdClient::UpdateImpl() {
-  if (port_ == 0)
-    return RemoveService();
-  ExposeService();
-}
-
-}  // namespace buffet
diff --git a/buffet/peerd_client.h b/buffet/peerd_client.h
deleted file mode 100644
index ac75e19..0000000
--- a/buffet/peerd_client.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_PEERD_CLIENT_H_
-#define BUFFET_PEERD_CLIENT_H_
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include <base/callback.h>
-#include <base/memory/ref_counted.h>
-#include <weave/mdns.h>
-
-#include "peerd/dbus-proxies.h"
-
-namespace dbus {
-class Bus;
-}  // namespace dbus
-
-namespace buffet {
-
-// Publishes privet service on mDns using peerd.
-class PeerdClient : public weave::Mdns {
- public:
-  explicit PeerdClient(const scoped_refptr<dbus::Bus>& bus);
-  ~PeerdClient() override;
-
-  // Mdns implementation.
-  void PublishService(const std::string& service_name,
-                      uint16_t port,
-                      const std::map<std::string, std::string>& txt) override;
-  void StopPublishing(const std::string& service_name) override;
-  std::string GetId() const override;
-
- private:
-  void OnPeerdOnline(org::chromium::peerd::ManagerProxy* manager_proxy);
-  void OnPeerdOffline(const dbus::ObjectPath& object_path);
-  void OnNewPeer(org::chromium::peerd::PeerProxy* peer_proxy);
-  void OnPeerPropertyChanged(org::chromium::peerd::PeerProxy* peer_proxy,
-                             const std::string& property_name);
-
-  // Updates published information.  Removes service if HTTP is not alive.
-  void Update();
-
-  void ExposeService();
-  void RemoveService();
-
-  void UpdateImpl();
-
-  org::chromium::peerd::ObjectManagerProxy peerd_object_manager_proxy_;
-  // |peerd_manager_proxy_| is owned by |peerd_object_manager_proxy_|.
-  org::chromium::peerd::ManagerProxy* peerd_manager_proxy_{nullptr};
-
-  // Cached value of the device ID that we got from peerd.
-  std::string device_id_;
-
-  std::string service_name_;
-  uint16_t port_{0};
-  std::map<std::string, std::string> txt_;
-
-  base::WeakPtrFactory<PeerdClient> restart_weak_ptr_factory_{this};
-  base::WeakPtrFactory<PeerdClient> weak_ptr_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(PeerdClient);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_PEERD_CLIENT_H_
diff --git a/buffet/shill_client.cc b/buffet/shill_client.cc
deleted file mode 100644
index c549fd4..0000000
--- a/buffet/shill_client.cc
+++ /dev/null
@@ -1,499 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/shill_client.h"
-
-#include <set>
-
-#include <base/message_loop/message_loop.h>
-#include <base/stl_util.h>
-#include <chromeos/any.h>
-#include <chromeos/dbus/service_constants.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/errors/error_codes.h>
-#include <weave/enum_to_string.h>
-
-#include "buffet/ap_manager_client.h"
-
-using chromeos::Any;
-using chromeos::VariantDictionary;
-using dbus::ObjectPath;
-using org::chromium::flimflam::DeviceProxy;
-using org::chromium::flimflam::ServiceProxy;
-using std::map;
-using std::set;
-using std::string;
-using std::vector;
-
-namespace buffet {
-
-namespace {
-
-void IgnoreDetachEvent() {}
-
-bool GetStateForService(ServiceProxy* service, string* state) {
-  CHECK(service) << "|service| was nullptr in GetStateForService()";
-  VariantDictionary properties;
-  if (!service->GetProperties(&properties, nullptr)) {
-    LOG(WARNING) << "Failed to read properties from service.";
-    return false;
-  }
-  auto property_it = properties.find(shill::kStateProperty);
-  if (property_it == properties.end()) {
-    LOG(WARNING) << "No state found in service properties.";
-    return false;
-  }
-  string new_state = property_it->second.TryGet<string>();
-  if (new_state.empty()) {
-    LOG(WARNING) << "Invalid state value.";
-    return false;
-  }
-  *state = new_state;
-  return true;
-}
-
-weave::NetworkState ShillServiceStateToNetworkState(const string& state) {
-  // TODO(wiley) What does "unconfigured" mean in a world with multiple sets
-  //             of WiFi credentials?
-  // TODO(wiley) Detect disabled devices, update state appropriately.
-  if ((state.compare(shill::kStateReady) == 0) ||
-      (state.compare(shill::kStatePortal) == 0) ||
-      (state.compare(shill::kStateOnline) == 0)) {
-    return weave::NetworkState::kConnected;
-  }
-  if ((state.compare(shill::kStateAssociation) == 0) ||
-      (state.compare(shill::kStateConfiguration) == 0)) {
-    return weave::NetworkState::kConnecting;
-  }
-  if ((state.compare(shill::kStateFailure) == 0) ||
-      (state.compare(shill::kStateActivationFailure) == 0)) {
-    // TODO(wiley) Get error information off the service object.
-    return weave::NetworkState::kFailure;
-  }
-  if ((state.compare(shill::kStateIdle) == 0) ||
-      (state.compare(shill::kStateOffline) == 0) ||
-      (state.compare(shill::kStateDisconnect) == 0)) {
-    return weave::NetworkState::kOffline;
-  }
-  LOG(WARNING) << "Unknown state found: '" << state << "'";
-  return weave::NetworkState::kOffline;
-}
-
-}  // namespace
-
-ShillClient::ShillClient(const scoped_refptr<dbus::Bus>& bus,
-                         const set<string>& device_whitelist)
-    : bus_{bus},
-      manager_proxy_{bus_, ObjectPath{"/"}},
-      device_whitelist_{device_whitelist},
-      ap_manager_client_{new ApManagerClient(bus)} {
-  manager_proxy_.RegisterPropertyChangedSignalHandler(
-      base::Bind(&ShillClient::OnManagerPropertyChange,
-                 weak_factory_.GetWeakPtr()),
-      base::Bind(&ShillClient::OnManagerPropertyChangeRegistration,
-                 weak_factory_.GetWeakPtr()));
-  auto owner_changed_cb = base::Bind(&ShillClient::OnShillServiceOwnerChange,
-                                     weak_factory_.GetWeakPtr());
-  bus_->GetObjectProxy(shill::kFlimflamServiceName, ObjectPath{"/"})
-      ->SetNameOwnerChangedCallback(owner_changed_cb);
-}
-
-ShillClient::~ShillClient() {}
-
-void ShillClient::Init() {
-  VLOG(2) << "ShillClient::Init();";
-  CleanupConnectingService(false);
-  devices_.clear();
-  connectivity_state_ = weave::NetworkState::kOffline;
-  VariantDictionary properties;
-  if (!manager_proxy_.GetProperties(&properties, nullptr)) {
-    LOG(ERROR) << "Unable to get properties from Manager, waiting for "
-                  "Manager to come back online.";
-    return;
-  }
-  auto it = properties.find(shill::kDevicesProperty);
-  CHECK(it != properties.end()) << "shill should always publish a device list.";
-  OnManagerPropertyChange(shill::kDevicesProperty, it->second);
-}
-
-bool ShillClient::ConnectToService(const string& ssid,
-                                   const string& passphrase,
-                                   const base::Closure& on_success,
-                                   chromeos::ErrorPtr* error) {
-  CleanupConnectingService(false);
-  VariantDictionary service_properties;
-  service_properties[shill::kTypeProperty] = Any{string{shill::kTypeWifi}};
-  service_properties[shill::kSSIDProperty] = Any{ssid};
-  service_properties[shill::kPassphraseProperty] = Any{passphrase};
-  service_properties[shill::kSecurityProperty] = Any{
-      string{passphrase.empty() ? shill::kSecurityNone : shill::kSecurityPsk}};
-  service_properties[shill::kSaveCredentialsProperty] = Any{true};
-  service_properties[shill::kAutoConnectProperty] = Any{true};
-  ObjectPath service_path;
-  if (!manager_proxy_.ConfigureService(service_properties, &service_path,
-                                       error)) {
-    return false;
-  }
-  if (!manager_proxy_.RequestScan(shill::kTypeWifi, error)) {
-    return false;
-  }
-  connecting_service_.reset(new ServiceProxy{bus_, service_path});
-  on_connect_success_.Reset(on_success);
-  connecting_service_->RegisterPropertyChangedSignalHandler(
-      base::Bind(&ShillClient::OnServicePropertyChange,
-                 weak_factory_.GetWeakPtr(), service_path),
-      base::Bind(&ShillClient::OnServicePropertyChangeRegistration,
-                 weak_factory_.GetWeakPtr(), service_path));
-  return true;
-}
-
-weave::NetworkState ShillClient::GetConnectionState() const {
-  return connectivity_state_;
-}
-
-void ShillClient::EnableAccessPoint(const std::string& ssid) {
-  ap_manager_client_->Start(ssid);
-}
-
-void ShillClient::DisableAccessPoint() {
-  ap_manager_client_->Stop();
-}
-
-void ShillClient::AddOnConnectionChangedCallback(
-    const OnConnectionChangedCallback& listener) {
-  connectivity_listeners_.push_back(listener);
-}
-
-bool ShillClient::IsMonitoredDevice(DeviceProxy* device) {
-  if (device_whitelist_.empty()) {
-    return true;
-  }
-  VariantDictionary device_properties;
-  if (!device->GetProperties(&device_properties, nullptr)) {
-    LOG(ERROR) << "Devices without properties aren't whitelisted.";
-    return false;
-  }
-  auto it = device_properties.find(shill::kInterfaceProperty);
-  if (it == device_properties.end()) {
-    LOG(ERROR) << "Failed to find interface property in device properties.";
-    return false;
-  }
-  return ContainsKey(device_whitelist_, it->second.TryGet<string>());
-}
-
-void ShillClient::OnShillServiceOwnerChange(const string& old_owner,
-                                            const string& new_owner) {
-  VLOG(1) << "Shill service owner name changed to '" << new_owner << "'";
-  if (new_owner.empty()) {
-    CleanupConnectingService(false);
-    devices_.clear();
-    connectivity_state_ = weave::NetworkState::kOffline;
-  } else {
-    Init();  // New service owner means shill reset!
-  }
-}
-
-void ShillClient::OnManagerPropertyChangeRegistration(const string& interface,
-                                                      const string& signal_name,
-                                                      bool success) {
-  VLOG(3) << "Registered ManagerPropertyChange handler.";
-  CHECK(success) << "privetd requires Manager signals.";
-  VariantDictionary properties;
-  if (!manager_proxy_.GetProperties(&properties, nullptr)) {
-    LOG(ERROR) << "Unable to get properties from Manager, waiting for "
-                  "Manager to come back online.";
-    return;
-  }
-  auto it = properties.find(shill::kDevicesProperty);
-  CHECK(it != properties.end()) << "Shill should always publish a device list.";
-  OnManagerPropertyChange(shill::kDevicesProperty, it->second);
-}
-
-void ShillClient::OnManagerPropertyChange(const string& property_name,
-                                          const Any& property_value) {
-  if (property_name != shill::kDevicesProperty) {
-    return;
-  }
-  VLOG(3) << "Manager's device list has changed.";
-  // We're going to remove every device we haven't seen in the update.
-  set<ObjectPath> device_paths_to_remove;
-  for (const auto& kv : devices_) {
-    device_paths_to_remove.insert(kv.first);
-  }
-  for (const auto& device_path : property_value.TryGet<vector<ObjectPath>>()) {
-    if (!device_path.IsValid()) {
-      LOG(ERROR) << "Ignoring invalid device path in Manager's device list.";
-      return;
-    }
-    auto it = devices_.find(device_path);
-    if (it != devices_.end()) {
-      // Found an existing proxy.  Since the whitelist never changes,
-      // this still a valid device.
-      device_paths_to_remove.erase(device_path);
-      continue;
-    }
-    std::unique_ptr<DeviceProxy> device{new DeviceProxy{bus_, device_path}};
-    if (!IsMonitoredDevice(device.get())) {
-      continue;
-    }
-    device->RegisterPropertyChangedSignalHandler(
-        base::Bind(&ShillClient::OnDevicePropertyChange,
-                   weak_factory_.GetWeakPtr(), device_path),
-        base::Bind(&ShillClient::OnDevicePropertyChangeRegistration,
-                   weak_factory_.GetWeakPtr(), device_path));
-    VLOG(3) << "Creating device proxy at " << device_path.value();
-    devices_[device_path].device = std::move(device);
-  }
-  // Clean up devices/services related to removed devices.
-  if (!device_paths_to_remove.empty()) {
-    for (const ObjectPath& device_path : device_paths_to_remove) {
-      devices_.erase(device_path);
-    }
-    UpdateConnectivityState();
-  }
-}
-
-void ShillClient::OnDevicePropertyChangeRegistration(
-    const ObjectPath& device_path,
-    const string& interface,
-    const string& signal_name,
-    bool success) {
-  VLOG(3) << "Registered DevicePropertyChange handler.";
-  auto it = devices_.find(device_path);
-  if (it == devices_.end()) {
-    return;
-  }
-  CHECK(success) << "Failed to subscribe to Device property changes.";
-  DeviceProxy* device = it->second.device.get();
-  VariantDictionary properties;
-  if (!device->GetProperties(&properties, nullptr)) {
-    LOG(WARNING) << "Failed to get device properties?";
-    return;
-  }
-  auto prop_it = properties.find(shill::kSelectedServiceProperty);
-  if (prop_it == properties.end()) {
-    LOG(WARNING) << "Failed to get device's selected service?";
-    return;
-  }
-  OnDevicePropertyChange(device_path, shill::kSelectedServiceProperty,
-                         prop_it->second);
-}
-
-void ShillClient::OnDevicePropertyChange(const ObjectPath& device_path,
-                                         const string& property_name,
-                                         const Any& property_value) {
-  // We only care about selected services anyway.
-  if (property_name != shill::kSelectedServiceProperty) {
-    return;
-  }
-  // If the device isn't our list of whitelisted devices, ignore it.
-  auto it = devices_.find(device_path);
-  if (it == devices_.end()) {
-    return;
-  }
-  DeviceState& device_state = it->second;
-  ObjectPath service_path{property_value.TryGet<ObjectPath>()};
-  if (!service_path.IsValid()) {
-    LOG(ERROR) << "Device at " << device_path.value()
-               << " selected invalid service path.";
-    return;
-  }
-  VLOG(3) << "Device at " << it->first.value() << " has selected service at "
-          << service_path.value();
-  bool removed_old_service{false};
-  if (device_state.selected_service) {
-    if (device_state.selected_service->GetObjectPath() == service_path) {
-      return;  // Spurious update?
-    }
-    device_state.selected_service.reset();
-    device_state.service_state = weave::NetworkState::kOffline;
-    removed_old_service = true;
-  }
-  std::shared_ptr<ServiceProxy> new_service;
-  const bool reuse_connecting_service =
-      service_path.value() != "/" && connecting_service_ &&
-      connecting_service_->GetObjectPath() == service_path;
-  if (reuse_connecting_service) {
-    new_service = connecting_service_;
-    // When we reuse the connecting service, we need to make sure that our
-    // cached state is correct.  Normally, we do this by relying reading the
-    // state when our signal handlers finish registering, but this may have
-    // happened long in the past for the connecting service.
-    string state;
-    if (GetStateForService(new_service.get(), &state)) {
-      device_state.service_state = ShillServiceStateToNetworkState(state);
-    } else {
-      LOG(WARNING) << "Failed to read properties from existing service "
-                      "on selection.";
-    }
-  } else if (service_path.value() != "/") {
-    // The device has selected a new service we haven't see before.
-    new_service.reset(new ServiceProxy{bus_, service_path});
-    new_service->RegisterPropertyChangedSignalHandler(
-        base::Bind(&ShillClient::OnServicePropertyChange,
-                   weak_factory_.GetWeakPtr(), service_path),
-        base::Bind(&ShillClient::OnServicePropertyChangeRegistration,
-                   weak_factory_.GetWeakPtr(), service_path));
-  }
-  device_state.selected_service = new_service;
-  if (reuse_connecting_service || removed_old_service) {
-    UpdateConnectivityState();
-  }
-}
-
-void ShillClient::OnServicePropertyChangeRegistration(const ObjectPath& path,
-                                                      const string& interface,
-                                                      const string& signal_name,
-                                                      bool success) {
-  VLOG(3) << "OnServicePropertyChangeRegistration(" << path.value() << ");";
-  ServiceProxy* service{nullptr};
-  if (connecting_service_ && connecting_service_->GetObjectPath() == path) {
-    // Note that the connecting service might also be a selected service.
-    service = connecting_service_.get();
-    if (!success) {
-      CleanupConnectingService(false);
-    }
-  } else {
-    for (const auto& kv : devices_) {
-      if (kv.second.selected_service &&
-          kv.second.selected_service->GetObjectPath() == path) {
-        service = kv.second.selected_service.get();
-        break;
-      }
-    }
-  }
-  if (service == nullptr || !success) {
-    return;  // A failure or success for a proxy we no longer care about.
-  }
-  VariantDictionary properties;
-  if (!service->GetProperties(&properties, nullptr)) {
-    return;
-  }
-  // Give ourselves property changed signals for the initial property
-  // values.
-  auto it = properties.find(shill::kStateProperty);
-  if (it != properties.end()) {
-    OnServicePropertyChange(path, shill::kStateProperty, it->second);
-  }
-  it = properties.find(shill::kSignalStrengthProperty);
-  if (it != properties.end()) {
-    OnServicePropertyChange(path, shill::kSignalStrengthProperty, it->second);
-  }
-}
-
-void ShillClient::OnServicePropertyChange(const ObjectPath& service_path,
-                                          const string& property_name,
-                                          const Any& property_value) {
-  VLOG(3) << "ServicePropertyChange(" << service_path.value() << ", "
-          << property_name << ", ...);";
-  if (property_name == shill::kStateProperty) {
-    const string state{property_value.TryGet<string>()};
-    if (state.empty()) {
-      VLOG(3) << "Invalid service state update.";
-      return;
-    }
-    VLOG(3) << "New service state=" << state;
-    OnStateChangeForSelectedService(service_path, state);
-    OnStateChangeForConnectingService(service_path, state);
-  } else if (property_name == shill::kSignalStrengthProperty) {
-    OnStrengthChangeForConnectingService(service_path,
-                                         property_value.TryGet<uint8_t>());
-  }
-}
-
-void ShillClient::OnStateChangeForConnectingService(
-    const ObjectPath& service_path,
-    const string& state) {
-  if (!connecting_service_ ||
-      connecting_service_->GetObjectPath() != service_path ||
-      ShillServiceStateToNetworkState(state) !=
-          weave::NetworkState::kConnected) {
-    return;
-  }
-  connecting_service_reset_pending_ = true;
-  on_connect_success_.callback().Run();
-  CleanupConnectingService(true);
-}
-
-void ShillClient::OnStrengthChangeForConnectingService(
-    const ObjectPath& service_path,
-    uint8_t signal_strength) {
-  if (!connecting_service_ ||
-      connecting_service_->GetObjectPath() != service_path ||
-      signal_strength <= 0 || have_called_connect_) {
-    return;
-  }
-  VLOG(1) << "Connecting service has signal. Calling Connect().";
-  have_called_connect_ = true;
-  // Failures here indicate that we've already connected,
-  // or are connecting, or some other very unexciting thing.
-  // Ignore all that, and rely on state changes to detect
-  // connectivity.
-  connecting_service_->Connect(nullptr);
-}
-
-void ShillClient::OnStateChangeForSelectedService(
-    const ObjectPath& service_path,
-    const string& state) {
-  // Find the device/service pair responsible for this update
-  VLOG(3) << "State for potentially selected service " << service_path.value()
-          << " have changed to " << state;
-  for (auto& kv : devices_) {
-    if (kv.second.selected_service &&
-        kv.second.selected_service->GetObjectPath() == service_path) {
-      VLOG(3) << "Updated cached connection state for selected service.";
-      kv.second.service_state = ShillServiceStateToNetworkState(state);
-      UpdateConnectivityState();
-      return;
-    }
-  }
-}
-
-void ShillClient::UpdateConnectivityState() {
-  // Update the connectivity state of the device by picking the
-  // state of the currently most connected selected service.
-  weave::NetworkState new_connectivity_state{weave::NetworkState::kOffline};
-  for (const auto& kv : devices_) {
-    if (kv.second.service_state > new_connectivity_state) {
-      new_connectivity_state = kv.second.service_state;
-    }
-  }
-  VLOG(1) << "Connectivity changed: " << EnumToString(connectivity_state_)
-          << " -> " << EnumToString(new_connectivity_state);
-  // Notify listeners even if state changed to the same value. Listeners may
-  // want to handle this event.
-  connectivity_state_ = new_connectivity_state;
-  // We may call UpdateConnectivityState whenever we mutate a data structure
-  // such that our connectivity status could change.  However, we don't want
-  // to allow people to call into ShillClient while some other operation is
-  // underway.  Therefore, call our callbacks later, when we're in a good
-  // state.
-  base::MessageLoop::current()->PostTask(
-      FROM_HERE,
-      base::Bind(&ShillClient::NotifyConnectivityListeners,
-                 weak_factory_.GetWeakPtr(),
-                 GetConnectionState() == weave::NetworkState::kConnected));
-}
-
-void ShillClient::NotifyConnectivityListeners(bool am_online) {
-  VLOG(3) << "Notifying connectivity listeners that online=" << am_online;
-  for (const auto& listener : connectivity_listeners_) {
-    listener.Run(am_online);
-  }
-}
-
-void ShillClient::CleanupConnectingService(bool check_for_reset_pending) {
-  if (check_for_reset_pending && !connecting_service_reset_pending_) {
-    return;  // Must have called connect before we got here.
-  }
-  if (connecting_service_) {
-    connecting_service_->ReleaseObjectProxy(base::Bind(&IgnoreDetachEvent));
-    connecting_service_.reset();
-  }
-  on_connect_success_.Cancel();
-  have_called_connect_ = false;
-  connecting_service_reset_pending_ = false;
-}
-
-}  // namespace buffet
diff --git a/buffet/shill_client.h b/buffet/shill_client.h
deleted file mode 100644
index 4d54d60..0000000
--- a/buffet/shill_client.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_SHILL_CLIENT_H_
-#define BUFFET_SHILL_CLIENT_H_
-
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <base/callback.h>
-#include <base/cancelable_callback.h>
-#include <base/macros.h>
-#include <base/memory/ref_counted.h>
-#include <base/memory/weak_ptr.h>
-#include <dbus/bus.h>
-#include <weave/network.h>
-
-#include "shill/dbus-proxies.h"
-
-namespace buffet {
-
-class ApManagerClient;
-
-class ShillClient final : public weave::Network {
- public:
-  ShillClient(const scoped_refptr<dbus::Bus>& bus,
-              const std::set<std::string>& device_whitelist);
-  ~ShillClient();
-
-  void Init();
-
-  // Network implementation.
-  void AddOnConnectionChangedCallback(
-      const OnConnectionChangedCallback& listener) override;
-  bool ConnectToService(const std::string& ssid,
-                        const std::string& passphrase,
-                        const base::Closure& on_success,
-                        chromeos::ErrorPtr* error) override;
-  weave::NetworkState GetConnectionState() const override;
-  void EnableAccessPoint(const std::string& ssid) override;
-  void DisableAccessPoint() override;
-
- private:
-  struct DeviceState {
-    std::unique_ptr<org::chromium::flimflam::DeviceProxy> device;
-    // ServiceProxy objects are shared because the connecting service will
-    // also be the selected service for a device, but is not always the selected
-    // service (for instance, in the period between configuring a WiFi service
-    // with credentials, and when Connect() is called.)
-    std::shared_ptr<org::chromium::flimflam::ServiceProxy> selected_service;
-    weave::NetworkState service_state{weave::NetworkState::kOffline};
-  };
-
-  bool IsMonitoredDevice(org::chromium::flimflam::DeviceProxy* device);
-  void OnShillServiceOwnerChange(const std::string& old_owner,
-                                 const std::string& new_owner);
-  void OnManagerPropertyChangeRegistration(const std::string& interface,
-                                           const std::string& signal_name,
-                                           bool success);
-  void OnManagerPropertyChange(const std::string& property_name,
-                               const chromeos::Any& property_value);
-  void OnDevicePropertyChangeRegistration(const dbus::ObjectPath& device_path,
-                                          const std::string& interface,
-                                          const std::string& signal_name,
-                                          bool success);
-  void OnDevicePropertyChange(const dbus::ObjectPath& device_path,
-                              const std::string& property_name,
-                              const chromeos::Any& property_value);
-  void OnServicePropertyChangeRegistration(const dbus::ObjectPath& path,
-                                           const std::string& interface,
-                                           const std::string& signal_name,
-                                           bool success);
-  void OnServicePropertyChange(const dbus::ObjectPath& service_path,
-                               const std::string& property_name,
-                               const chromeos::Any& property_value);
-
-  void OnStateChangeForConnectingService(const dbus::ObjectPath& service_path,
-                                         const std::string& state);
-  void OnStrengthChangeForConnectingService(
-      const dbus::ObjectPath& service_path,
-      uint8_t signal_strength);
-  void OnStateChangeForSelectedService(const dbus::ObjectPath& service_path,
-                                       const std::string& state);
-  void UpdateConnectivityState();
-  void NotifyConnectivityListeners(bool am_online);
-  // Clean up state related to a connecting service.  If
-  // |check_for_reset_pending| is set, then we'll check to see if we've called
-  // ConnectToService() in the time since a task to call this function was
-  // posted.
-  void CleanupConnectingService(bool check_for_reset_pending);
-
-  const scoped_refptr<dbus::Bus> bus_;
-  org::chromium::flimflam::ManagerProxy manager_proxy_;
-  // There is logic that assumes we will never change this device list
-  // in OnManagerPropertyChange.  Do not be tempted to remove this const.
-  const std::set<std::string> device_whitelist_;
-  std::vector<OnConnectionChangedCallback> connectivity_listeners_;
-
-  // State for tracking where we are in our attempts to connect to a service.
-  bool connecting_service_reset_pending_{false};
-  bool have_called_connect_{false};
-  std::shared_ptr<org::chromium::flimflam::ServiceProxy> connecting_service_;
-  base::CancelableClosure on_connect_success_;
-
-  // State for tracking our online connectivity.
-  std::map<dbus::ObjectPath, DeviceState> devices_;
-  weave::NetworkState connectivity_state_{weave::NetworkState::kOffline};
-
-  std::unique_ptr<ApManagerClient> ap_manager_client_;
-
-  base::WeakPtrFactory<ShillClient> weak_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(ShillClient);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_SHILL_CLIENT_H_
diff --git a/buffet/test_daemon/main.cc b/buffet/test_daemon/main.cc
deleted file mode 100644
index eeb0caf..0000000
--- a/buffet/test_daemon/main.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This is a sample daemon that "handles" Buffet commands.
-// It just prints the information about the command received to stdout and
-// marks the command as processed.
-
-#include <string>
-#include <sysexits.h>
-
-#include <base/bind.h>
-#include <base/command_line.h>
-#include <base/format_macros.h>
-#include <base/json/json_writer.h>
-#include <base/values.h>
-#include <chromeos/daemons/dbus_daemon.h>
-#include <chromeos/map_utils.h>
-#include <chromeos/strings/string_utils.h>
-#include <chromeos/syslog_logging.h>
-
-#include "buffet/dbus-proxies.h"
-
-namespace {
-const char kTestCommandCategory[] = "test";
-
-std::unique_ptr<base::DictionaryValue> DictionaryToJson(
-    const chromeos::VariantDictionary& dictionary);
-
-std::unique_ptr<base::Value> AnyToJson(const chromeos::Any& value) {
-  if (value.IsTypeCompatible<chromeos::VariantDictionary>())
-    return DictionaryToJson(value.Get<chromeos::VariantDictionary>());
-
-  if (value.IsTypeCompatible<std::string>()) {
-    return std::unique_ptr<base::Value>{
-        new base::StringValue(value.Get<std::string>())};
-  }
-
-  if (value.IsTypeCompatible<double>()) {
-    return std::unique_ptr<base::Value>{
-        new base::FundamentalValue(value.Get<double>())};
-  }
-
-  if (value.IsTypeCompatible<bool>()) {
-    return std::unique_ptr<base::Value>{
-        new base::FundamentalValue(value.Get<bool>())};
-  }
-
-  if (value.IsTypeCompatible<int>()) {
-    return std::unique_ptr<base::Value>{
-        new base::FundamentalValue(value.Get<int>())};
-  }
-
-  LOG(FATAL) << "Unsupported type:" << value.GetType().name();
-  return {};
-}
-
-std::unique_ptr<base::DictionaryValue> DictionaryToJson(
-    const chromeos::VariantDictionary& dictionary) {
-  std::unique_ptr<base::DictionaryValue> result{new base::DictionaryValue};
-  for (const auto& it : dictionary)
-    result->Set(it.first, AnyToJson(it.second).release());
-  return result;
-}
-
-std::string DictionaryToString(const chromeos::VariantDictionary& dictionary) {
-  std::unique_ptr<base::DictionaryValue> json{DictionaryToJson(dictionary)};
-  std::string str;
-  base::JSONWriter::Write(*json, &str);
-  return str;
-}
-
-}  // anonymous namespace
-
-class Daemon final : public chromeos::DBusDaemon {
- public:
-  Daemon() = default;
-
- protected:
-  int OnInit() override;
-  void OnShutdown(int* return_code) override;
-
- private:
-  std::unique_ptr<org::chromium::Buffet::ObjectManagerProxy> object_manager_;
-
-  void OnBuffetCommand(org::chromium::Buffet::CommandProxy* command);
-  void OnBuffetCommandRemoved(const dbus::ObjectPath& object_path);
-  void OnPropertyChange(org::chromium::Buffet::CommandProxy* command,
-                        const std::string& property_name);
-  void OnCommandProgress(org::chromium::Buffet::CommandProxy* command,
-                         int progress);
-
-  DISALLOW_COPY_AND_ASSIGN(Daemon);
-};
-
-int Daemon::OnInit() {
-  int return_code = chromeos::DBusDaemon::OnInit();
-  if (return_code != EX_OK)
-    return return_code;
-
-  object_manager_.reset(new org::chromium::Buffet::ObjectManagerProxy{bus_});
-  object_manager_->SetCommandAddedCallback(
-      base::Bind(&Daemon::OnBuffetCommand, base::Unretained(this)));
-  object_manager_->SetCommandRemovedCallback(
-      base::Bind(&Daemon::OnBuffetCommandRemoved, base::Unretained(this)));
-
-  printf("Waiting for commands...\n");
-  return EX_OK;
-}
-
-void Daemon::OnShutdown(int* return_code) {
-  printf("Shutting down...\n");
-}
-
-void Daemon::OnPropertyChange(org::chromium::Buffet::CommandProxy* command,
-                              const std::string& property_name) {
-  printf("Notification: property '%s' on command '%s' changed.\n",
-         property_name.c_str(), command->id().c_str());
-  printf("  Current command status: '%s'\n", command->status().c_str());
-  std::string progress = DictionaryToString(command->progress());
-  printf("  Current command progress: %s\n", progress.c_str());
-  std::string results = DictionaryToString(command->results());
-  printf("  Current command results: %s\n", results.c_str());
-}
-
-void Daemon::OnBuffetCommand(org::chromium::Buffet::CommandProxy* command) {
-  // "Handle" only commands that belong to this daemon's category.
-  if (command->category() != kTestCommandCategory ||
-      command->status() == "done") {
-    return;
-  }
-
-  command->SetPropertyChangedCallback(base::Bind(&Daemon::OnPropertyChange,
-                                                 base::Unretained(this)));
-  printf("++++++++++++++++++++++++++++++++++++++++++++++++\n");
-  printf("Command received: %s\n", command->name().c_str());
-  printf("DBus Object Path: %s\n", command->GetObjectPath().value().c_str());
-  printf("        category: %s\n", command->category().c_str());
-  printf("              ID: %s\n", command->id().c_str());
-  printf("          status: %s\n", command->status().c_str());
-  printf("          origin: %s\n", command->origin().c_str());
-  std::string param_names = DictionaryToString(command->parameters());
-  printf(" parameters: %s\n", param_names.c_str());
-  OnCommandProgress(command, 0);
-}
-
-void Daemon::OnCommandProgress(org::chromium::Buffet::CommandProxy* command,
-                               int progress) {
-  printf("Updating command '%s' progress to %d%%\n", command->id().c_str(),
-         progress);
-  auto new_progress = command->progress();
-  new_progress["progress"] = progress;
-  command->SetProgress(new_progress, nullptr);
-
-  if (progress >= 100) {
-    command->Done(nullptr);
-  } else {
-    base::MessageLoop::current()->PostDelayedTask(
-        FROM_HERE, base::Bind(&Daemon::OnCommandProgress,
-                              base::Unretained(this), command, progress + 10),
-        base::TimeDelta::FromSeconds(1));
-  }
-}
-
-void Daemon::OnBuffetCommandRemoved(const dbus::ObjectPath& object_path) {
-  printf("------------------------------------------------\n");
-  printf("Command removed\n");
-  printf("DBus Object Path: %s\n", object_path.value().c_str());
-}
-
-int main(int argc, char* argv[]) {
-  base::CommandLine::Init(argc, argv);
-  chromeos::InitLog(chromeos::kLogToSyslog |
-                    chromeos::kLogToStderr |
-                    chromeos::kLogHeader);
-  Daemon daemon;
-  return daemon.Run();
-}
diff --git a/buffet/webserv_client.cc b/buffet/webserv_client.cc
deleted file mode 100644
index 2ae5910..0000000
--- a/buffet/webserv_client.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "buffet/webserv_client.h"
-
-#include <memory>
-#include <string>
-
-#include <libwebserv/protocol_handler.h>
-#include <libwebserv/request.h>
-#include <libwebserv/response.h>
-#include <libwebserv/server.h>
-
-#include "buffet/dbus_constants.h"
-
-namespace buffet {
-
-namespace {
-
-class RequestImpl : public weave::HttpServer::Request {
- public:
-  explicit RequestImpl(std::unique_ptr<libwebserv::Request> request)
-      : request_{std::move(request)} {}
-  ~RequestImpl() override {}
-
-  // HttpServer::Request implementation.
-  const std::string& GetPath() const override { return request_->GetPath(); }
-  std::string GetFirstHeader(const std::string& name) const override {
-    return request_->GetFirstHeader(name);
-  }
-  const std::vector<uint8_t>& GetData() const override {
-    return request_->GetData();
-  }
-
- private:
-  std::unique_ptr<libwebserv::Request> request_;
-
-  DISALLOW_COPY_AND_ASSIGN(RequestImpl);
-};
-
-}  // namespace
-
-WebServClient::~WebServClient() {
-  web_server_->Disconnect();
-}
-
-void WebServClient::AddOnStateChangedCallback(
-    const OnStateChangedCallback& callback) {
-  on_state_changed_callbacks_.push_back(callback);
-  callback.Run(*this);
-}
-
-void WebServClient::AddRequestHandler(const std::string& path_prefix,
-                                      const OnRequestCallback& callback) {
-  web_server_->GetDefaultHttpHandler()->AddHandlerCallback(
-      path_prefix, "", base::Bind(&WebServClient::OnRequest,
-                                  weak_ptr_factory_.GetWeakPtr(), callback));
-  web_server_->GetDefaultHttpsHandler()->AddHandlerCallback(
-      path_prefix, "", base::Bind(&WebServClient::OnRequest,
-                                  weak_ptr_factory_.GetWeakPtr(), callback));
-}
-
-uint16_t WebServClient::GetHttpPort() const {
-  return http_port_;
-}
-
-uint16_t WebServClient::GetHttpsPort() const {
-  return https_port_;
-}
-
-const chromeos::Blob& WebServClient::GetHttpsCertificateFingerprint() const {
-  return certificate_;
-}
-
-WebServClient::WebServClient(
-    const scoped_refptr<dbus::Bus>& bus,
-    chromeos::dbus_utils::AsyncEventSequencer* sequencer) {
-  web_server_.reset(new libwebserv::Server);
-  web_server_->OnProtocolHandlerConnected(
-      base::Bind(&WebServClient::OnProtocolHandlerConnected,
-                 weak_ptr_factory_.GetWeakPtr()));
-  web_server_->OnProtocolHandlerDisconnected(
-      base::Bind(&WebServClient::OnProtocolHandlerDisconnected,
-                 weak_ptr_factory_.GetWeakPtr()));
-
-  web_server_->Connect(bus, buffet::kServiceName,
-                       sequencer->GetHandler("Server::Connect failed.", true),
-                       base::Bind(&base::DoNothing),
-                       base::Bind(&base::DoNothing));
-}
-
-void WebServClient::OnRequest(const OnRequestCallback& callback,
-                              std::unique_ptr<libwebserv::Request> request,
-                              std::unique_ptr<libwebserv::Response> response) {
-  callback.Run(
-      RequestImpl{std::move(request)},
-      base::Bind(&WebServClient::OnResponse, weak_ptr_factory_.GetWeakPtr(),
-                 base::Passed(&response)));
-}
-
-void WebServClient::OnResponse(std::unique_ptr<libwebserv::Response> response,
-                               int status_code,
-                               const std::string& data,
-                               const std::string& mime_type) {
-  response->Reply(status_code, data.data(), data.size(), mime_type);
-}
-
-void WebServClient::OnProtocolHandlerConnected(
-    libwebserv::ProtocolHandler* protocol_handler) {
-  if (protocol_handler->GetName() == libwebserv::ProtocolHandler::kHttp) {
-    http_port_ = *protocol_handler->GetPorts().begin();
-  } else if (protocol_handler->GetName() ==
-             libwebserv::ProtocolHandler::kHttps) {
-    https_port_ = *protocol_handler->GetPorts().begin();
-    certificate_ = protocol_handler->GetCertificateFingerprint();
-  }
-  for (const auto& cb : on_state_changed_callbacks_)
-    cb.Run(*this);
-}
-
-void WebServClient::OnProtocolHandlerDisconnected(
-    libwebserv::ProtocolHandler* protocol_handler) {
-  if (protocol_handler->GetName() == libwebserv::ProtocolHandler::kHttp) {
-    http_port_ = 0;
-  } else if (protocol_handler->GetName() ==
-             libwebserv::ProtocolHandler::kHttps) {
-    https_port_ = 0;
-    certificate_.clear();
-  }
-  for (const auto& cb : on_state_changed_callbacks_)
-    cb.Run(*this);
-}
-
-}  // namespace buffet
diff --git a/buffet/webserv_client.h b/buffet/webserv_client.h
deleted file mode 100644
index d7b5433..0000000
--- a/buffet/webserv_client.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2015 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_WEBSERV_CLIENT_H_
-#define BUFFET_WEBSERV_CLIENT_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <base/memory/weak_ptr.h>
-#include <weave/http_server.h>
-
-namespace dbus {
-class Bus;
-}
-
-namespace chromeos {
-namespace dbus_utils {
-class AsyncEventSequencer;
-}
-}
-
-namespace libwebserv {
-class ProtocolHandler;
-class Request;
-class Response;
-class Server;
-}
-
-namespace buffet {
-
-// Wrapper around libwebserv that implements HttpServer interface.
-class WebServClient : public weave::HttpServer {
- public:
-  WebServClient(const scoped_refptr<dbus::Bus>& bus,
-                chromeos::dbus_utils::AsyncEventSequencer* sequencer);
-  ~WebServClient() override;
-
-  // HttpServer implementation.
-  void AddOnStateChangedCallback(
-      const OnStateChangedCallback& callback) override;
-  void AddRequestHandler(const std::string& path_prefix,
-                         const OnRequestCallback& callback) override;
-  uint16_t GetHttpPort() const override;
-  uint16_t GetHttpsPort() const override;
-  const chromeos::Blob& GetHttpsCertificateFingerprint() const override;
-
- private:
-  void OnRequest(const OnRequestCallback& callback,
-                 std::unique_ptr<libwebserv::Request> request,
-                 std::unique_ptr<libwebserv::Response> response);
-
-  void OnResponse(std::unique_ptr<libwebserv::Response> response,
-                  int status_code,
-                  const std::string& data,
-                  const std::string& mime_type);
-
-  void OnProtocolHandlerConnected(
-      libwebserv::ProtocolHandler* protocol_handler);
-
-  void OnProtocolHandlerDisconnected(
-      libwebserv::ProtocolHandler* protocol_handler);
-
-  uint16_t http_port_{0};
-  uint16_t https_port_{0};
-  chromeos::Blob certificate_;
-
-  std::vector<OnStateChangedCallback> on_state_changed_callbacks_;
-
-  std::unique_ptr<libwebserv::Server> web_server_;
-
-  base::WeakPtrFactory<WebServClient> weak_ptr_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(WebServClient);
-};
-
-}  // namespace buffet
-
-#endif  // BUFFET_WEBSERV_CLIENT_H_