[ update ] button handling logic