private void btnUndo_Click(object sender, EventArgs e) { var lastAction = this.ActionLog.LastOrDefault(); if (lastAction != null) { lastAction.Moves.ForEach(m => m.Piece.Location = m.Original_Location); lastAction.Removed_Pieces.ForEach(x => this.Pieces.Add(x)); if (lastAction.Added_Piece != null) { this.Pieces.Remove(lastAction.Added_Piece); } this.ActionLog.Remove(lastAction); Next_Turn(false); Board.Clear_EnabledMoves(); this.Pieces.ForEach(p => p.Selected = false); } }