Basically you just need to make sure that Assign is always overridden in your TPersistent-descendant classes, or at least that you've implemented your own exceptions for cases where it's not. Never call the "inherited" version under any circumstances, as it will raise the default "Cannot blah blah" exception 100% of the time. The main purpose of TPersistent is the RTTI for published properties, by the way, and not the Assign method.