refactored most code from message processor into Conversation