The CSV reader lets you specify column_types, but this is an unordered_map of column name and type. Why not accept a Schema instead? Isn't that essentially an ordered map? Seems that if you took a Schema, some of the validation of what's being passed in would already have been handled. Plus, I suspect that the Datasets project will want to do even more with passing a Schema (e.g. selecting a subset of columns).