Changed the drive() method to use James's algorithm.