Extract common parts
Implement the expected game protocol