public DialogSolutionFinder(CubeSolver solver, Rubik rubik, Form parent = null)
        {
            this.solver = solver;
            InitializeComponent();
            if (parent != null)
            {
                this.Owner         = parent;
                this.StartPosition = FormStartPosition.CenterParent;
            }
            this.ShowInTaskbar = false;

            AddStepLabels(solver);

            solver.TrySolveAsync(rubik);
            solver.OnSolutionStepCompleted += solver_OnSolutionStepCompleted;
            solver.OnSolutionError         += solver_OnSolutionError;

            stepLabels[currentIndex].Text = "In progress ...";
            stepImgs[currentIndex].Image  = Properties.Resources.refresh;
        }