Valve We would provide (sell) many sizes and shapes of Z-valves, eg, small diameter like for a water dispenser, larger for garden hoses, etc, and with various threads and connectors. The base function is: valve.open (percent) Almost all the rest would be macros based on valve.open. Examples: knob.value_ifChanged -> valve.open this is the same as do.every(50ms) : knob.value -> math.stopIfNoChange -> valve.open This runs forever now, with the knob controlling the valve. waterSensor.ifLevelLessThan(3) -> valve.open This keeps the water level at exactly 3. knob.value -> waterSensor.controlValveToKeepLevelConstant -> valve.open Here, the knob (0 to 100) determines the water level we want. The controlValveToKeepLevelConstant is a simple macro with math.ifLessThan, etc. The result is that the valve when over the desired level, closes when below, and the knob determines what is the desired level. The code in our Z-valve could also work with internal sensors to do things like automatically increase its opening in cold weather when the fluid flowing through it became more viscous. Or slow its motor down when near its target value, so as not to overshoot. Anything, any level of sophistication, is possible.