diff --git a/libweave/examples/ubuntu/README b/libweave/examples/ubuntu/README
index 063d8f4..af67036 100644
--- a/libweave/examples/ubuntu/README
+++ b/libweave/examples/ubuntu/README
@@ -84,7 +84,8 @@
         Enter request body:
         {
           "deviceId": "0f8a5ff5-1ef0-ec39-f9d8-66d1caeb9e3d",
-          "name": "_greeter._greet"
+          "name": "_greeter._greet",
+          "parameters": { "_name": "cloud user" }
         }
    "Send the request", you command will be "queued" as its "state"
 
diff --git a/libweave/examples/ubuntu/file_config_store.cc b/libweave/examples/ubuntu/file_config_store.cc
index 8853bcf..66dd80f 100644
--- a/libweave/examples/ubuntu/file_config_store.cc
+++ b/libweave/examples/ubuntu/file_config_store.cc
@@ -17,6 +17,7 @@
 
 const char kSettingsDir[] = "/var/lib/weave/";
 const char kSettingsPath[] = "/var/lib/weave/weave_settings.json";
+const char kCategory[] = "example";
 
 FileConfigStore::FileConfigStore(bool disable_security)
     : disable_security_{disable_security} {}
@@ -60,7 +61,7 @@
 }
 
 std::map<std::string, std::string> FileConfigStore::LoadCommandDefs() {
-  return {{"example", R"({
+  return {{kCategory, R"({
     "base": {
       "updateBaseConfiguration": {},
       "identify": {},
@@ -77,11 +78,11 @@
 }
 
 std::map<std::string, std::string> FileConfigStore::LoadStateDefs() {
-  return {};
+  return {{kCategory, R"({"_greeter": {"_greetings_counter":"integer"}})"}};
 }
 
 std::vector<std::string> FileConfigStore::LoadStateDefaults() {
-  return {};
+  return {R"({"_greeter": {"_greetings_counter": 0}})"};
 }
 
 }  // namespace examples
diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index 85fbe3b..11c3fac 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -28,7 +28,7 @@
 
 class CommandHandler {
  public:
-  explicit CommandHandler(weave::Device* device) {
+  explicit CommandHandler(weave::Device* device) : device_{device} {
     device->GetCommands()->AddOnCommandAddedCallback(base::Bind(
         &CommandHandler::OnNewCommand, weak_ptr_factory_.GetWeakPtr()));
   }
@@ -38,22 +38,34 @@
     LOG(INFO) << "received command: " << cmd->GetName();
     if (cmd->GetName() == "_greeter._greet") {
       std::string name;
-      cmd->GetParameters()->GetString("_name", &name);
-      if (name.empty()) {
-        name = cmd->GetOrigin() == weave::CommandOrigin::kCloud ? "cloud user"
-                                                                : "local user";
-      }
-      LOG(INFO) << "vendor _greeter._greet command: in progress";
+      if (!cmd->GetParameters()->GetString("_name", &name))
+        name = "anonymous";
+
+      LOG(INFO) << cmd->GetName() << " command in progress";
       cmd->SetProgress(base::DictionaryValue{}, nullptr);
+
       base::DictionaryValue result;
       result.SetString("_greeting", "Hello " + name);
       cmd->SetResults(result, nullptr);
-      LOG(INFO) << "vendor _greeter._greet command: finished";
+      LOG(INFO) << cmd->GetName() << " command finished: " << result;
+
+      base::DictionaryValue state;
+      state.SetIntegerWithoutPathExpansion("_greeter._greetings_counter",
+                                           ++counter_);
+      device_->GetState()->SetProperties(state, nullptr);
+
+      LOG(INFO) << "New state: "
+                << *device_->GetState()->GetStateValuesAsJson();
+
       cmd->Done();
     } else {
       LOG(INFO) << "unimplemented command: ignored";
     }
   }
+
+  weave::Device* device_{nullptr};
+  int counter_{0};
+
   base::WeakPtrFactory<CommandHandler> weak_ptr_factory_{this};
 };
 }
