added bidirectional communciation using Object.observe