you dont need to implement this function, if you make it pure virtual