refactored all but watching to remove testing code duplication