better undefined and empty message passing