More refactoring and general tidy-up

Refactoring base classes (eventually to be deprecated), names make more
sense.