I suspect the class hierarchy has been made this way partly to match Embedded driver. I am still thinking why the Embedded driver does this..
I don't know if it is relevant but most of the implementation in the client code uses ClientDataSource instances rather than the base class - in fact, the base class itself is never really used at all. I have a feeling there is some legacy leftover here.
I am going to go through the client code and switch the usages to the base class (which declares the methods being used) and then change the hierarchy here as proposed.
-- Jeremy
