Updated the Driver to make it simpler and more modular