Component-based adaptation is a novel approach for adapting applications to the limited availability of resources such as bandwidth and power in mobile environments. Component-based adaptation works by calling on the run-time APIs that modern component-based applications export. Because source code modification is not necessary, even proprietary applications such as productivity tools from Microsoft's Office suite can be adapted. Moreover, new adaptive behavior can be added to applications long after they have been deployed. Even if source code is available, development time for implementing adaptation is much reduced. In addition, the ease with which adaptations can be implemented in this framework has enabled us to explore new avenues in adaptation. First, we have developed the first adaptive system to support document editing and collaboration over bandwidth-limited links. The key insight gathered from this work is that support for adaptation is orthogonal to concurrency and consistency mechanisms, and therefore can be integrated easily in existing systems. Second, we have developed a hierarchical adaptive transmission scheduler to support coordinated multi-application adaptation. We have demonstrated the effectiveness of component-based adaptation by implementing a system called Puppeteer, which has allowed us to adapt widely deployed applications, such as productivity tools from Microsoft's Office suite and Sun Microsystems' OpenOffice suite. Although the APIs of these applications impose some limitations, we have been able to implement a wide range of adaptation policies for reading, editing, and collaboration, with modest implementation effort and good performance results.