server-side update