Failures are difficult, yet our applications tend to fail more than we would want them to. More so, failures in the presence of side-effects are specially dangerous, because we need to somehow revert the changes we’ve applied, but before we do that we need to know how much of the changes got applied, and what the correct state should be.