method update becomes virtual