TODO: think about the Driver interface