decouple button handling