diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index ff0d450..179c5d3 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -51,7 +51,7 @@
       "_greeter": {
         "_greet": {
           "minimalRole": "user",
-          "parameters": { "_name": "string", "_count": "integer"},
+          "parameters": { "_name": "string", "_count": {"minimum": 1, "maximum": 100}},
           "progress": { "_todo": "integer"},
           "results": { "_greeting": "string" }
         }
@@ -92,10 +92,15 @@
       return;
 
     std::string name;
-    if (!cmd->GetParameters()->GetString("_name", &name))
-      name = "anonymous";
+    if (!cmd->GetParameters()->GetString("_name", &name)) {
+      weave::ErrorPtr error;
+      weave::Error::AddTo(&error, FROM_HERE, "example",
+                          "invalid_parameter_value", "Name is missing");
+      cmd->Abort(error.get(), nullptr);
+      return;
+    }
 
-    if (todo > 0) {
+    if (todo-- > 0) {
       LOG(INFO) << "Hello " << name;
 
       base::DictionaryValue progress;
@@ -107,7 +112,7 @@
       device_->SetStateProperties(state, nullptr);
     }
 
-    if (--todo > 0) {
+    if (todo > 0) {
       task_runner_->PostDelayedTask(
           FROM_HERE, base::Bind(&CommandHandler::DoGreet,
                                 weak_ptr_factory_.GetWeakPtr(), command, todo),
diff --git a/libweave/src/commands/cloud_command_proxy.cc b/libweave/src/commands/cloud_command_proxy.cc
index 9f6ada3..931e3e4 100644
--- a/libweave/src/commands/cloud_command_proxy.cc
+++ b/libweave/src/commands/cloud_command_proxy.cc
@@ -12,6 +12,7 @@
 #include "src/commands/prop_constraints.h"
 #include "src/commands/prop_types.h"
 #include "src/commands/schema_constants.h"
+#include "src/utils.h"
 
 namespace weave {
 
@@ -32,6 +33,15 @@
   observer_.Add(command_instance);
 }
 
+void CloudCommandProxy::OnErrorChanged() {
+  std::unique_ptr<base::DictionaryValue> patch{new base::DictionaryValue};
+  patch->Set(commands::attributes::kCommand_Error,
+             command_instance_->GetError()
+                 ? ErrorInfoToJson(*command_instance_->GetError()).release()
+                 : base::Value::CreateNullValue().release());
+  QueueCommandUpdate(std::move(patch));
+}
+
 void CloudCommandProxy::OnResultsChanged() {
   std::unique_ptr<base::DictionaryValue> patch{new base::DictionaryValue};
   patch->Set(commands::attributes::kCommand_Results,
diff --git a/libweave/src/commands/cloud_command_proxy.h b/libweave/src/commands/cloud_command_proxy.h
index 711befa..12432df 100644
--- a/libweave/src/commands/cloud_command_proxy.h
+++ b/libweave/src/commands/cloud_command_proxy.h
@@ -39,10 +39,11 @@
   ~CloudCommandProxy() override = default;
 
   // CommandProxyInterface implementation/overloads.
+  void OnCommandDestroyed() override;
+  void OnErrorChanged() override;
+  void OnProgressChanged() override;
   void OnResultsChanged() override;
   void OnStatusChanged() override;
-  void OnProgressChanged() override;
-  void OnCommandDestroyed() override;
 
  private:
   using UpdateID = StateChangeQueueInterface::UpdateID;
diff --git a/libweave/src/commands/command_instance.cc b/libweave/src/commands/command_instance.cc
index 4701bb6..e15b1b7 100644
--- a/libweave/src/commands/command_instance.cc
+++ b/libweave/src/commands/command_instance.cc
@@ -159,6 +159,7 @@
 
 bool CommandInstance::SetError(const Error* command_error, ErrorPtr* error) {
   error_ = command_error ? command_error->Clone() : nullptr;
+  FOR_EACH_OBSERVER(Observer, observers_, OnErrorChanged());
   return SetStatus(CommandStatus::kError, error);
 }
 
@@ -296,6 +297,7 @@
 
 bool CommandInstance::Abort(const Error* command_error, ErrorPtr* error) {
   error_ = command_error ? command_error->Clone() : nullptr;
+  FOR_EACH_OBSERVER(Observer, observers_, OnErrorChanged());
   bool result = SetStatus(CommandStatus::kAborted, error);
   RemoveFromQueue();
   // The command will be destroyed after that, so do not access any members.
diff --git a/libweave/src/commands/command_instance.h b/libweave/src/commands/command_instance.h
index e8a838d..843087c 100644
--- a/libweave/src/commands/command_instance.h
+++ b/libweave/src/commands/command_instance.h
@@ -33,10 +33,11 @@
  public:
   class Observer {
    public:
+    virtual void OnCommandDestroyed() = 0;
+    virtual void OnErrorChanged() = 0;
+    virtual void OnProgressChanged() = 0;
     virtual void OnResultsChanged() = 0;
     virtual void OnStatusChanged() = 0;
-    virtual void OnProgressChanged() = 0;
-    virtual void OnCommandDestroyed() = 0;
 
    protected:
     virtual ~Observer() = default;
