diff --git a/examples/daemon/ledflasher/ledflasher.cc b/examples/daemon/ledflasher/ledflasher.cc
index 2e38d95..369b003 100644
--- a/examples/daemon/ledflasher/ledflasher.cc
+++ b/examples/daemon/ledflasher/ledflasher.cc
@@ -102,7 +102,7 @@
       return;
     }
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
@@ -124,7 +124,7 @@
       return;
     }
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
diff --git a/examples/daemon/light/light.cc b/examples/daemon/light/light.cc
index 298fcaf..a78231f 100644
--- a/examples/daemon/light/light.cc
+++ b/examples/daemon/light/light.cc
@@ -215,7 +215,7 @@
       return;
     }
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
@@ -241,7 +241,7 @@
       return;
     }
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
@@ -275,7 +275,7 @@
     }
 
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 0785c14..fcc6ad7 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -98,8 +98,8 @@
       if (!weave::StringToEnum(requested_state, &new_lock_status)) {
         // Invalid lock state was specified.
         weave::ErrorPtr error;
-        weave::Error::AddTo(&error, FROM_HERE, "example",
-                            "invalid_parameter_value", "Invalid parameters");
+        weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
+                            "Invalid parameters");
         cmd->Abort(error.get(), nullptr);
         return;
       }
@@ -114,7 +114,7 @@
       return;
     }
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
diff --git a/examples/daemon/oven/oven.cc b/examples/daemon/oven/oven.cc
index ff1c60b..daf1971 100644
--- a/examples/daemon/oven/oven.cc
+++ b/examples/daemon/oven/oven.cc
@@ -191,7 +191,7 @@
     }
 
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
@@ -215,7 +215,7 @@
     }
 
     weave::ErrorPtr error;
-    weave::Error::AddTo(&error, FROM_HERE, "example", "invalid_parameter_value",
+    weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
                         "Invalid parameters");
     cmd->Abort(error.get(), nullptr);
   }
diff --git a/examples/daemon/sample/sample.cc b/examples/daemon/sample/sample.cc
index f4ad3d9..7e58193 100644
--- a/examples/daemon/sample/sample.cc
+++ b/examples/daemon/sample/sample.cc
@@ -88,8 +88,8 @@
     std::string name;
     if (!params.GetString("name", &name)) {
       weave::ErrorPtr error;
-      weave::Error::AddTo(&error, FROM_HERE, "example",
-                          "invalid_parameter_value", "Name is missing");
+      weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
+                          "Name is missing");
       cmd->Abort(error.get(), nullptr);
       return;
     }
diff --git a/examples/provider/curl_http_client.cc b/examples/provider/curl_http_client.cc
index de8b3dd..2b1fac3 100644
--- a/examples/provider/curl_http_client.cc
+++ b/examples/provider/curl_http_client.cc
@@ -109,7 +109,7 @@
 
   ErrorPtr error;
   if (res != CURLE_OK) {
-    Error::AddTo(&error, FROM_HERE, "curl", "curl_easy_perform_error",
+    Error::AddTo(&error, FROM_HERE, "curl_easy_perform_error",
                  curl_easy_strerror(res));
     return {nullptr, std::move(error)};
   }
diff --git a/examples/provider/event_http_client.cc b/examples/provider/event_http_client.cc
index fbfc6d8..0346a67 100644
--- a/examples/provider/event_http_client.cc
+++ b/examples/provider/event_http_client.cc
@@ -60,7 +60,7 @@
   if (!req) {
     ErrorPtr error;
     auto err = EVUTIL_SOCKET_ERROR();
-    Error::AddToPrintf(&error, FROM_HERE, "http_client", "request_failed",
+    Error::AddToPrintf(&error, FROM_HERE, "request_failed",
                        "request failed: %s",
                        evutil_socket_error_to_string(err));
     state->task_runner_->PostDelayedTask(
@@ -134,7 +134,7 @@
   if (res >= 0)
     return;
   ErrorPtr error;
-  Error::AddToPrintf(&error, FROM_HERE, "http_client", "request_failed",
+  Error::AddToPrintf(&error, FROM_HERE, "request_failed",
                      "request failed: %s %s", EnumToString(method).c_str(),
                      url.c_str());
   task_runner_->PostDelayedTask(
diff --git a/examples/provider/ssl_stream.cc b/examples/provider/ssl_stream.cc
index eea28c0..8c1a756 100644
--- a/examples/provider/ssl_stream.cc
+++ b/examples/provider/ssl_stream.cc
@@ -21,7 +21,7 @@
                  unsigned long ssl_error_code) {
   ERR_load_BIO_strings();
   SSL_load_error_strings();
-  Error::AddToPrintf(error, location, "ssl_stream", error_code, "%s: %s",
+  Error::AddToPrintf(error, location, error_code, "%s: %s",
                      ERR_lib_error_string(ssl_error_code),
                      ERR_reason_error_string(ssl_error_code));
 }
diff --git a/examples/provider/wifi_manager.cc b/examples/provider/wifi_manager.cc
index ed6a9fd..cad882d 100644
--- a/examples/provider/wifi_manager.cc
+++ b/examples/provider/wifi_manager.cc
@@ -84,7 +84,7 @@
 
   if (base::Time::Now() >= until) {
     ErrorPtr error;
-    Error::AddTo(&error, FROM_HERE, "wifi", "timeout",
+    Error::AddTo(&error, FROM_HERE, "timeout",
                  "Timeout connecting to WiFI network.");
     task_runner_->PostDelayedTask(
         FROM_HERE, base::Bind(callback, base::Passed(&error)), {});
@@ -105,7 +105,7 @@
   CHECK(!hostapd_started_);
   if (hostapd_started_) {
     ErrorPtr error;
-    Error::AddTo(&error, FROM_HERE, "wifi", "busy", "Running Access Point.");
+    Error::AddTo(&error, FROM_HERE, "busy", "Running Access Point.");
     task_runner_->PostDelayedTask(
         FROM_HERE, base::Bind(callback, base::Passed(&error)), {});
     return;
