Define Class SOME_CLASS As CUSTOM Hidden ui_context ui_context = .null. Protected title_bar_region title_bar_region = .null. Procedure init Lparameters p_ui_context *!* This assertion guarantees that a ui_context exists and the type of the ui_context conforms to CONTAINER Assert Parameters()=1 Assert Inlist(p_ui_context.Class, 'grid', 'container', ...) Message 'Supplied ; ui_context does not conform to type CONTAINER.' Assert Inlist(p_ui_context.ParentClass, 'grid', 'container', ...) Message 'Supplied ; ui_context does not conform to type CONTAINER.' This.ui_context = p_ui_context This.ui_context.AddObject('vo_title_bar_region', 'CONTAINER') This.title_bar_region = CreateObject('EMPTY') With this.title_bar_region .AddProperty('back_color', This.vo_title_bar_region.BackColor) .AddProperty('back_style', This.vo_title_bar_region.BackStyle) Endwith Endproc EndDefineI stopped at two properties in the EMPTY class. In practice, there will be many more. This would allow me to expose only those properties of the visual object that I wish to expose, and at the same time control the visibility of those properties. Since ui_context is hidden, so are all of its contained visual objects, so the consumer of my class wouldn't be able to directly manipulate those objects. If only VFP allowed methods and events in the EMPTY class, a lot of problems would be solved.