It always seems strange to me that Mathematica seems to be having difficulties with non-communicative multiplications.
I can use the horrible TensorExpand (or Distribute more powerful) to get
In: a. (B.c + c.b) // TensorExpand Out: a.b.c + a.c.b
How can I do the opposite?
In: a.b.c + a.c.b // TensorFactorise Out: a. (B.c + c.b)