diff --git a/libweave/examples/provider/curl_http_client.cc b/libweave/examples/provider/curl_http_client.cc
index 36ddf8f..b440f39 100644
--- a/libweave/examples/provider/curl_http_client.cc
+++ b/libweave/examples/provider/curl_http_client.cc
@@ -46,11 +46,11 @@
 
   switch (method) {
     case Method::kGet:
-    CHECK_EQ(CURLE_OK, curl_easy_setopt(curl.get(), CURLOPT_HTTPGET, 1L));
-    break;
+      CHECK_EQ(CURLE_OK, curl_easy_setopt(curl.get(), CURLOPT_HTTPGET, 1L));
+      break;
     case Method::kPost:
-    CHECK_EQ(CURLE_OK, curl_easy_setopt(curl.get(), CURLOPT_HTTPPOST, 1L));
-    break;
+      CHECK_EQ(CURLE_OK, curl_easy_setopt(curl.get(), CURLOPT_HTTPPOST, 1L));
+      break;
     case Method::kPatch:
     case Method::kPut:
       CHECK_EQ(CURLE_OK, curl_easy_setopt(curl.get(), CURLOPT_CUSTOMREQUEST,
diff --git a/libweave/examples/provider/event_http_server.cc b/libweave/examples/provider/event_http_server.cc
index d12f2eb..bb55c50 100644
--- a/libweave/examples/provider/event_http_server.cc
+++ b/libweave/examples/provider/event_http_server.cc
@@ -159,9 +159,7 @@
 void HttpServerImpl::ProcessReply(std::shared_ptr<RequestImpl> request,
                                   int status_code,
                                   const std::string& data,
-                                  const std::string& mime_type) {
-
-}
+                                  const std::string& mime_type) {}
 
 void HttpServerImpl::AddHttpRequestHandler(
     const std::string& path,
diff --git a/libweave/examples/provider/event_network.cc b/libweave/examples/provider/event_network.cc
index 33e5d12..82165be 100644
--- a/libweave/examples/provider/event_network.cc
+++ b/libweave/examples/provider/event_network.cc
@@ -80,8 +80,10 @@
 
 void EventNetworkImpl::UpdateNetworkStateCallback(
     provider::Network::State state) {
-  network_state_ = state;
-  LOG(INFO) << "network state updated: " << weave::EnumToString(state);
+  if (state != network_state_) {
+    LOG(INFO) << "network state updated: " << weave::EnumToString(state);
+    network_state_ = state;
+  }
   for (const auto& cb : callbacks_)
     cb.Run();
   // TODO(proppy): use netlink interface event instead of polling
diff --git a/libweave/examples/provider/wifi_manager.cc b/libweave/examples/provider/wifi_manager.cc
index 132144c..ac1c604 100644
--- a/libweave/examples/provider/wifi_manager.cc
+++ b/libweave/examples/provider/wifi_manager.cc
@@ -39,8 +39,7 @@
 
 }  // namespace
 
-WifiImpl::WifiImpl(provider::TaskRunner* task_runner,
-                         bool force_bootstrapping)
+WifiImpl::WifiImpl(provider::TaskRunner* task_runner, bool force_bootstrapping)
     : force_bootstrapping_{force_bootstrapping}, task_runner_{task_runner} {
   StopAccessPoint();
 }
@@ -49,10 +48,10 @@
 }
 
 void WifiImpl::TryToConnect(const std::string& ssid,
-                               const std::string& passphrase,
-                               int pid,
-                               base::Time until,
-                               const DoneCallback& callback) {
+                            const std::string& passphrase,
+                            int pid,
+                            base::Time until,
+                            const DoneCallback& callback) {
   if (pid) {
     int status = 0;
     if (pid == waitpid(pid, &status, WNOWAIT)) {
@@ -91,14 +90,14 @@
 
   task_runner_->PostDelayedTask(
       FROM_HERE,
-      base::Bind(&WifiImpl::TryToConnect, weak_ptr_factory_.GetWeakPtr(),
-                 ssid, passphrase, pid, until, callback),
+      base::Bind(&WifiImpl::TryToConnect, weak_ptr_factory_.GetWeakPtr(), ssid,
+                 passphrase, pid, until, callback),
       base::TimeDelta::FromSeconds(1));
 }
 
 void WifiImpl::Connect(const std::string& ssid,
-                          const std::string& passphrase,
-                          const DoneCallback& callback) {
+                       const std::string& passphrase,
+                       const DoneCallback& callback) {
   force_bootstrapping_ = false;
   CHECK(!hostapd_started_);
   if (hostapd_started_) {
diff --git a/libweave/examples/provider/wifi_manager.h b/libweave/examples/provider/wifi_manager.h
index 3258374..849beef 100644
--- a/libweave/examples/provider/wifi_manager.h
+++ b/libweave/examples/provider/wifi_manager.h
@@ -25,7 +25,7 @@
 class WifiImpl : public provider::Wifi {
  public:
   explicit WifiImpl(provider::TaskRunner* task_runner,
-                       bool force_bootstrapping);
+                    bool force_bootstrapping);
   ~WifiImpl();
 
   // Wifi implementation.
