refactor watch