diff --git a/libweave/src/privet/ap_manager_client.cc b/buffet/ap_manager_client.cc
similarity index 95%
rename from libweave/src/privet/ap_manager_client.cc
rename to buffet/ap_manager_client.cc
index 2395da8..6449c0f 100644
--- a/libweave/src/privet/ap_manager_client.cc
+++ b/buffet/ap_manager_client.cc
@@ -2,18 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "libweave/src/privet/ap_manager_client.h"
+#include "buffet/ap_manager_client.h"
 
-namespace weave {
-namespace privet {
+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) {
-}
+    : bus_(bus) {}
 
 ApManagerClient::~ApManagerClient() {
   Stop();
@@ -113,5 +111,4 @@
   Stop();
 }
 
-}  // namespace privet
-}  // namespace weave
+}  // namespace buffet
diff --git a/libweave/src/privet/ap_manager_client.h b/buffet/ap_manager_client.h
similarity index 85%
rename from libweave/src/privet/ap_manager_client.h
rename to buffet/ap_manager_client.h
index 073ea08..8397587 100644
--- a/libweave/src/privet/ap_manager_client.h
+++ b/buffet/ap_manager_client.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef LIBWEAVE_SRC_PRIVET_AP_MANAGER_CLIENT_H_
-#define LIBWEAVE_SRC_PRIVET_AP_MANAGER_CLIENT_H_
+#ifndef BUFFET_AP_MANAGER_CLIENT_H_
+#define BUFFET_AP_MANAGER_CLIENT_H_
 
 #include <memory>
 #include <string>
@@ -13,8 +13,7 @@
 
 #include "apmanager/dbus-proxies.h"
 
-namespace weave {
-namespace privet {
+namespace buffet {
 
 // Manages soft AP for wifi bootstrapping.
 // Once created can handle multiple Start/Stop requests.
@@ -53,7 +52,6 @@
   base::WeakPtrFactory<ApManagerClient> weak_ptr_factory_{this};
 };
 
-}  // namespace privet
-}  // namespace weave
+}  // namespace buffet
 
-#endif  // LIBWEAVE_SRC_PRIVET_AP_MANAGER_CLIENT_H_
+#endif  // BUFFET_AP_MANAGER_CLIENT_H_
diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index fde6d30..1c619fa 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -25,6 +25,7 @@
         'dbus_service_config': 'dbus_bindings/dbus-service-config.json',
       },
       'sources': [
+        'ap_manager_client.cc',
         'dbus_bindings/org.chromium.Buffet.Command.xml',
         'dbus_bindings/org.chromium.Buffet.Manager.xml',
         'dbus_command_dispatcher.cc',
@@ -57,7 +58,6 @@
         '../libweave/src/notification/xmpp_channel.cc',
         '../libweave/src/notification/xmpp_iq_stanza_handler.cc',
         '../libweave/src/notification/xmpp_stream_parser.cc',
-        '../libweave/src/privet/ap_manager_client.cc',
         '../libweave/src/privet/cloud_delegate.cc',
         '../libweave/src/privet/constants.cc',
         '../libweave/src/privet/device_delegate.cc',
diff --git a/buffet/shill_client.cc b/buffet/shill_client.cc
index 1efc52d..9db5e85 100644
--- a/buffet/shill_client.cc
+++ b/buffet/shill_client.cc
@@ -13,6 +13,7 @@
 #include <chromeos/errors/error.h>
 #include <chromeos/errors/error_codes.h>
 
+#include "buffet/ap_manager_client.h"
 #include "weave/enum_to_string.h"
 
 using chromeos::Any;
@@ -85,7 +86,8 @@
                          const set<string>& device_whitelist)
     : bus_{bus},
       manager_proxy_{bus_, ObjectPath{"/"}},
-      device_whitelist_{device_whitelist} {
+      device_whitelist_{device_whitelist},
+      ap_manager_client_{new ApManagerClient(bus)} {
   manager_proxy_.RegisterPropertyChangedSignalHandler(
       base::Bind(&ShillClient::OnManagerPropertyChange,
                  weak_factory_.GetWeakPtr()),
@@ -97,6 +99,8 @@
       ->SetNameOwnerChangedCallback(owner_changed_cb);
 }
 
+ShillClient::~ShillClient() {}
+
 void ShillClient::Init() {
   VLOG(2) << "ShillClient::Init();";
   CleanupConnectingService(false);
@@ -148,6 +152,14 @@
   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);
diff --git a/buffet/shill_client.h b/buffet/shill_client.h
index 06c1be5..2538674 100644
--- a/buffet/shill_client.h
+++ b/buffet/shill_client.h
@@ -22,11 +22,13 @@
 
 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() = default;
+  ~ShillClient();
 
   void Init();
 
@@ -38,6 +40,8 @@
                         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 {
@@ -105,6 +109,8 @@
   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);
diff --git a/libweave/include/weave/network.h b/libweave/include/weave/network.h
index cd27e2c..0e5cc26 100644
--- a/libweave/include/weave/network.h
+++ b/libweave/include/weave/network.h
@@ -39,6 +39,12 @@
 
   virtual NetworkState GetConnectionState() const = 0;
 
+  // Starts WiFi access point for wifi setup.
+  virtual void EnableAccessPoint(const std::string& ssid) = 0;
+
+  // Stops WiFi access point.
+  virtual void DisableAccessPoint() = 0;
+
  protected:
   virtual ~Network() = default;
 };
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index 4523337..32142f7 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -29,7 +29,6 @@
 
 #include "buffet/dbus_constants.h"
 #include "libweave/src/device_registration_info.h"
-#include "libweave/src/privet/ap_manager_client.h"
 #include "libweave/src/privet/cloud_delegate.h"
 #include "libweave/src/privet/constants.h"
 #include "libweave/src/privet/device_delegate.h"
@@ -78,14 +77,12 @@
                                       disable_security_));
   network->AddOnConnectionChangedCallback(
       base::Bind(&Manager::OnConnectivityChanged, base::Unretained(this)));
-  ap_manager_client_.reset(new ApManagerClient(bus));
 
   if (device->GetConfig().wifi_auto_setup_enabled()) {
     VLOG(1) << "Enabling WiFi bootstrapping.";
     wifi_bootstrap_manager_.reset(new WifiBootstrapManager(
         device->GetConfig().last_configured_ssid(), options.test_privet_ssid,
-        device->GetConfig().ble_setup_enabled(),
-        network, ap_manager_client_.get(), cloud_.get()));
+        device->GetConfig().ble_setup_enabled(), network, cloud_.get()));
     wifi_bootstrap_manager_->Init();
   }
 
diff --git a/libweave/src/privet/privet_manager.h b/libweave/src/privet/privet_manager.h
index 06d3bae..bdcb298 100644
--- a/libweave/src/privet/privet_manager.h
+++ b/libweave/src/privet/privet_manager.h
@@ -41,7 +41,6 @@
 
 namespace privet {
 
-class ApManagerClient;
 class CloudDelegate;
 class DaemonState;
 class DeviceDelegate;
@@ -101,7 +100,6 @@
   std::unique_ptr<CloudDelegate> cloud_;
   std::unique_ptr<DeviceDelegate> device_;
   std::unique_ptr<SecurityManager> security_;
-  std::unique_ptr<ApManagerClient> ap_manager_client_;
   std::unique_ptr<WifiBootstrapManager> wifi_bootstrap_manager_;
   std::unique_ptr<Publisher> publisher_;
   std::unique_ptr<PrivetHandler> privet_handler_;
diff --git a/libweave/src/privet/privet_types.cc b/libweave/src/privet/privet_types.cc
index cbe33da..e3f3307 100644
--- a/libweave/src/privet/privet_types.cc
+++ b/libweave/src/privet/privet_types.cc
@@ -7,8 +7,8 @@
 #include <string>
 
 #include "weave/enum_to_string.h"
-#include "weave/privet.h"
 #include "weave/network.h"
+#include "weave/privet.h"
 
 namespace weave {
 
diff --git a/libweave/src/privet/wifi_bootstrap_manager.cc b/libweave/src/privet/wifi_bootstrap_manager.cc
index 841e903..4407e6d 100644
--- a/libweave/src/privet/wifi_bootstrap_manager.cc
+++ b/libweave/src/privet/wifi_bootstrap_manager.cc
@@ -10,7 +10,6 @@
 #include <chromeos/bind_lambda.h>
 #include <chromeos/key_value_store.h>
 
-#include "libweave/src/privet/ap_manager_client.h"
 #include "libweave/src/privet/constants.h"
 #include "weave/enum_to_string.h"
 #include "weave/network.h"
@@ -29,10 +28,8 @@
     const std::string& test_privet_ssid,
     bool ble_setup_enabled,
     Network* network,
-    ApManagerClient* ap_manager_client,
     CloudDelegate* gcd)
     : network_{network},
-      ap_manager_client_{ap_manager_client},
       ssid_generator_{gcd, this},
       last_configured_ssid_{last_configured_ssid},
       test_privet_ssid_{test_privet_ssid},
@@ -86,15 +83,16 @@
         base::TimeDelta::FromSeconds(kBootstrapTimeoutSeconds));
   }
   // TODO(vitalybuka): Add SSID probing.
-  std::string ssid = GenerateSsid();
-  CHECK(!ssid.empty());
-  ap_manager_client_->Start(ssid);
+  privet_ssid_ = GenerateSsid();
+  CHECK(!privet_ssid_.empty());
+  network_->EnableAccessPoint(privet_ssid_);
   LOG_IF(INFO, ble_setup_enabled_) << "BLE Bootstrap start: not implemented.";
 }
 
 void WifiBootstrapManager::EndBootstrapping() {
   LOG_IF(INFO, ble_setup_enabled_) << "BLE Bootstrap stop: not implemented.";
-  ap_manager_client_->Stop();
+  network_->DisableAccessPoint();
+  privet_ssid_.clear();
 }
 
 void WifiBootstrapManager::StartConnecting(const std::string& ssid,
@@ -194,7 +192,7 @@
 }
 
 std::string WifiBootstrapManager::GetHostedSsid() const {
-  return ap_manager_client_->GetSsid();
+  return privet_ssid_;
 }
 
 std::set<WifiType> WifiBootstrapManager::GetTypes() const {
diff --git a/libweave/src/privet/wifi_bootstrap_manager.h b/libweave/src/privet/wifi_bootstrap_manager.h
index ad87df1..dad13a0 100644
--- a/libweave/src/privet/wifi_bootstrap_manager.h
+++ b/libweave/src/privet/wifi_bootstrap_manager.h
@@ -26,7 +26,6 @@
 
 namespace privet {
 
-class ApManagerClient;
 class CloudDelegate;
 class DeviceDelegate;
 
@@ -41,7 +40,6 @@
                        const std::string& test_privet_ssid,
                        bool wifi_setup_enabled,
                        Network* shill_client,
-                       ApManagerClient* ap_manager_client,
                        CloudDelegate* gcd);
   ~WifiBootstrapManager() override = default;
   virtual void Init();
@@ -101,13 +99,13 @@
   SetupState setup_state_{SetupState::kNone};
   ConnectionState connection_state_{ConnectionState::kDisabled};
   Network* network_;
-  ApManagerClient* ap_manager_client_;
   WifiSsidGenerator ssid_generator_;
 
   std::vector<StateListener> state_listeners_;
   bool currently_online_{false};
   std::string last_configured_ssid_;
   std::string test_privet_ssid_;
+  std::string privet_ssid_;
   bool ble_setup_enabled_{false};
 
   ScopedObserver<CloudDelegate, CloudDelegate::Observer> cloud_observer_{this};
