Move some more functionality into the driver