How should I implement two get tasks in a single uvm_component?

I have a uvm_component which has two uvm_blocking_get_imps as follows,

    uvm_blocking_get_imp #(int, dma_busy_monitor) m_get_read_imp;
    uvm_blocking_get_imp #(int, dma_busy_monitor) m_get_write_imp;

What is the best approach to implementing both get tasks in the same component?

Thanks,

Dale.

In reply to dshanley:

I found a reference to the same issue in the UVM Class Reference Manual, which recommended using macros, so I used this approach.

`uvm_blocking_get_imp_decl(_write)
`uvm_blocking_get_imp_decl(_read)

class my_busy_monitor extends uvm_monitor;

    uvm_blocking_get_imp_read#(int, my_busy_monitor) m_get_read_imp;
    uvm_blocking_get_imp_write#(int, my_busy_monitor) m_get_write_imp;

    task get_write(output int channel);
    ...
    endtask

    task get_read(output int channel);
    ...
    endtask

endclass

This works for me