restructure and add ability to join a room