Parameterized classses

Why is sequence item class passed as parameter in sequence, sequencer and driver?

class mem_sequence extends uvm_sequence_#(mem_seq_item)_

In reply to arohan:
Because a sequence decribes how seq_items of this type (mem_seq_item) are generated.
The seuqncer is generating these seq_items and the driver is processing them. The TLM Interface between the sequencer and Driver is parameterized with respect of this type.