refactor Driver class