better module driver structure