In V10, there are many symbols named like "YadaYadaObject" In[74]:= Names["*`*Object"] // Length Out[74]= 136 Are associations used under the hood for these, or is there another general mechanism by which Mathematica internally supports these new "objects". I've had a few ideas on how OOP should be implemented in MMA, but I never knew if there was a "preferred way" to do it.