Abstractions for Fault-Tolerance