Implement rooms and synchronization.

Also. This worked on the first try. I didn't think that was physically possible.