In my mind, we would just always pass ALL the params as **params to anything (i.e. the `OscillationService` constructor, the `get_osc_maps` function and the `get_osc_flux` function. By only using the named arguments, this would automatically pick out the ones that are needed. If initialized to `None`, the code will fail automatically if one of the arguments is not given (i.e. check for the error where it matters, not before).