Data System
The Wizards stores its data using something i called the Data System. In the Data System, there are 2 components: A DataObject and a DataElement.
DataObjects contain DataElements. DataElements only contain Data.
This sounds like one too simple concept, but it has one rule. A DataElement can hold references to a DataObject, but NOT to other DataElements. This rule prevents lots of awful things from happening, but the main advantage is that only the DataElements that need to be accessible are the ones that are used at the moment. (This is all very abstract, but the design is meant to be very abstract, since the engine needs to support a whole load of features)
The main instances in the wizards (currently rendering, physx, preprocessing, network sync, animation, scripting??) use these DataElement in their operation. This way, all of those elements literally become independent, thus making flexible code.
I recently stumbled upon an article by Mick West (developer on Tony Hawk games) in which he explains coming a very similar concept.
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ (my design resembles the die hard concept 'OBJECT AS A PURE AGGREGATION')
This article seems to speak in favor of my current approach,
So it will be