Why can not you subclass from `TensExpr` or just reuse `TensExpr`. The proliferation of new `Add` and `Mul` seems very dangerous to me (for examples, this almost always requires reimplementation of stuff like `flatten`, etc)