Read() should increment waitgroup to avoid race

Also clean up a few things to make it more obvious what is going on.