public static List <FigSynthProblem> AddShape(Figure outerShape, ShapeType type)
        {
            List <FigSynthProblem> problems = new List <FigSynthProblem>();

            switch (type)
            {
            case ShapeType.TRIANGLE:
                problems.AddRange(Triangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.ISOSCELES_TRIANGLE:
                problems.AddRange(IsoscelesTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RIGHT_TRIANGLE:
                problems.AddRange(RightTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;
            //case ShapeType.ISO_RIGHT_TRIANGLE:
            //    problems.AddRange(Triangle.AppendShape(points);

            case ShapeType.EQUILATERAL_TRIANGLE:
                problems.AddRange(EquilateralTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.KITE:
                problems.AddRange(Kite.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.QUADRILATERAL:
                problems.AddRange(Quadrilateral.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.TRAPEZOID:
                problems.AddRange(Trapezoid.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.ISO_TRAPEZOID:
                problems.AddRange(IsoscelesTrapezoid.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.PARALLELOGRAM:
                problems.AddRange(Parallelogram.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RECTANGLE:
                problems.AddRange(Rectangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RHOMBUS:
                problems.AddRange(Rhombus.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.SQUARE:
                problems.AddRange(Square.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.CIRCLE:
                problems.AddRange(Circle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.SECTOR:
                problems.AddRange(Sector.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;
            }

            return(problems);
        }