completed model refactor to push down logic