I think having the generic _read function read all features is probably the best option; it's a nice helper for "one-of hack"-type applications, etc. The documentation should probably state that using _read_sparse with the features you want explicitly specified is preferred, to prevent your application from getting slower with time due to features it doesn't use.