Refactoring property definition handling to support array option, and anonymous property types