private void RaiseOnNewGameState()
{
foreach (Delegate d in NewGameState.GetInvocationList())
{
if (d.Target is ISynchronizeInvoke)
(d.Target as ISynchronizeInvoke).BeginInvoke(d, new object[] { CurrentGameState });
else
d.DynamicInvoke(CurrentGameState);
}
}