msg logic