.refactor the base class