I agree with you (Gavin Kistner). The question is, what could you loose if self was always set as it is with class_eval, instance_eval, etc.? You could still do: >def create( name ) > person = Person.new( name ) > yield person > p person >end > >create( :gavin ){ |person| > person.age = 32 > person.grow_older >} as all the other things. For me the question is: What's the purpose of not always setting self to yield context? Vasco A. Silva -- Posted via http://www.ruby-forum.com/.