Seriously. You can add any view to any other view. And, by doing so the subview will inherit or be affected by the basic properties of its superview (like opacity, position, rotation, etc.)
let circle = Circle(center: canvas.center, radius: 150)
let C4 = TextShape(text: "C4")!
C4.center = circle.bounds.center