Hello, I would like to straighten out some facts about the FBC problem and binary compatibility. First: Yes, it is possible to change class headers, for example by adding new functions, or by removing functions from the private: section without breaking functionality, as long as these functions are not virtual. You can also add your own variables, but you have to make sure you don't break the FBC layout. This means, you are not allowed to change: * The size of objects (i.e. structs or classes) * The offsets to "visible" (public or protected) data * The existence and size of the vtable * The offsets to the virtual functions in the vtable In other words: If there are any variables that are public or protected, they may be used by applications and can't be changed. You are also not allowed to change their position, for example by reordering. But you can add or romve variables in the private: section, if you make sure that the size of the class stays the same. Adding a void * mydata; forces you to remove 4 bytes of data elsewhere, for eample by reducing the uint32 reseved[x]; and replacing x with x -1. Order and positions of virtual functions can not change, and you also can't change the amount of virtual functions. There is also a (very old) newsletter about this, it explains this much more and in very detail, I think it's a must read for everyone involved here. please find it here: http://www-classic.be.com/aboutbe/benewsletter/Issue79.html#Insight regards Marcus