added CancellationToken argument for async methods