There's a lot of code around invocation that perhaps we can simplify. Also, is there a compelling reason to call components with `Node`, or should we always prefer `TNode`?