i think this should be the generic class