wrote some of the base classes