Some changes so that it can be used to detect whether the source is v2 or v3.
Make operations of DataClient cancellable.