working on generic base class