Refactor property observer