auto watch for prop changes