refactoring branch to clean up model validation
refactoring branch to clean up model validation part 2