OK yep that's exactly what I thought. Then I would vote for your `out` argument proposal, which should be set to `data` on `PCAModel` for avoiding having two copies of a very large array. Note that in `PCAModel` we do not care about the variable `data` after `principal_component_decomposition()` has been executed.