implement button handling