def METHOD_NAME(accounts, loanToken, underlyingToken, set_demand_curve, collateralToken, sovryn, priceFeeds, rate, WRBTC,
              FeesEvents, SOV, chain, checkTinyPosition):
    # set the demand curve to set interest rates
    set_demand_curve()
    lender = accounts[0]
    borrower = accounts[1]
    liquidator = accounts[2]
    loan_token_sent = 10e18
    # lend to the pool, mint tokens if required, open a margin trade position
    loan_id = prepare_liquidation(lender, borrower, liquidator, loan_token_sent, loanToken, underlyingToken, collateralToken, sovryn, WRBTC, checkTinyPosition)
    loan = sovryn.getLoan(loan_id).dict()
    # set the rates so we're able to liquidate
    if(underlyingToken == WRBTC):
        priceFeeds.setRates(underlyingToken.address, collateralToken.address, rate)
        value = loan_token_sent
    else:
        priceFeeds.setRates(collateralToken.address, underlyingToken.address, rate)
        value = 0
    sov_borrower_initial_balance = SOV.balanceOf(borrower)
    chain.sleep(10*24*60*60)  # time travel 10 days
    chain.mine(1)
    # amount to check that tiny position won't be created
    constants = shared.Constants()
    amount_to_liquidate = loan['principal'] - constants.TINY_AMOUNT if checkTinyPosition else loan_token_sent
    # liquidate
    tx_liquidation = sovryn.METHOD_NAME(loan_id, liquidator, amount_to_liquidate, {'from': liquidator, 'value' :value})
    verify_liquidation_event(loan, tx_liquidation, lender, borrower, liquidator, amount_to_liquidate, loanToken, underlyingToken, set_demand_curve, collateralToken, sovryn, priceFeeds, rate)
    if(underlyingToken != WRBTC):
        verify_sov_reward_payment(tx_liquidation, FeesEvents, SOV, borrower, loan_id, sov_borrower_initial_balance, 1)