In getClientDataSetsWithDetails we have an awkward indirection from getClientDataSets and then using the pdpRailId of each data set to call railToDataSet() with it so we can then query the PDPVerifier about a data set. It's pretty smelly.
I notice we have a clientDataSets on the view contract which just returns IDs and think maybe we should just start with that and then enhance each one in parallel. Maybe that will smell less.