programmatically: Add, edit, delete, and reorder navigation items for a group

I know.. we need to upgrade... we will.. but, in the meantime,  I need help with auto-magically adding the Navigation Item I created in this plugin to the group banner widget...
I thought this plugin would do the trick.. but I can only get the Navigation Item in the list for the group banner.
below is my code... thanks in advance.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telligent.Evolution.Extensibility.Version1;
using Telligent.Evolution.Extensibility.UI.Version1;
using Telligent.DynamicConfiguration.Components;
using TEApi = Telligent.Evolution.Extensibility.Api.Version1.PublicApi;

namespace CommunityMap.Plugins.UI.Navigation
{
    //public class MapGroupNavigation : IPlugin, ITranslatablePlugin, IGroupCustomNavigationPlugin
    public class MapAppsGroupNavigationItem : IPlugin, ITranslatablePlugin, ISiteCustomNavigationPlugin, IGroupCustomNavigationPlugin, IGroupDefaultCustomNavigationPlugin //
    {
        private readonly Guid _defaultId = new Guid("9ff37043-8c76-40ce-891e-ffa216415a0c");

        ITranslatablePluginController _translation;

        #region IPlugin Members

        public string Name
        {
            get { return "APAN - Community Map App Group Navigation"; }
        }

        public string Description
        {
            get { return "Adds Map App custom navigation support within groups."; }
        }

        public void Initialize()
        {
        }

        #endregion

        #region ITranslatablePlugin Members

        public Translation[] DefaultTranslations
        {
            get
            {
                var translation = new Translation("en-US");
                translation.Set("configuration_options", "Options");
                translation.Set("configuration_label", "Label");
                translation.Set("configuration_label_description", "Enter an optional label for this link.");
                translation.Set("configuration_defaultLabel", "Map Apps");
                translation.Set("navigationitem_name", "GroupMapApps");

                return new Translation[] { translation };
            }
        }

        public void SetController(ITranslatablePluginController controller)
        {
            _translation = controller;
        }

        #endregion

        #region IGroupCustomNavigationPlugin Members

        public PropertyGroup[] GetConfigurationProperties(int groupId)
        {
            var groups = new PropertyGroup[] {
             new PropertyGroup("options", _translation.GetLanguageResourceValue("configuration_options"), 1)
            };
            if (groupId > -1)
            {

                groups[0].Properties.Add(new Property("groupid", "Current Group", PropertyType.Int, 1, groupId.ToString()) { Visible = false, Editable = false });
                groups[0].Properties.Add(new Property("label", _translation.GetLanguageResourceValue("configuration_label"), PropertyType.String, 1, "") { DescriptionText = _translation.GetLanguageResourceValue("configuration_label_description") });


            }
            else
            {

                groups[0].Properties.Add(new Property("groupid", "Current Group", PropertyType.Custom, 0, string.Empty)
                {
                    ControlType = typeof(Telligent.Evolution.Controls.GroupSelectionList),
                    DescriptionText = "Select a Group"
                });
                groups[0].Properties.Add(new Property("label", _translation.GetLanguageResourceValue("configuration_label"), PropertyType.String, 1, "") { DescriptionText = _translation.GetLanguageResourceValue("configuration_label_description") });

            }
            return groups;
        }

        public ICustomNavigationItem GetNavigationItem(Guid id, ICustomNavigationItemConfiguration configuration)
        {
            int groupId = configuration.GetIntValue("groupid", -1);
            if (groupId == -1)
                return null;

            string label = configuration.GetStringValue("label", "");

            return new MapsGroupNavigationItem(this, configuration, id, groupId, () => string.IsNullOrEmpty(label) ? _translation.GetLanguageResourceValue("configuration_defaultLabel") : label);
        }

        public string NavigationTypeName
        {
            get { return _translation.GetLanguageResourceValue("navigationitem_name"); }
        }

        #endregion

        #region IGroupDefaultCustomNavigationPlugin Members

        public int DefaultOrderNumber
        {
            get { return -1; }
        }

        public ICustomNavigationItem GetDefaultNavigationItem(int groupId, ICustomNavigationItemConfiguration configuration)
        {
            return new MapsGroupNavigationItem(this, configuration, _defaultId, groupId, () => _translation.GetLanguageResourceValue("configuration_defaultLabel"));
        }

        public PropertyGroup[] GetConfigurationProperties()
        {
            return GetConfigurationProperties(-1);
        }

        #endregion

        public class MapsGroupNavigationItem : ICustomNavigationItem
        {
            int _groupId = -1;
            Func<string> _getLabel;
            IList<PublicApi.Entities.MapApp> _mapapps;
            internal MapsGroupNavigationItem(ICustomNavigationPlugin plugin, ICustomNavigationItemConfiguration configuration, Guid id, int groupId, Func<string> getLabel)
            {
                Plugin = plugin;
                Configuration = configuration;
                UniqueID = id;
                _mapapps = PublicApi.MapApps.List(groupId);
                _groupId = groupId;
                _getLabel = getLabel;
                var context = Telligent.Evolution.Components.CSContext.Current.CurrentPageContext.ContextItems.Find(f => f.ContentTypeId == TEApi.Groups.ContentTypeId);
                var strGroupId = context.Id;
                if (!string.IsNullOrEmpty(strGroupId))
                    _groupId = Convert.ToInt32(strGroupId);
                else
                    _groupId = -1;
            }

            #region ICustomNavigationItem Members

            public ICustomNavigationItem[] Children { get; set; }
            public ICustomNavigationItemConfiguration Configuration { get; private set; }
            public string CssClass { get { return "mapapp"; } }
            public string Label { get { return _getLabel(); } }
            public ICustomNavigationPlugin Plugin { get; private set; }
            public Guid UniqueID { get; private set; }

            public bool IsSelected(string currentFullUrl)
            {
                return currentFullUrl.Contains("/mapapps/");
            }

            public bool IsVisible(int userID)
            {
                return !string.IsNullOrEmpty(Url);
            }

            public string Url
            {
                get
                {
                    // if (_groupId == -1) { return null; }
                    if (_mapapps != null && _mapapps.Count > 0)
                    {
                        if (_mapapps.Count == 1)
                        {
                            if (_mapapps.FirstOrDefault().Group != null && _mapapps.FirstOrDefault().Group.Url != null)// && _mapapp.SafeName != null)
                            {
                                return _mapapps.FirstOrDefault().Group.Url + "mapapps/" + _mapapps.FirstOrDefault().SafeName + "/maps/"; // InternalApi.SourceingUrlService.SourceListUrl(_groupId);
                            }
                        }
                        else
                        {
                            if (_mapapps.FirstOrDefault().Group != null && _mapapps.FirstOrDefault().Group.Url != null)// && _mapapp.SafeName != null)
                            {
                                return _mapapps.FirstOrDefault().Group.Url + "mapapps/";
                            }
                        }
                    }
                   // return _mapapps.FirstOrDefault().Group.Url + "mapapps/";
                   return "";
                }
            }

            #endregion
        }
    }

}