updating with guarantees