keep driver logic within the driver