Move the general base class to its own file