clean abstraction for models and controllers now