Privitizing _addDataset _removeDataset

overriding the public api method allows for _addDataset to essentially be a private blackbox that's implemented once in the superclass.  From my perspective, the check should happen as far up the hierarchy chain as possible and that is the public endpoint