synchronous update