Well, driver needs something (it is driver-specific though, and external dependency).

I agree that your suggestion looks better than the current code. However, it does not work anymore if we want to keep the easy cloning of a Session (I'm not sure it is a good idea to have it though, as cloning drivers can be tricky).

I agree about moving the creation of the DocumentElement to the factory. The SelectorsHandler does not need to be exposed in the Session (people wanting to customize it would instantiate it separately). It does not need to be cloned either when cloning a session. It can be a shared instance.

I'm actually thinking about moving the content of the ``Element:find`` method to an ElementFinder class (or something like that), which would be responsible for calling the SelectorsHandler, prepending the element xpath properly (to fix #340) and building the NodeElement instances as return value (replacing the current ElementFactory). The NodeElement would then have 2 dependencies: the Driver and the ElementFinder. However, I'm not sure about it, as it would mean that the ElementFinder would also need the Driver. It may be better to keep the call to the driver and the creation of the NodeElement in the Element method. I will play with it a bit this evening.

I will also see what I can do for the grapical representation of the object graph (I'm sure some tool exist to handle it)