add generics to interface DriverFactory