Currently, working with ExpData and ReturnData is less convenient than it could be, because only always needs the Model to get the parameter/observable/... IDs. It would be good to include the relevant IDs in each of those objects.
We currently have an ugly hack for attaching parameters to ReturnData in Python for "full" reporting mode, but this should be changed.
The IDs are currently stored in free std::arrays. It shouldn't be too hard to attach them to ExpData and ReturnData in a memory-efficient way. As they should be immutable anyway, there is no need for copying.