I think it would improve clarity to have a comment here saying that the elements of `self.nodes` are expected to be either `Shape` or `Scene`. Right now, you have to read `draw` to understand what types it contains.