I agree but think that's a trade-off with the "flat is better than nested" rule: we don't want to introduce a complex adapter pattern as a mandatory requirement for the use of this class. Although I think I had thought about a clean way to reduce the public API without removing features / extensibility nor efficiency while discussing with @larsmans somewhere else. I will have to dig through my emails...

Anyway this PR is useful with the existing API and logic of the current codebase. Also I don't think this class will need to grow any further.