Use Message objects internally and pass one to Do* hooks