class.method() lparameters t1, t2, tpcount if vartype(tpcount) # 'N' ** object created from this class ** or sub-class with no code in method() tpcount = pcount() else ** object created from a sub-class ** with code in it's method() endif if tpcount = 2 ..... <code> endif sub-class.method() lparameters t1, t2, tpcount && no code in this one, so it just passes it on sub-sub-class.method() lparameters t1, t2, tpcount ..... <code> if vartype(tpcount) # 'N' ** object created from this class ** or sub-class with no code in method() tpcount = pcount() else ** object created from a sub-class of this class ** with code in it's method() endif dodefault( t1, t2, tpcount ) my1stObject = createobject( 'sub-class' ) = my1stObject.method( v1 ) && class.method() should receive tpcount=.F. and pcount()=1 my2ndObject = createobject( 'sub-sub-class' ) = my2ndObject.method( v1 ) && class.method() should have tpcount=1 = my2ndObject.method( v1, v2 ) && class.method() should have tpcount=2Since I would see that the 3rd parameter was named tpcount, it would remind me to check for tpcount passed from a future sub-class and pass tpcount or pcount() up the line.