more refactoring using models/concerns