refactoring + start implementing watch feature