fixed ButtonListener's scope