def METHOD_NAME(spc, thermo0, thermo_class=NASA, solvent_name=''):
    """
    Converts via Wilhoit into required `thermo_class` and sets `E0`.
    Resulting thermo is returned.
    """
    thermo = None
    # Always convert to Wilhoit so we can compute E0
    if isinstance(thermo0, Wilhoit):
        wilhoit = thermo0
    elif isinstance(thermo0, ThermoData):
        wilhoit = thermo0.to_wilhoit(B=1000.)
    else:
        wilhoit = thermo0.to_wilhoit()
    # Add on solvation correction
    solvation_database = get_db('solvation')
    if not solvent_name or solvation_database is None:
        logging.debug('Solvent database or solvent_name not found. Solvent effect was not utilized')
        solvent_data = None
    else:
        solvent_data = solvation_database.get_solvent_data(solvent_name)
    if solvent_data and not "Liquid thermo library" in thermo0.comment:
        solvation_database = get_db('solvation')
        solute_data = solvation_database.get_solute_data(spc)
        solvation_correction = solvation_database.get_solvation_correction(solute_data, solvent_data)
        # correction is added to the entropy and enthalpy
        wilhoit.S0.value_si = (wilhoit.S0.value_si + solvation_correction.entropy)
        wilhoit.H0.value_si = (wilhoit.H0.value_si + solvation_correction.enthalpy)
        wilhoit.comment += ' + Solvation correction with {} as solvent and solute estimated using {}'.format(solvent_name, solute_data.comment)
    # Compute E0 by extrapolation to 0 K
    if spc.conformer is None:
        spc.conformer = Conformer()
    spc.conformer.E0 = wilhoit.E0
    # Convert to desired thermo class
    if thermo_class is Wilhoit:
        thermo = wilhoit
    elif thermo_class is NASA:
        if solvent_data:
            # If liquid phase simulation keep the nasa polynomial if it comes from a liquid phase thermoLibrary.
            # Otherwise convert wilhoit to NASA
            if "Liquid thermo library" in thermo0.comment and isinstance(thermo0, NASA):
                thermo = thermo0
                if thermo.E0 is None:
                    thermo.E0 = wilhoit.E0
            else:
                thermo = wilhoit.to_nasa(Tmin=100.0, Tmax=5000.0, Tint=1000.0)
        else:
            # gas phase with species matching thermo library keep the NASA from library or convert if group additivity
            if "Thermo library" in thermo0.comment and isinstance(thermo0, NASA):
                thermo = thermo0
                if thermo.E0 is None:
                    thermo.E0 = wilhoit.E0
            else:
                thermo = wilhoit.to_nasa(Tmin=100.0, Tmax=5000.0, Tint=1000.0)
    else:
        raise Exception('thermo_class neither NASA nor Wilhoit.  Cannot process thermo data.')
    return thermo