loF = createobject("cFormbase") * as the parameter is set via .init, is the the class "concrete" ? It should work... loF.AddObject("oDynButton", "WhatAmI","ButtonClickDelegate") loF.Show() READ events define class WhatAmI as commandButton visible = .t. function init (tcFormClickmethod) if ! empty(m.tcFormClickmethod) = this.addproperty("cAbstractFormClickmethod", m.tcFormClickmethod) endif if !this.IamConcrete() return .f. else return dodefault() endif function click() return this.abstract_click() function abstract_click() && events call methods... return eval("thisform." + this.cAbstractFormClickmethod + "()") function IamConcrete() return Type("this.cAbstractFormClickmethod") = "C" and !empty(this.cAbstractFormClickmethod) enddefine define class IamPartiallyAbstract as WhatAmI cAbstractFormClickmethod = "" && fails in init enddefine define class IamClearlyConcrete as IamPartiallyAbstract cAbstractFormClickmethod = "ButtonClickDelegate" enddefine define class cFormbase as Form function ButtonClickDelegate() Wait window "Bye from " + program() = this.release() return enddefine