begin watch refactor