private void SubInitialiseSessionStart()
    {
        //assign sprites to team Images
        Dictionary <int, TeamArc> dictOfTeamArcs = GameManager.i.dataScript.GetDictOfTeamArcs();

        if (dictOfTeamArcs != null)
        {
            if (dictOfTeamArcs.Count != arrayOfTeamOptions.Length)
            {
                Debug.LogWarning(string.Format("dictOfTeamArcs.Count {0} != arrayOfTeamImages.Length {1}", dictOfTeamArcs.Count, arrayOfTeamOptions.Length));
            }
            else
            {
                int limit = Mathf.Min(dictOfTeamArcs.Count, arrayOfTeamOptions.Length);
                //limit = Mathf.Min(dictOfTeamArcs.Count, arrayOfTeamTexts.Length);
                for (int index = 0; index < limit; index++)
                {
                    //get TeamArc from dict based on index
                    TeamArc arc = null;
                    if (dictOfTeamArcs.ContainsKey(index) == true)
                    {
                        arc = dictOfTeamArcs[index];
                        TeamInteraction teamUI = arrayOfTeamOptions[index].GetComponent <TeamInteraction>();
                        if (teamUI != null)
                        {
                            //assign to sprite
                            teamUI.teamImage.sprite = arc.sprite;
                            //assign to text (name of teamArc)
                            teamUI.teamText.text = arc.name;
                        }
                        else
                        {
                            Debug.LogError("Invalid TeamChoiceUI component (Null)");
                        }
                    }
                    else
                    {
                        Debug.LogWarning(string.Format("Invalid arc index \"{0}\" for \"{1}\" -> No Sprite assigned", index, arc.name));
                    }
                }
            }
        }
        else
        {
            Debug.LogError("Invalid dictOfTeamArcs (null) -> Sprites not assigned to ModalTeamPicker");
        }
    }
    /// <summary>
    /// Click confirm, carry out Team insert and exit picker
    /// </summary>
    private void ProcessTeamChoice()
    {
        modalTeamObject.SetActive(false);
        GameManager.i.guiScript.SetIsBlocked(false);
        //deselect all teams to prevent picker opening next time with a preselected team
        EventManager.i.PostNotification(EventType.DeselectOtherTeams, this, null, "ModalTeamPicker.cs -> ProcessTeamChoice");
        //set game state
        /*GameManager.instance.inputScript.GameState = GameState.Normal;*/
        GameManager.i.inputScript.ResetStates();
        /*Debug.LogFormat("[UI] ModalTeamPicker -> ModalTeamPicker" + "\n"));*/
        Debug.Log(string.Format("TeamPicker: Confirm teamID {0}{1}", teamIDSelected, "\n"));
        //insert team
        if (teamIDSelected > -1)
        {
            GameManager.i.teamScript.MoveTeam(TeamPool.OnMap, teamIDSelected, teamActorSlotID, teamNode);
        }
        else
        {
            Debug.LogError(string.Format("Invalid teamIDSelected \"{0}\" -> insert team operation cancelled", teamIDSelected));
        }
        //outcome dialogue windows
        ModalOutcomeDetails details = new ModalOutcomeDetails();

        details.side = GameManager.i.globalScript.sideAuthority;

        bool successFlag = true;

        if (teamIDSelected > -1)
        {
            details.textTop = GameManager.i.effectScript.SetTopTeamText(teamIDSelected);
            Actor actor = GameManager.i.dataScript.GetCurrentActor(teamActorSlotID, GameManager.i.globalScript.sideAuthority);
            if (actor != null)
            {
                details.textBottom = GameManager.i.effectScript.SetBottomTeamText(actor);
            }
            else
            {
                successFlag = false;
            }
            Team team = GameManager.i.dataScript.GetTeam(teamIDSelected);
            if (team != null)
            {
                TeamInteraction teamInteract = arrayOfTeamOptions[team.arc.TeamArcID].GetComponent <TeamInteraction>();
                if (teamInteract != null)
                {
                    details.sprite = teamInteract.teamImage.sprite;
                }
                else
                {
                    successFlag = false;
                }
            }
            else
            {
                successFlag = false;
            }
        }
        //something went wrong, default message
        if (successFlag == false)
        {
            details.textTop    = "There have been unexplained delays and no team has been inserted";
            details.textBottom = "As soon as you've identified who is at fault heads will roll";
            details.sprite     = GameManager.i.spriteScript.errorSprite;
        }
        //action expended if successful
        if (successFlag == true)
        {
            details.isAction = true;
            details.reason   = "Team Picker";
        }
        //fire up Outcome dialogue
        EventManager.i.PostNotification(EventType.OutcomeOpen, this, details, "ModalTeamPicker.cs -> ProcessTeamChoice");
    }