fixed base class and tested all methods to ensure they work as entended