private IBase createNewBase(IBase b, IObjectiveScores <T> startingPoint, IObjectiveScores <T> endPoint)
            {
                IVector pathOfStage = createVector(startingPoint, endPoint);

                if (pathOfStage.IsNullVector)
                {
                    pathOfStage.SetAllComponents(1.0);
                }
                IBase result     = b.CreateNew(pathOfStage.Length);
                int   colinearTo = isColinearToBase(pathOfStage);

                if (colinearTo >= 0)
                {
                    return(result);
                }
                if (result.GetBaseVector(0).IsOrthogonal(pathOfStage))
                {
                    if (result.NumDimensions > 1)
                    {
                        if (!result.GetBaseVector(1).IsOrthogonal(pathOfStage))
                        {
                            result.SetBaseVector(1, pathOfStage);
                            result.Orthonormalize(1);
                        }
                    }
                    else
                    {
                        return(result);
                    }
                }
                else
                {
                    result.SetBaseVector(0, pathOfStage);
                    result.Orthonormalize(0);
                }
                return(result);
            }