Add button listener that is aware of changed states

Did what that said, lol