может вынести cancel в метод и вызывать его тут?