I think that the really important part of all templates is that: - They operate on slices of `ScalarExpression` objects - They use the `ConcretizeExpression` method at the end to handle things like (Demotion from Matrix objects to Vector objects).