implement Object.observe