public void ExportSong(Executer fileAccess, string folderPath, string format = "%ARTIST% - %TITLE%")
        {
            #if DEBUG
            #else
            try
            {
            #endif
            var beatmap = this.Beatmap;
            var copiedFilePath = Path.Combine(folderPath, beatmap.FormattedOutputFilename(format).AsValidPath());
            fileAccess.AddAction(() => File.Copy(Path.Combine(this.path, beatmap.FileName), copiedFilePath, true), "Copying file : " + copiedFilePath);
            using (var copiedFile = fileAccess.AddFunc(() => TagLib.File.Create(copiedFilePath), "Creating taggable file from : " + copiedFilePath))
            {
                copiedFile.RemoveTags(TagLib.TagTypes.Id3v2);
                copiedFile.Tag.Title = beatmap.Title;
                copiedFile.Tag.Performers = new string[] { beatmap.Artist };
                var artworkPath = this.ArtworkPath;
                if (artworkPath != null)
                {
                    copiedFile.Tag.Pictures = new[] { new TagLib.Picture(artworkPath) };
                }
                fileAccess.AddAction(() => copiedFile.Save(), "Saving tagged file : " + copiedFilePath);
            }

            #if DEBUG
            #else
            }
            catch (Exception ex)
            {
                ExportLogger.GetInstance().LogError(ex, "put info");
            }
            #endif
        }