Sharing a single BFM between different classes

I currently have a BFM defined as a class in much the same way as defined in figure 5 in this document (http://www.doulos.com/downloads/events/DVCon_08_abstractBFM_final.pdf)

I have a testbench which instantiates that - and all is well.

My question is - I have a few other classes which will need to access this BFM, and I’m not sure what the best way for them to access this class is.

e.g.

top_level_tb

//my bfm
bfm = interface.myfirstbfm;
bfm.write('h1234,'hf); // this works

// other class - bfm_stimulator
bfm_stimulator my_bfm_stimulator = new ();
// task write_ascii in bfm_stimulator writes a value to the bench
my_bfm_stimulator.write_ascii("abcd");

What’s the most sensible way to interface my_bfm_stimulator and bfm to each other?

Many thanks,

Simon