validations defined separately for easy upgrade path