int OnExecute(IConsole console)
        {
            RandomizerSettings settings;

            if (!String.IsNullOrEmpty(Preset))
            {
                try
                {
                    settings = new RandomizerSettings(
                        Seed,
                        FFR.Common.Presets.Load(Preset).Flags,
                        new Preferences()
                        );
                }
                catch (System.IO.FileNotFoundException)
                {
                    console.Error.WriteLine($"Preset not found: '{Preset}'");
                    return(1);
                }
            }
            else if (!String.IsNullOrEmpty(Import))
            {
                try
                {
                    settings = RandomizerSettings.FromImportString(Import);
                }
                catch
                {
                    console.Error.WriteLine("Ensure that you are using an import string in a format as supplied by crim_bot or the finalfantasyrandomizer.com web version.");
                    return(1);
                }
            }
            else if (!String.IsNullOrEmpty(Json))
            {
                try
                {
                    settings = RandomizerSettings.FromJson(Seed, Json);
                }
                catch
                {
                    console.Error.WriteLine("Ensure valid Json exported from finalfantasyrandomizer.com.");
                    return(1);
                }
            }
            else
            {
                try
                {
                    settings = new RandomizerSettings(Seed, FlagString);
                }
                catch (Exception e)
                {
                    console.Error.WriteLine(e.ToString());
                    console.Error.WriteLine("Ensure that you are using an 8 character hexadecimal string as a seed and a valid base64 encoded set of flags.");
                    return(1);
                }
            }

            var outFile = String.IsNullOrEmpty(OutFile)
                                ? GenerateDefaultFilename(RomPath, settings)
                                : OutFile;

            var rom = new FF1Rom(RomPath);

            rom.Randomize(settings.Seed, settings.Flags, settings.Preferences);
            rom.Save(outFile);

            if (Verbose)
            {
                console.WriteLine($"Seed: {settings.Seed.ToHex()}");
                console.WriteLine($"Flags: {Flags.EncodeFlagsText(settings.Flags)}");
            }
            console.WriteLine($"ROM created at: {outFile}");

            return(0);
        }