Changed usage functions to be virtual functions