CLEAR ON ERROR ? MESSAGE() WITH CREATEOBJECT("Interface","SuperClass") .CALL ENDWITH ? WITH CREATEOBJECT("Interface","subClass") .CALL ENDWITH ON ERROR DEFINE CLASS Interface as container HIDDEN oClass PROCEDURE Init LPARAMETERS tcClass This.oClass=CREATEOBJECT(tcClass) ENDPROC PROCEDURE Call RETURN this.oClass.Call() ENDPROC ENDDEFINE DEFINE CLASS SuperClass as Interface hiddenproperty = 1 PROCEDURE Init() * ENDPROC PROCEDURE call ? "SuperClass CALL hiddenproperty IS PUBLIC HERE" ? this.hiddenproperty this.hiddenproperty = 3 ? this.hiddenproperty ENDPROC ENDDEFINE DEFINE CLASS subClass as SuperClass hiddenproperty = 2 * no need for hidden, as the interface is instanciated * and the interface doesn't show that property * HIDDEN hiddenproperty ENDDEFINEInstead of rediricting the call in each method of the interface class , you may use BINDEVENTS in the init of "Interface" to bind all calls of THIS... to THIS.oClass...