Restructuring this to better account for features and a cleaner design for implementing new Drivers.