def mix_molecule_ff(ff_list, mixing_rule):
    """Mix molecule-molecule interactions in case of separate_interactions: return mixed ff_list"""
    from math import sqrt
    ff_mix = []
    for i, ffi in enumerate(ff_list):
        for ffj in ff_list[i:]:
            if ffi[1].lower() == ffj[1].lower() == 'lennard-jones':
                eps_mix = sqrt(ffi[2] * ffj[2])
                if mixing_rule == 'lorentz-berthelot':
                    sig_mix = 0.5 * (ffi[3] + ffj[3])
                elif mixing_rule == 'jorgensen':
                    sig_mix = sqrt(ffi[3] * ffj[3])
                ff_mix.append('{} {} lennard-jones {:.5f} {:.5f}'.format(
                    ffi[0], ffj[0], eps_mix, sig_mix))
            elif 'zero-potential' in [ffi[1], ffj[1]]:
                ff_mix.append('{} {} zero-potential'.format(ffi[0], ffj[0]))
            elif ffi[1].lower() == ffj[1].lower(
                ) == 'feynman-hibbs-lennard-jones':
                eps_mix = sqrt(ffi[2] * ffj[2])
                if mixing_rule == 'lorentz-berthelot':
                    sig_mix = 0.5 * (ffi[3] + ffj[3])
                elif mixing_rule == 'jorgensen':
                    sig_mix = sqrt(ffi[3] * ffj[3])
                reduced_mass = ffi[4]
                ff_mix.append(
                    '{} {} feynman-hibbs-lennard-jones {:.5f} {:.5f} {:.5f}'
                    .format(ffi[0], ffj[0], eps_mix, sig_mix, reduced_mass))
            else:
                raise NotImplementedError(
                    'FFBuilder is not able to mix different/unknown potentials.'
                    )
    return ff_mix
