Initial versions of the EndBASIC Service, and therefore initial versions of EndTRACKER, used dynamic dispatch to support abstract definitions of system services such as the database they talk to and the clock they use. This looked like a bunch of Arc objects passed around and was done to support ext...
Unless I'm missing something, I think you can clean it up and keep your static dispatch by turning the Driver struct into a trait:
You'd rename your struct Driver to struct DriverImpl, define a trait Driver and for the implementation you'd use impl Driver for DriverImpl where etc...