Even with some of the simplifications, each branch of this `if saved/failed` is pretty big. But the success case is handling a few different cases, so the only suggestion there might be to move the meat of this block to a `update_success` method.