+6. Instead of storing a basis multiplication matrix, just make
+ product_on_basis() a cached method and manually cache its
+ entries. The cython cached method lookup should be faster than a
+ python-based matrix lookup anyway.
+
+7. What the ever-loving fuck is this shit?
+
+ sage: O = Octonions(QQ)
+ sage: e0 = O.monomial(0)
+ sage: e0*[[[[]]]]
+ [[[[]]]]*e0
+
+8. Factor out a class for matrices with real embeddings (i.e. not the
+ octonions).
+
+9. In fact, could my octonion matrix algebra be generalized for any
+ algebra of matrices over the reals whose entries are not real? Then
+ we wouldn't need real embeddings at all. They might even be fricking
+ vector spaces if I did that...
+
+10. Add HurwitzMatrixAlgebra subclass between MatrixAlgebra and
+ OctonionMatrixAlgebra.