made update virtual because consistent