more refactoring for skinny controller fat model