/// <summary>
        /// Method should be called after construction to initialize the viewmodel
        /// to view a default content.
        /// </summary>
        public void InitPath(string initialPath)
        {
            IDirectoryBrowser[] pathItems;

            // Revert request to default if requested path is non-existing
            if (Browser.DirectoryExists(initialPath, out pathItems) == false)
            {
                initialPath = Browser.SysDefault.FullName;
            }

            Logger.InfoFormat("'{0}'", initialPath);

            var location = Browser.Create(initialPath);

            var cancelTokenSrc = GetCancelToken();
            var token          = CancellationToken.None;

            var InitTask = Task.Factory.StartNew(async(s) =>
            {
                await BreadcrumbBrowser.InitPathAsync();
                NavigateToFolder(location);
            }, token, TaskCreationOptions.LongRunning);

            var request = new BrowseRequest <IDirectoryBrowser>(location,
                                                                RequestType.Navigational,
                                                                token, cancelTokenSrc, InitTask);

            QueueTask(request);
        }
        /// <summary>
        /// Master controler interface method to navigate all views
        /// to the folder indicated in <paramref name="folder"/>
        /// - updates all related viewmodels.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="requestor"</param>
        private async Task <FinalBrowseResult <IDirectoryBrowser> > NavigateToFolderAsync(
            BrowseRequest <IDirectoryBrowser> request
            , object sender)
        {
            Logger.InfoFormat("'{0}'", request.NewLocation);

            // Make sure the task always processes the last input but is not started twice
            await _Semaphore.WaitAsync();

            try
            {
                var newPath = request.NewLocation;
                var cancel  = request.CancelTok;

                if (cancel != null)
                {
                    cancel.ThrowIfCancellationRequested();
                }

                var browseResult = await BreadcrumbBrowser.NavigateToAsync(
                    request,
                    "AppViewModel.NavigateToFolderAsync"
                    );

                return(browseResult);
            }
            catch (Exception exp)
            {
                var result = FinalBrowseResult <IDirectoryBrowser> .FromRequest(null, BrowseResult.InComplete);

                result.UnexpectedError = exp;
                return(result);
            }
            finally
            {
                _Semaphore.Release();
            }
        }