Refactor to clean up responsiblities toward model