I am fine with supporting only `angle` as a parameter and moving support for a more general transformation to an `AffineTransformation` class. The ultimate goal of this PR is to be able to support such class.

As for the `optional` attribute of `Parameter`, I don't see it as oddity. There are other models that can be defined in terms of alternative parameters. But I agree that other designs of `Parameter` may make this unnecessary.