compact usage of respond()
add tests for unobserve
handle null-triggered buttons (+tests)