Well i certainly feel foolish.... I decided to look at my implementation again to see if there was a spoof.... turns out there was... the key I was using wasnt the key that matched with the object... so it returned null since it didnt have it... though I thought the indexer of SortedList was supposed to throw when the value didnt exist. Oh well.... back to working on the actual project now rather than debugging this issue, lol. Hmm.. does anyone have a good suggestion for which to use to store these interface implementation instances. I am using a singleton right now... but I'm using a single processor system and accessing it singly [no stress tests at all .. at least yet]. So... would Application, Cache, or the Singleton work best? I'd like the instance to be available indefinitely, perhaps adding new ones when a new one is available, or removing them when the dll is removed [and the config changed]. The removal however would be more difficult and would require a reload of the entire application due to the wonderful AppDomain unloading but no Assembly unloading [I really hope they add that ability in the next versions of .NET ... I'd like to have a good, simple plugin system that allowed removal without total unloads or using cross-AppDomain calls (I think that uses a form of remoting.. right?)]