CDs can be thought of as a mechanism to support fine-grained, hierarchical, application-directed, uncoordinated checkpoint and restore. Containment Domains (CDs) were created to allow an application to recover in the face of various types of component failures, including hard (e.g. persistent) and soft (e.g. transient) hardware failures, transient software failures, and complete node failures.