UVM driver re-use

I am currently trying to re-use a driver code from an old project.
While evaluating, I see that the driver has required functionality for bus protocol but it has additional function
related to the DUT functionality beyond just bus protocol.

For example, the sequence is handing over a large chunk of data that the driver interprets, create small transactions and then
sends them on the bus interface.

In the new project, the assumptions made regarding the large chunk of data are not valid resulting making it hard to re-use.

I would like to know if there are any guidelines to be followed while designing driver?

In reply to verif_learner:

Your driver has 2 different interface, a virtual interface providing the connection to the DUT and a transaction-level interface used to connect to the sequencer. What kind of data you are using is defined by the seq_item.

I do not understand what do you mean with ‘large chink of data’, because it is always 1 seq_item or a series of seq_items.

In reply to chr_sue:

In reply to verif_learner:
Your driver has 2 different interface, a virtual interface providing the connection to the DUT and a transaction-level interface used to connect to the sequencer. What kind of data you are using is defined by the seq_item.
I do not understand what do you mean with ‘large chink of data’, because it is always 1 seq_item or a series of seq_items.

actually, the driver has to sent transactions on AXI interface. So, it emulates L1/PHY layer.
But in reality, it is also processing data associated with MAC (L2 layer).
In the new project where I am trying to use this driver, the L2 layer is different.
So, the assumptions have gone wrong.