refactored ApiWatcher