refactor watcher to use an option object
ensure user watchers are triggered after directive updates