abstract update resource