cleanup - abstract chained call