rewrite Watcher into FileChangeEmitter
start to rewrite unit test module