Models::Base rather than Model. some refactoring, cacheModel makes it easier to override