abstract update