public Presentation(FileInfo file)
        {
            var tempRootDir = Path.GetTempPath();
            var tempDirName = $"pmpp_{Guid.NewGuid():N}";

            while (Directory.Exists(Path.Combine(tempRootDir, tempDirName)))
            {
                tempDirName = $"pmpp_{Guid.NewGuid():N}";
            }
            tempDir = Path.Combine(tempRootDir, tempDirName);

            ZipFile.ExtractToDirectory(file.FullName, tempDir);


            var archive    = new DirectoryInfo(tempDir);
            var masterFile = archive.GetFiles("master.png").FirstOrDefault();
            var files      = archive.GetFiles().Where(x => slideRegex.IsMatch(x.Name)).OrderBy(x => x.Name);

            if (masterFile != null)
            {
                Master = ToMemory(Image.FromFile(masterFile.FullName));
            }

            foreach (var slideFile in files)
            {
                Slides.AddLast(() => ToMemory(Image.FromFile(slideFile.FullName)));
            }
            currentNode = Slides.First;
            UpdateSlide();
        }