linear update