// this chain is pretty ugly
    IEnumerator UpdateSlaveStillPositions(int inShotCount)
    {
        while (cueController.stillBallPocketed == null || cueController.stillBallPositions == null)
        {
            yield return(null);
        }

        yield return(new WaitForEndOfFrame());

        // slave would sprodically supply some user info and other info to master. but this doesn't change our fail scenario, in which slaves are strictly listening and master talking
        // we need to make sure that game should be able to carry on without any functional glitches even when the slave is completely slient
        if (cueController.NetworkSlaveInControl())
        {
            cueController.updateSlaveStillPositions(inShotCount);
        }
    }