removed need for virtual evaluate function