The first part--"depending on the base class models treat parameters in a different way"--I agree with. The second part I'm not so sure.  I don't know what you mean by a "ParameterDescriptor".   `Parameter` is already a descriptor and I see the point in throwing on more classes.  Maybe one thing that would improve flexibility and simply the code is provide an internally used interface whereby individual model types can inform parameter instances bound to a model how to access the actual parameter *values* stored on the model.  But I still feel like making the `Parameter` instances themselves store the value is asking for trouble.  I still see the `Parameter` interface as merely an API convenience, and not something that should be intrinsic to the data models that individual `Model` types use to store their parameters.

In other words, I feel like a `Model` should be responsible for handling its own data.  Not some other extra class.