diff --git a/libweave/examples/ubuntu/network_manager.cc b/libweave/examples/ubuntu/network_manager.cc
index c14dac5..fc033b5 100644
--- a/libweave/examples/ubuntu/network_manager.cc
+++ b/libweave/examples/ubuntu/network_manager.cc
@@ -60,8 +60,8 @@
     const std::string& passphrase,
     int pid,
     base::Time until,
-    const base::Closure& success_callback,
-    const base::Callback<void(const Error*)>& error_callback) {
+    const SuccessCallback& success_callback,
+    const ErrorCallback& error_callback) {
   if (pid) {
     int status = 0;
     if (pid == waitpid(pid, &status, WNOWAIT)) {
diff --git a/libweave/examples/ubuntu/network_manager.h b/libweave/examples/ubuntu/network_manager.h
index 10b413a..e59bc96 100644
--- a/libweave/examples/ubuntu/network_manager.h
+++ b/libweave/examples/ubuntu/network_manager.h
@@ -50,8 +50,8 @@
                     const std::string& passphrase,
                     int pid,
                     base::Time until,
-                    const base::Closure& success_callback,
-                    const base::Callback<void(const Error*)>& error_callback);
+                    const SuccessCallback& success_callback,
+                    const ErrorCallback& error_callback);
   void UpdateNetworkState();
 
   bool force_bootstrapping_{false};
diff --git a/libweave/examples/ubuntu/ssl_stream.cc b/libweave/examples/ubuntu/ssl_stream.cc
index 71d5148..a54578d 100644
--- a/libweave/examples/ubuntu/ssl_stream.cc
+++ b/libweave/examples/ubuntu/ssl_stream.cc
@@ -16,8 +16,8 @@
   CancelPendingOperations();
 }
 
-void SSLStream::RunDelayedTask(const base::Closure& success_callback) {
-  success_callback.Run();
+void SSLStream::RunDelayedTask(const base::Closure& task) {
+  task.Run();
 }
 
 void SSLStream::Read(void* buffer,
diff --git a/libweave/include/weave/error.h b/libweave/include/weave/error.h
index b9f07a5..67f923f 100644
--- a/libweave/include/weave/error.h
+++ b/libweave/include/weave/error.h
@@ -127,7 +127,7 @@
 };
 
 using SuccessCallback = base::Closure;
-using ErrorCallback = base::Callback<void(const Error*)>;
+using ErrorCallback = base::Callback<void(const Error* error)>;
 
 }  // namespace weave
 
diff --git a/libweave/include/weave/stream.h b/libweave/include/weave/stream.h
index 99385a7..f36e113 100644
--- a/libweave/include/weave/stream.h
+++ b/libweave/include/weave/stream.h
@@ -18,7 +18,7 @@
   virtual ~InputStream() = default;
 
   // Callbacks types for Read.
-  using ReadSuccessCallback = base::Callback<void(size_t)>;
+  using ReadSuccessCallback = base::Callback<void(size_t size)>;
 
   // Implementation should return immediately and post either success_callback
   // or error_callback. Caller guarantees that buffet is alive until either of
diff --git a/libweave/include/weave/test/mock_wifi_provider.h b/libweave/include/weave/test/mock_wifi_provider.h
index 1bea0ed..408e0ad 100644
--- a/libweave/include/weave/test/mock_wifi_provider.h
+++ b/libweave/include/weave/test/mock_wifi_provider.h
@@ -20,7 +20,7 @@
                void(const std::string&,
                     const std::string&,
                     const base::Closure&,
-                    const base::Callback<void(const Error*)>&));
+                    const ErrorCallback&));
   MOCK_METHOD1(StartAccessPoint, void(const std::string&));
   MOCK_METHOD0(StopAccessPoint, void());
 };
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc
index 7d01088..03e74c7 100644
--- a/libweave/src/privet/cloud_delegate.cc
+++ b/libweave/src/privet/cloud_delegate.cc
@@ -83,7 +83,7 @@
   void UpdateDeviceInfo(const std::string& name,
                         const std::string& description,
                         const std::string& location,
-                        const base::Closure& success_callback,
+                        const SuccessCallback& success_callback,
                         const ErrorCallback& error_callback) override {
     ErrorPtr error;
     if (!device_->UpdateDeviceInfo(name, description, location, &error))
@@ -159,7 +159,7 @@
 
   void AddCommand(const base::DictionaryValue& command,
                   const UserInfo& user_info,
-                  const SuccessCallback& success_callback,
+                  const CommandSuccessCallback& success_callback,
                   const ErrorCallback& error_callback) override {
     CHECK(user_info.scope() != AuthScope::kNone);
     CHECK_NE(user_info.user_id(), 0u);
@@ -184,7 +184,7 @@
 
   void GetCommand(const std::string& id,
                   const UserInfo& user_info,
-                  const SuccessCallback& success_callback,
+                  const CommandSuccessCallback& success_callback,
                   const ErrorCallback& error_callback) override {
     CHECK(user_info.scope() != AuthScope::kNone);
     ErrorPtr error;
@@ -196,7 +196,7 @@
 
   void CancelCommand(const std::string& id,
                      const UserInfo& user_info,
-                     const SuccessCallback& success_callback,
+                     const CommandSuccessCallback& success_callback,
                      const ErrorCallback& error_callback) override {
     CHECK(user_info.scope() != AuthScope::kNone);
     ErrorPtr error;
@@ -209,7 +209,7 @@
   }
 
   void ListCommands(const UserInfo& user_info,
-                    const SuccessCallback& success_callback,
+                    const CommandSuccessCallback& success_callback,
                     const ErrorCallback& error_callback) override {
     CHECK(user_info.scope() != AuthScope::kNone);
 
diff --git a/libweave/src/privet/cloud_delegate.h b/libweave/src/privet/cloud_delegate.h
index f96da19..0b72a44 100644
--- a/libweave/src/privet/cloud_delegate.h
+++ b/libweave/src/privet/cloud_delegate.h
@@ -36,8 +36,8 @@
   CloudDelegate();
   virtual ~CloudDelegate();
 
-  using SuccessCallback = base::Callback<void(const base::DictionaryValue&)>;
-  using ErrorCallback = base::Callback<void(Error*)>;
+  using CommandSuccessCallback =
+      base::Callback<void(const base::DictionaryValue& commands)>;
 
   class Observer {
    public:
@@ -64,7 +64,7 @@
   virtual void UpdateDeviceInfo(const std::string& name,
                                 const std::string& description,
                                 const std::string& location,
-                                const base::Closure& success_callback,
+                                const SuccessCallback& success_callback,
                                 const ErrorCallback& error_callback) = 0;
 
   // Returns the name of the maker.
@@ -103,24 +103,24 @@
   // Adds command created from the given JSON representation.
   virtual void AddCommand(const base::DictionaryValue& command,
                           const UserInfo& user_info,
-                          const SuccessCallback& success_callback,
+                          const CommandSuccessCallback& success_callback,
                           const ErrorCallback& error_callback) = 0;
 
   // Returns command with the given ID.
   virtual void GetCommand(const std::string& id,
                           const UserInfo& user_info,
-                          const SuccessCallback& success_callback,
+                          const CommandSuccessCallback& success_callback,
                           const ErrorCallback& error_callback) = 0;
 
   // Cancels command with the given ID.
   virtual void CancelCommand(const std::string& id,
                              const UserInfo& user_info,
-                             const SuccessCallback& success_callback,
+                             const CommandSuccessCallback& success_callback,
                              const ErrorCallback& error_callback) = 0;
 
   // Lists commands.
   virtual void ListCommands(const UserInfo& user_info,
-                            const SuccessCallback& success_callback,
+                            const CommandSuccessCallback& success_callback,
                             const ErrorCallback& error_callback) = 0;
 
   void AddObserver(Observer* observer) { observer_list_.AddObserver(observer); }
diff --git a/libweave/src/privet/mock_delegates.h b/libweave/src/privet/mock_delegates.h
index 930d838..8d29a1e 100644
--- a/libweave/src/privet/mock_delegates.h
+++ b/libweave/src/privet/mock_delegates.h
@@ -145,7 +145,7 @@
                void(const std::string&,
                     const std::string&,
                     const std::string&,
-                    const base::Closure&,
+                    const SuccessCallback&,
                     const ErrorCallback&));
   MOCK_CONST_METHOD0(GetOemName, std::string());
   MOCK_CONST_METHOD0(GetModelName, std::string());
@@ -160,21 +160,21 @@
   MOCK_METHOD4(AddCommand,
                void(const base::DictionaryValue&,
                     const UserInfo&,
-                    const SuccessCallback&,
+                    const CommandSuccessCallback&,
                     const ErrorCallback&));
   MOCK_METHOD4(GetCommand,
                void(const std::string&,
                     const UserInfo&,
-                    const SuccessCallback&,
+                    const CommandSuccessCallback&,
                     const ErrorCallback&));
   MOCK_METHOD4(CancelCommand,
                void(const std::string&,
                     const UserInfo&,
-                    const SuccessCallback&,
+                    const CommandSuccessCallback&,
                     const ErrorCallback&));
   MOCK_METHOD3(ListCommands,
                void(const UserInfo&,
-                    const SuccessCallback&,
+                    const CommandSuccessCallback&,
                     const ErrorCallback&));
 
   MockCloudDelegate() {
diff --git a/libweave/src/privet/privet_handler.cc b/libweave/src/privet/privet_handler.cc
index 63cb9b0..b91d8e3 100644
--- a/libweave/src/privet/privet_handler.cc
+++ b/libweave/src/privet/privet_handler.cc
@@ -212,7 +212,7 @@
 }
 
 void OnCommandRequestFailed(const PrivetHandler::RequestCallback& callback,
-                            Error* error) {
+                            const Error* error) {
   if (error->HasError("gcd", "unknown_command")) {
     ErrorPtr new_error = error->Clone();
     Error::AddTo(&new_error, FROM_HERE, errors::kDomain, errors::kNotFound,
