implemented canceling via cancellationtoken