digraph OL { fontname=arial; node [fontname=arial, shape=box, style=filled, color=grey80]; edge [fontname=arial, fontsize=12, dir=both]; { rank=same; OL1; OL2 } { rank=same; IKC; PS } Stem; OL1 [ label="Object layer" ]; OL2 [ label="Other object layer" ]; subgraph cluster0 { bgcolor=grey90; A [label="Addressing" color=orange ]; R [label="Routing", color=orange ]; M [label="Monitoring", color=orange ]; POE [ label="POE" ]; POE -> Wheels; POE -> Selects; subgraph cluster2 { POE -> A [ label="Hooks", color=orange]; POE -> R [ label="Hooks", color=orange]; POE -> M [ label="Hooks", color=orange]; } } POE2 [ label="Remote kernel"]; PS [ label="Stem-compatibility"]; OL2 -> POE; OL1 -> POE; POE -> IKC -> POE2; POE -> PS -> Stem; }