support changing topics, join multiple rooms, and partial quit command handling #3