addMessage now callbacks, not returns