public void DownloadFile(string alias, Action <long> progressCallback = null)
        {
            if (progressCallback == null)
            {
                progressCallback = (x) => Tools.Lambda.NoOp();
            }
            var transferChunkSize = TransferChunkSize;

            if (LocalStore.ContainsAlias(alias))
            {
                LocalStore.Delete(alias);
            }
            LocalStore.RegisterFile(alias);
            long currentRead = 0;
            var  bytesRead   = 0;

            do
            {
                var data = Service.GetFilePart(alias, currentRead, transferChunkSize);
                bytesRead    = data.Length;
                currentRead += bytesRead;
                LocalStore.AppendAllBytes(alias, data);
                progressCallback(currentRead);
            } while (bytesRead >= TransferChunkSize);
        }