use explicit, generic return type