internal Task <BoolWithMessage> ImportMapAsync(bool isReimport = false)
        {
            Task <BoolWithMessage> task = Task.Factory.StartNew(() =>
            {
                string sourceFolderToCopy;

                if (IsZipFileImport)
                {
                    if (File.Exists(PathToFileOrFolder) == false)
                    {
                        System.Windows.MessageBox.Show("File does not exist", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
                        return(new BoolWithMessage(false, $"{PathToFileOrFolder} does not exist."));
                    }

                    // extract files first before copying
                    Directory.CreateDirectory(PathToTempUnzipFolder);
                    BoolWithMessage didExtract = FileUtils.ExtractCompressedFile(PathToFileOrFolder, PathToTempUnzipFolder);

                    if (didExtract.Result == false)
                    {
                        UserMessage = $"Failed to extract file: {didExtract.Message}";
                        return(new BoolWithMessage(false, $"Failed to extract: {didExtract.Message}."));
                    }

                    sourceFolderToCopy = EnsurePathToMapFilesIsCorrect(PathToTempUnzipFolder);
                }
                else
                {
                    if (Directory.Exists(PathToFileOrFolder) == false)
                    {
                        System.Windows.MessageBox.Show("Folder does not exist", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
                        return(new BoolWithMessage(false, $"{PathToFileOrFolder} does not exist."));
                    }

                    sourceFolderToCopy = PathToFileOrFolder;
                }


                FileUtils.CopyDirectoryRecursively(sourceFolderToCopy, SessionPath.ToContent, filesToExclude: FilesToExclude, foldersToExclude: AllStockFoldersToExclude, doContainsSearch: false);

                if (IsZipFileImport && Directory.Exists(PathToTempUnzipFolder))
                {
                    // remove unzipped temp files
                    Directory.Delete(PathToTempUnzipFolder, true);
                }
                else if (isReimport == false)
                {
                    // make .meta file to tag where the imported map came from to support the 'Re-import' feature
                    string mapName         = MetaDataManager.GetMapFileNameFromFolder(sourceFolderToCopy);
                    BoolWithMessage result = MetaDataManager.TrackMapLocation(mapName, sourceFolderToCopy);
                }

                return(new BoolWithMessage(true));
            });

            return(task);
        }