Since the CLR is message-driven, it presents some challenges in efficient implementation of programming paradigms such as message passing that use blocking receives. Charm++, an object-based message-driven language provides encapsulation and object-virtualization necessary for large scale component software development, and being a close match to the underlying CLR, can be efficiently implemented. However, a Charm++ component is simply a set of computations attached to input ports, and expression of intra-component control-flow is complicated. Therefore, for simplifying development of message-driven software components using Charm++, one needs to simplify expression for intra-component control-flow. One may express the control-flow within a component using threads but it adds unacceptable overheads in the form of thread creation, synchronization and context switching costs. This is especially apparent in components with small grainsize. To express control-flow within components, without forsaking efficiency and the ability to interleave execution of different components within a single process, we have developed Structured Dagger, a coordination mechanism for message-driven computations. Structured dagger provides structured constructs for expressing dependencies between computations of a component. A translator translates structured dagger code into message-driven code that implements the control-flow. It is described in detail in chapter 4.