swap (msg, next) to (done, msg)