use #on_value.

This way we don't have to run a loop in the background
that only updates every second.