add keyword virtual