I passed it as argument initially because it was still called in the driver, and I wanted to avoid a cyclic object graph. Passing the driver as constructor argument to the factory would make the cloning of a session more complex though (especially if we want to allow different implementations)