contract SystemParameters is ISystemParameters {
    address private oracleFeeRecipient;

    IWhitelist private systemParamsWhitelist;

    constructor(IWhitelist _systemParamsWhitelist) public {
        systemParamsWhitelist = _systemParamsWhitelist;
    }

    /// @notice Throws if the caller is not a system params admin.
    modifier onlySystemParamsAdmin() {
        require(
            systemParamsWhitelist.getWhitelisted(msg.sender),
            "NOT_SYSTEM_PARAM_ADMIN"
        );
        _;
    }

    /// @notice Sets the oracle fee recipient. Only callable by SystemParams admins.
    /// @param newOracleFeeRecipient The new oracle fee recipient address
    function setNewOracleFeeRecipient(address newOracleFeeRecipient)
        public
        onlySystemParamsAdmin
    {
        oracleFeeRecipient = newOracleFeeRecipient;
    }

    function getOracleFeeRecipient() public view returns (address) {
        return oracleFeeRecipient;
    }
}
/// @title SystemParameters
/// @author Julian Wilson <julian@nextgenbt.com>
/// @notice Stores system parameters.
function setNewOracleFeeRecipient(address newOracleFeeRecipient)
    public
    onlySystemParamsAdmin
{
    oracleFeeRecipient = newOracleFeeRecipient;
}

/// @notice Sets the oracle fee recipient. Only callable by SystemParams admins.
/// @param newOracleFeeRecipient The new oracle fee recipient address