refactor out fragment caching
add model validations