base work for updating