def mobil_helper(polite, bias, in_disc, lfol, llead, veh, vehlane, newlfolhd, newlhd, veha, fola, newfola,
                 timeind, dt, userelax_cur, userelax_new):
    """Helper function for MOBIL computes safeties and incentives.

    Args:
        polite: politeness parameter in mobil
        bias: bias for lane change side in mobil
        in_disc: True if the considered lane change is discretionary, in which case we need to compute
            the incentive.
        lfol: the left (or right) follower
        llead: left leader (leader of lfol)
        veh: ego vehicle (for which the LC is considered)
        vehlane: lane veh is evaluating the change for
        newlfolhd: new headway for lfol
        newlhd: new headway for veh
        veha: current vehicle acceleration, used for incentive
        fola: current follower (veh.fol) acceleration, used for incentive
        newfola: new follower acceleration
        timeind: time index
        dt: time step
        userelax_cur: If True, apply relaxation in current acceleration. True recommended.
        userelax_new: If True, apply relaxation in new acceleration. False recommended.

    Returns:
        newlfola: new acceleration for left follower (used for safety condition)
        newla: new acceleration for ego vehicle (used for safety condition)
        lincentive: computed incentive (0 if mandatory change)
    """
    userelax = userelax_new and lfol.in_relax
    newlfola = lfol.get_cf(newlfolhd, lfol.speed, veh, lfol.lane, timeind, dt, userelax)

    userelax = userelax_new and veh.in_relax
    newla = veh.get_cf(newlhd, veh.speed, llead, vehlane, timeind, dt, userelax)

    if in_disc:
        if not userelax_cur and lfol.in_relax:
            lfola = lfol.get_cf(lfol.hd, lfol.speed, llead, lfol.lane, timeind, dt, False)
        else:
            lfola = lfol.acc

        lincentive = newla - veha + polite*(newlfola - lfola + newfola - fola) + bias
        return newlfola, newla, lincentive

    else:
        return newlfola, newla, 0