This thesis describes a technique for designing systems which can adapt to patterns of faults as they occur. Such adaptively dependable systems are especially critical in isolated systems which must maintain long-term fault tolerance and in open systems where future system configurations are unknown. Through the use of a reflective language structure, we support dynamic installation and composition of fault-tolerance protocols. These protocols are constructed as operations on messages to allow reuse and transparency: applications and protocol may be developed separately without prior knowledge of their future composition. We have implemented our techniques in the language Screed which runs on the actor platform Broadway. Details of the implementation are also described.