separate module driver implementation