Should there be some discussion of caching and the general strategy used in `transformations.py`?  Without looking in to the code someone might build their own caching for a new frame.