Abstract out into a model-like layer.