added Abstract Driver and DriverErrors with tests.