A Lot of work. See implemented "Game 2" for other stuff