Layered Agents and Analysis Ports

I have been watching this great video from Tom:
https://verificationacademy.com/sessions/layered-sequences/video/252?play=1

However i think there is a slight flaw, either that i have misunderstood the setup in the video. Tom discussed having a layered agent which extends uvm_subscriber.
He then connects the analysis_export of this class into the monitor component(also a uvm_subscriber). The intention here is provide access to the implementation of the write() method from the monitor to the analysis_export on the layered agent.

This seems sensible… however, if you extend uvm_subscriber you need to overwrite the write() method. This is in conflict by connecting analysis_export.connect(m_mon.analysis_export) in the connect_phase() of the layered agent.

My solution thoughts: turn the layered agent into a uvm_component with an additional uvm_analysis_export then connect that post as the example or maintain the layered agent being a uvm_subscriber and call the write() method of the m_mon from within the write() method of the layered agent.