yes, maybe template's interpolate method could return an intermediate object, and we could call "asString" and "asFragment" on it.

I don't know how much template is used already, maybe it's easy to do it in a separate bug first.