Constructing complex objects can be rather arcane right now. For example, if you want a Morse potential operator, you have to supply the representation, dissociation energy, range parameter and the equilibrium distance. That is four parameters that you have to supply the constructor in (for the user) an arbitrary order that you have to look up.
While this should be less of an issue for the python interface (better tool support, and the parameters have names), it can be annoying when using the C++ classes directly. You can easily mix up two parameters by accident and get wrong results (happened even to me).
This situation should be improved. There should be some mechanism that makes it hard to accidentally mix up different parameters, and which makes the code to setup a calculation more readable.
One solution is the builder pattern; however, the overhead is substantial enough that there needs to be a framework to do that for us. An alternative would be to allow partially constructed objects or objects with default values; these also need some thinking.
Diff: