Refactor code into less classes, now the whole driver is encapsulated in one class