refactoring and added GameStateRing and GameStateDecentralized