try to make the observable setup more readable
remove an unnecessary filter
add make_wrapped helper
design a delay constructor
use delay instead of timer directly
move delay to a header
move quit handling out of main