If we don't have nested vframes then you will have to associate every shape that you want to be attached to one reference frame. Like this:

```python
vframe1 = VisualizationFrame(ref1, point1, Cube(...))
vframe2 = VisualizationFrame(ref1, point2, Cylinder(...))
vframe3 = VisualizationFrame(ref1, point3, Mesh(...))
vframe4 = VisualizationFrame(ref1, point4, Sphere(...))
```

Note that in general the points for each shape are almost always going to be different for each vframe. This is because you what the shapes to rotate together but you want them fixed in the reference frame with respect to one another and the shapes are unlikely to use the same point (i.e. lie on top of one another).

So it seems to me that having child frames can alleviate two things: 1. typing ref1 over and over again for frames with lots of shapes and 2. not having to explicitly have multiple vframe objects. I could imagine something like:

```python
# the main vframe
vframe1 = VisualizationFrame(ref1, point1, Cube(...))
vframe1.add(point2, Cylinder(...))
vframe1.add(point3, Mesh(...))
vframe1.add(point4, Sphere(...))
```

Now `vframe1` stores all of these new shapes/points as sub-vframes that all share the same reference frame. When you then generate your json file you can loop through these to pull out the needed data.

@fitze do you have any comments on this? As it was your idea originally.