>Also, is it possible to save an object to disk and reload it automatically without having to do heaps of fancy coding to determine the contents of the object???
For this part, you may check Rick Strahl's wwIPStuff (or whichever part thereof contains this method), where there's a pair of methods called Obj2Xml and Xml2Obj - you can practically save the state of an object into a XML file, and later restore from there. You get some overhead: you still have to instantiate the object - or you can choose to recycle unused objects and restore their states from the XML files. In the latter scenario, you would not release an object, but rather mark it as unused (have a .lUnused property there), and when you need a new object, locate the first one in your array which is unused, set its properties afresh (if it's a completely new one), or restore from XML (if someone returned and you need to restore his object).