message logic