I think what you're suggesting here makes sense.  Perhaps we could make a subclass of `Model` called `ModelModifier` (that, at the moment, would be identical to `Model`) to indicate that `ShiftModel` is intended to apply to other models, but is not really a model to be directly fitted to data on its own.