refactor - inject factory, not model