Refactor to introduce 'IMessageProcessor'