Separating this from Game and introducing some new concepts