should we have `override val fields: Fields = Fields.ALL` to keep the default being get all the fields?

If not, should we make `def fields: Fields` abstract and be more consistent?

I actually prefer the second: users should explicitly declare the fields in all cases.