add correct virual implementation