base classes needed to complete the task