1. Add references and start citing them. 2. Profile (and fix?) any remaining slow operations. 3. When we take a Cartesian product involving a trivial algebra, we could easily cache the identity and charpoly coefficients using the nontrivial factor. On the other hand, it's nice that we can test out some alternate code paths... 4. Can we hit "x" with the deortho matrix and delegate to the _rational_algebra to speed up minimal_polynomial? 5. In CartesianProductEJA we already know the multiplication table and inner product matrix. Refactor things until it's no longer necessary to duplicate that work. 6. Eliminate the matrix_space() override in CartesianProductEJA.