Split model off of the controller

Coincidentally I figured out what `yield*` can do for me