>For many things, the DataSession doesn't matter. In the example you gave, it does, so it may make sense to instantiate another one or pass the DS ID.
As Factory is such a lightweight object, I think it wouldn't hurt to instantiate one per DS, make it a Thisform.oFactory. Also, I don't see why do we have to have one factory. We can have a whole industry if we want. Nowadays even pet grooming is an "industry", so why not this.