Refactored shape properties system