All you need are models... (take 2)

Implemented feedback from #7