launch goroutine per message
cleanup