Derived adaptors and drivers

Refactoring of Adaptor and Driver into proper base classes.