message is now self-contained