update strategy abstraction