starting model refactor