@fitze , @moorepants I think it would be more helpful in defining VisualizationFrames, rather than from Scene class.
Here we can directly do ..

A = Shape().generate_visualization_frame(I,O)

aand we have a shape and a vframe in place, also since we dont explicitly need shape class to pass to Scene. we can directly pass A
Scene.add_visualization_frame(A)