public void RemoveClickHandler(Object sender, EventArgs e, int playerIndex, CurrentGameData currentGameData)
    {
        PlayerData player = currentGameData.players[playerIndex];
        int        i      = 0;
        int        index  = this.List.IndexOf(((Button)sender).Parent);

        if (currentGameData.State == State.NotStarted)
        {
            currentGameData.players.RemoveAt(playerIndex);
            Remove(sender);
            PlayersLeft--;
        }
        else if (((Button)sender).Text == "Undo")
        {
            PlayersLeft++;
            lblPlace[playerIndex].Text = "";
            player.Eliminated          = false;
            player.Place          = 0;
            ((Button)sender).Text = "Remove";

            // Loop through players to the player with the last bounty
            foreach (PlayerData playerData in currentGameData.players)
            {
                if (playerData.Name == lastPlayerWithBounty)
                {
                    playerData.Bounties--;
                    lblBounties[i].Text = playerData.Bounties.ToString();
                }
                i++;
            }
        }
        else
        {
            ((Panel)((TableLayoutPanel)((Button)sender).Parent).Parent).AutoScrollPosition = new Point(0, 0);
            ((Button)sender).Text = "Undo";
            // Set place label
            switch (PlayersLeft)
            {
            case 1:
                lblPlace[index].Text = "1st";
                break;

            case 2:
                lblPlace[index].Text = "2nd";
                break;

            case 3:
                lblPlace[index].Text = "3rd";
                break;

            default:
                lblPlace[index].Text = PlayersLeft + "th";
                break;
            }

            player.Eliminated = true;
            player.Place      = PlayersLeft;
#if DEBUG
            // Output isEliminated to console for easy debugging
            Console.Write("Eliminated:\n");
            foreach (PlayerData playerData in currentGameData.players)
            {
                Console.Write(playerData.Name + ": " + playerData.Eliminated + "\n");
            }
            Console.Write("--------\n");
#endif
            i = 0;
            int j = 0;
            foreach (Control c in this)
            {
                if (c != (TableLayoutPanel)((Button)sender).Parent)
                {
                    if (lblPlace[j].Text.Length == 0)
                    {
                        i++;
                        c.Top = i * 67;
                    }
                    else
                    {
                        btnRemove[j].Enabled = false;  //Convert.ToInt32(c.Tag) - 1
                    }
                }
                j++;
            }

            // Reposition Panel to last panel
            ((TableLayoutPanel)((Button)sender).Parent).Top = PlayersLeft * 67;

            PlayersLeft--;

            if (!Equals(settings[Settings.Default.IniSection]["Bounties"], "0"))
            {
                if (PlayersLeft > 0)
                {
                    AddBounty(player, index, false, sender, currentGameData);
                }
            }

            if (PlayersLeft == 1)
            {
                DisableButtons();
                frmMain.EndOfGame(lblPlace);
            }
        }
        currentGameData.UpdateCurrentGameData(PlayersLeft);
    }