implement provider's update operation