Conversation
Only in Obj-C. Still has (smaller) cost, though: if a class uses a bag-of-functions singleton, it's hard-coupled to those impls. In examining interaction graphs, though, depth is important. e.g. is the controller responsible for orchestrating interactions? Similarly in a dataflow network: who knows the topology? Each piece knows next receiver? Centralized orchestrator?