Introduce BuiltinMessageConsumer and GenericMessageDispatcher