With the acceleration of technological development we are reaching the point where our systems and their user interfaces become to some degree outdated ‘legacy systems’ as soon as they are released. This raises the question of how can we maintain, extend, override, and adapt these systems while preserving what people depend on in them? In this paper we describe an approach for dynamically restructuring user interfaces into a set of communicating processes that 1) provide methods for changing their appearance, behavior, and state; and 2) report their proposed state changes so that other processes may override their actions in updating themselves to a new state. We do this for both new and wrapped legacy user interface components, thereby allowing us to repurpose user interfaces for our evolving needs. We describe how this approach has been successfully used in rapidly creating and deploying interfaces that repurpose content for new appearances and behaviors.