How to implement an initiative order?

what i am trying to do is as follows:

i have 2 gameobjects named of the same prefab, as well as an empty gameobject named currentPlayer. I can instantiate them both, declare one of them the starting player, and then starting their turn. this goes well, and the first player can move. in my Update() method i check if the currentplayer’s turn is ended, and then attempt to start the next person’s turn. My problem is player 1’s turn is ended, my unity console confirms it, however the second player’s turn does not start and no errors are thrown, it just doesn’t start. the following is the relevant code:

public void setup(){
		rng = new Roller ();
		resetBoard ();
		initiativeList = new List<GameObject> ();
		GameObject p1 = Instantiate (player, new Vector2(0,0), Quaternion.identity);
		grid [0, 0].GetComponent<OccupiableSpace> ().moveable = p1;
		p1.GetComponent<Character> ().spaceOccupying = grid [0, 0];
		GameObject p2 = Instantiate (playerTest, new Vector2 (1, 1), Quaternion.identity);
		grid [1, 1].GetComponent<OccupiableSpace> ().moveable = p2;
		p2.GetComponent<Character> ().spaceOccupying = grid [1, 1];
		initiativeList.Add (p1);
		initiativeList.Add (p2);
		index = 0;
		currentPlayer = p1;
		currentPlayer.GetComponent<Character> ().startTurn ();


void Update(){
		if (currentPlayer.GetComponent<Character> ().checkTurn() == false) {
			if (index + 1 == initiativeList.Count) {
				index = 0;
			} else {
			currentPlayer = initiativeList [index];
			currentPlayer.GetComponent<Character> ().startTurn ();

Nevermind, fixed it. in case anyone has the same problem the issue was to stop using currentPlayer as a placeholder, but instead modified Update() as follows:

void Update(){ if (initiativeList[index].GetComponent<Character> ().checkTurn() == false) { if (index + 1 == initiativeList.Count) { index = 0; } else { index++; } initiativeList [index].GetComponent<Character> ().startTurn (); } }

this however gives me a different error but ill make a separate post about it