added watcher interface