PROCEDURE Release *-- This is base class behavior. This.GarbageCollect() Release This PROCEDURE GarbageCollect *-- This is base class behavior. *-- If this object is some sort of container FOR EACH oControl IN This.Controls IF PEMSTATUS(oControl, "GarbageCollect", 5) oControl.GarbageCollect() ENDIF ENDFOR *-- Now this is instance behavior so *-- Your method starts mere with DoDefault() *-- Now clean up situational artifacts at this level This.oPointer1 = .NULL. This.oPointer2 = .NULL. PROCEDURE DESTROY This.GarbageCollect() && Only to be sure it gets called DoDefault()