refactor canceller