protected override void SolveInstance(IGH_DataAccess DA)
        {
            var crvs = new List <Curve>();

            LoftOptions lo = null;

            var start = Point3d.Unset;
            var end   = Point3d.Unset;

            if (!DA.GetDataList("Curves", crvs))
            {
                return;
            }
            var hasStart = DA.GetData("Start", ref start);
            var hasEnd   = DA.GetData("End", ref end);

            if (!DA.GetData("Options", ref lo))
            {
                return;
            }


            Brep[] results = null;
            switch (lo.LoftFit)
            {
            case LoftSimplify.None:
                results = Brep.CreateFromLoft(crvs, start, end, lo.LoftType, lo.ClosedLoft);
                break;

            case LoftSimplify.Rebuild:
                results = Brep.CreateFromLoftRebuild(crvs, start, end, lo.LoftType, lo.ClosedLoft, lo.RebuildCount);
                break;

            case LoftSimplify.Refit:
                results = Brep.CreateFromLoftRefit(crvs, start, end, lo.LoftType, lo.ClosedLoft, lo.RefitTolerance);
                break;
            }

            Brep brep = null;

            if (results.Length == 1)
            {
                brep = results[0];
            }
            else
            {
                brep = Brep.JoinBreps(results, 1E-05)[0];
            }
            if (brep != null)
            {
                brep.Faces.SplitKinkyFaces();
                DA.SetData("Loft", brep);
            }
        }