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

Implemented feedback from Issue #8 . Ready for review for @codesliced .