allow returning nil from message emitter to indicate no change (cached previous value)