public List<Generation> GetHistoryBatch(int startGeneration, int endGeneration)
        {
            var universe = new Universe(GetLatestHistory());
            int generationNumber = 0;

            List<Generation> historyBatch = new List<Generation>();

            while (generationNumber <= endGeneration)
            {
                if (generationNumber >= startGeneration)
                {
                    historyBatch.Add(new Generation() { Cells = HsToList(universe.CurrentGenCells), GenerationNumber = generationNumber });
                }

                universe.PopulateNextGen(false);

                generationNumber += 1;
            }

            return historyBatch;
        }
        public static Universe Start(List<Cell> seed = null, int generation = 0)
        {
            if (seed != null)
                StartSeed = seed;
            else
            {
                StartSeed = Seeds.RPentomino;
                //StartSeed.AddRange(Seeds.Stairs);
                //StartSeed.AddRange(Seeds.Toad);
                //StartSeed.AddRange(Seeds.RPentomino2);
                //StartSeed.AddRange(Seeds.Stairs2);
            }

            Generation = generation;

            var universe = new Universe(StartSeed);
            universe.Running = true;

            //universe.Run();

            var thread = new Thread(() => universe.Run());
            thread.Start();

            return universe;
        }