WIP!!! starting to write a generic base class etc.