# so was the bit about `ref` being generally associated with `method` only # accurate to convention? It seems that the compiler has everything it needs to do # this correctly without `ref` . type BaseClass = object of RootObj type_id: int member1: int member2: string SubClass = object of BaseClass member3: int method do_something(clean_water: BaseClass) {. base .}= echo clean_water method do_something(clean_water: SubClass) = echo "hi ", clean_water.member3 let some_obj = SubClass(type_id: 1, member1: 10, member2: "fail", member3: 7) some_obj.do_something() # You said that `ref` should be used when ref semantics are needed, what did you # mean by that? I figured that ref should be used for things you want on the heap # like stuff that grows and shrinks to arbitrary sizes, gets destroyed and created # irregularly or is just very big. If there is stuff with move semantics and the # gc I'll figure that out later.