Is it better to write functional coverage in a UVM class or a module?

Is it better to write functional coverage in a UVM class or a module?

If you already have a class based UVM testbench, then it would be natural to write UVM coverage collector classes.