 public:
   virtual int run(void* buf, size_t size) 
   {
-    trace << (const char*) buf << endl;
+    trace << PSTR("Action::Restart:") << (const char*) buf << endl;
     return (strlen_P((const char*) buf));
   }
 };

REGISTRY_END(CM)

// Status variables and registry
REGISTRY_BLOB_VAR(uint16_t, vcc, "battery status (mV)", 0, true)
REGISTRY_BLOB_VAR(uint8_t, load, "processor load (%)", -1, true)
REGISTRY_BLOB_VAR(uint16_t, errors, "error count", 0, false)

REGISTRY_BEGIN(STATUS, "status") 	// 2
  REGISTRY_BLOB_ITEM(vcc)		// 2.0
  REGISTRY_BLOB_ITEM(load)		// 2.1
  REGISTRY_BLOB_ITEM(errors)		// 2.2
REGISTRY_END(STATUS)

  ASSERT(network == 0xbeef);
  trace << hex << network << endl;

  // Access 2.0 blob sensor data
  path[0] = 2; 
  path[1] = 0; 
  item = reg.lookup(path, sizeof(path));
  trace << item << endl;
  blob = Registry::to_blob(item);
  ASSERT(blob != NULL);
  sensor_t sensor;
  ASSERT(reg.get_value(blob, &sensor, sizeof(sensor)) == sizeof(sensor));
  ASSERT(!reg.set_value<sensor_t>(blob, &sensor));
  trace << sensor.temperature << PSTR(" C") << endl;
  trace << sensor.battery << PSTR(" mV") << endl;

  // Access 2.1 blob processor load %
  path[0] = 2; 
