I think the api would be cleanerif you make use of *args and *kwargs in useful ways. I never liked having to pass in tuples of information (i.e. `(I, 0)`, btw technically that should be a tuple and not a list). You could imagine all of these working:

```python
frame1 = VisualizationFrame('frame1', I, O, shape=mesh_shape1)
frame1 = VisualizationFrame('frame1', rigid_body, shape=mesh_shape1)
frame1 = VisualizationFrame('frame1', I, particle, shape=mesh_shape1)
```

The `__init__` method could be "smart" enough to know what it is getting.