Changed the base class to better represent how it should function