creating base class to inherit from, still working out constraints