More cleanup, and fix a bug in Multicaster::gather()