Considering the CoordSys knows its number of dimensions, it could just initialise BaseScalar and Vector instances on the fly using 'yield'. In any case, some iterative methods would be really useful.