listens and broadcast changes