Growing software complexity is an increasing challenge for the software development of modern embedded systems. A classical strategy for taming the software complexity is to partition system behaviors into different operational modes specified at design time. Such a multi-mode system can change behavior by switching between modes at runtime. Component-Based Software Engineering (CBSE) is a complementary approach to the software development of complex systems that fosters reuse of independently developed software components. CBSE and the multi-mode approach are fundamentally conflicting in that component-based development conceptually is a bottom-up approach, whereas partitioning systems into operational modes is a topdown approach. In this report we show that it is possible to combine and integrate these two fundamentally conflicting approaches. The key to simultaneously benefitting from the advantages of both approaches lies in the introduction of a hierarchical mode concept that provides a conceptual linkage between the bottom-up component-based approach and system level modes. As a result, systems including modes can be developed from reusable mode-aware components in the modeling phase. The conceptual drawback of the approach—the need for extensive message exchange between components to coordinate mode switches—is eliminated by an algorithm that collapses the component hierarchy and thereby eliminates the need for inter-component coordination. As this algorithm is used from the design to implementation level (“compilation”), the CBSE design flexibility can be combined with efficiently implemented mode handling. At the more specific level, this report presents (1) a mode mapping mechanism which formally specifies the mode relation between composable multi-mode components, (2) a mode transformation technique that transforms component modes to system-wide modes to achieve efficient implementation, and (3) a prototype tool that implements the mode mapping mechanism and mode transformation technique.