message now can be a function