Basic client-side update logic