Let me get this straight. Instances are shared... and marking a class shared marks all its members shared? If what you said were true, it would be trivial to instantiate a class as both shared and unshared. Without any duplication. class A { /// } shared A sharedA = new A; A unsharedA = new A; I don't can you elaborate your last post? Thanks. Debdatta