Completed model and repo design. Naughty, not tdd.