don't think we need message processor to be abstract, it can handle basic messages as is.