refactor and implement watching