added on_update abstract