I think I'd go with a standard OLE collection interface of Add, Remove and using an Access method on the Item array to allow retrieval of preferences to be done with syntax like: oApp.oGlobals.Item("My Global"). Add can be coded to only allow a single instance, so setting can be accomplished either via .Item() when you know it exists or .Add("My Global","My Value")