In component-based systems, fault-tolerance concerns are typically handled by manually programmed fault containers. The purpose of fault containers is to prevent error propagation across component boundaries by means of redundant service providers. However, manually programmed fault containers are often subject to evolutionary pressure when components change. In this paper we present a meta-level architecture that eliminates the need for manually programmed fault containers. The meta-level achieves fault tolerance using dynamic fault containers, thereby reducing evolutionary pressure. We present an implementation and evaluation of our approach in context of the NetBeans Rich Client Platform. Keywords fault tolerance, software evolution