from current cake pattern to one that allows message passing between components