Changed MessagePublication to interface (IMessagePublication) to permit extending the MessagePublication and Factories