class InitialParametersProvider {

    public Parameters initialParameters() {
        Capabilities capabilities = capabilitiesOperator.getCapabilities();

        Parameters parameters = combineParameters(asList(
                pictureSizeParameters(capabilities),
                previewSizeParameters(capabilities),
                focusModeParameters(capabilities),
                flashModeParameters(capabilities),
                previewFpsRange(capabilities),
                sensorSensitivity(capabilities),
                jpegQuality()
        ));

        parametersValidator.validate(parameters);

        return parameters;
    }

    public  InitialParametersProvider(CapabilitiesOperator capabilitiesOperator,
                                     SelectorFunction<Collection<Size>, Size> photoSizeSelector,
                                     SelectorFunction<Collection<Size>, Size> previewSizeSelector,
                                     SelectorFunction<Collection<FocusMode>, FocusMode> focusModeSelector,
                                     SelectorFunction<Collection<Flash>, Flash> flashSelector,
                                     SelectorFunction<Collection<Range<Integer>>, Range<Integer>> previewFpsRangeSelector,
                                     SelectorFunction<Range<Integer>, Integer> sensorSensitivitySelector,
                                     Integer jpegQuality,
                                     InitialParametersValidator parametersValidator);

}