winnable will fail, but now it uses the gameState to avoid long-time loops