Refactor Property class