try implement cancel fast