- keep ordered list of players - method update() - method render() - iterate over players to get RenderRequests and send to clients - separate thread to call update(), render()