Would it be possible to introduce a grouping mechanism and allow grouping elements inside visible and invisible rectangles? I suppose that the current rendering / routing logic in the canvas can be applied to each individual rectangle area without much modification. The remaining work would be to figure out how to layout and link in between the rectangle areas.