ClassS *<-* setRefClass*(*'ClassS', fields = c*(* 'field.s' *)*, methods = list*(* initialize = *function**()* *{* *return**(*initFields*(*field.s = 0*))* *}* *)* *)* ClassM *<-* setRefClass*(*'ClassM', fields = c*(* 'field.m' *)*, methods = list*(* initialize = *function**()* *{* *return**(*initFields*(*field.m = 0*))* *}* *)* *)* ClassD *<-* setRefClass*(*'ClassD', contains = c*(* 'ClassS', 'ClassM' *)*, fields = c*(* 'field.d' *)*, methods = list*(* initialize = *function**()* *{* initFields*(*field.d = 0*)* *return**(*callSuper*())* *}* *)* *)* * * == Browse[2]> d = ClassD$new*()* Browse[2]> d$field.d; d$field.s; d$field.m [1] 0 [1] 0 An object of class "uninitializedField" Slot "field": [1] "field.m" Slot "className": [1] "ANY" Browse[2]> m == In other words, initialize isn't being called for M (these classes are named as such to indicate superclass, mixin, and derived). Is this a known problem, or am I missing something? -- Robert Tirrell | rpt@stanford.edu | (607) 437-6532 Program in Biomedical Informatics | Butte Lab | Stanford University [[alternative HTML version deleted]]