A `Surface` type could represent a volatility surface, for example. It would simply by a type with a `space` dimension (e.g. strikes, spot) and a `time` dimension (e.g. dates, seconds, whatever). Possibly implement as a collection of `Curve`s, with aligned initial/terminal timestamps.