Transactions can be used to prevent faults. Multiple steps in a process can be bundled together in a transaction, so that if one step fails then the entire bundle can be undone. This approach can prevent data from being saved in an incorrect state, or prevent race conditions when more than one process attempts to access or change the same data.