do Do is a virtual device of course, which can run in any Z-device. do.every (duration) do.atFrequency (freq in Hz) do.at (date,time) do.nTimes (count) do.onSchedule (list of times) Note that we can have lots of schedules going on at once, EG: do.onSchedule(list) -> various stuff -> lightSwitch.value do.onSchedule(different list) -> other various stuff -> door.lock Note that these do's will run in the Z-cpu of the first real (physical) device in the chain. The chain, from that point on, is self-sufficient and could be disconnected from the network, as mentioned before. No further attention is needed from the host and no network traffic occurs outside of each chain. do.stop this stops the rest of the command sequence whenever a non-zero is routed to it. If already in a do.xxx loop, this only stops one iteration of the command. EG: do.every(10 sec) : waterLevelSensor.value -> math.ifGreaterThan(3) -> do.stop -> valve.open This keeps the valve open whenever the level is less then 3, but opens it back again in 10 seconds if the level is now above 3. do.stop is often combined in macros, eg: define waterLevelSensor.IsLessThan(v) : waterLevelSensor.value -> math.ifGreaterThan(v) -> do.stop do.etc We can invent lots more. And use macros with math to do.stop on various conditions. I know I said I am not trying to create a sophisticated language, with control structures and such, but do and do.stop give us a kind of limited structure, while still keeping to the linear model of dev1.f1 -> dev2.f2 -> dev3.f3 -> etc.