Hello... This is just an idea I've toyed with for an hour or two... What if Ruby had a method explicitly for "passing" a definition to the outer scope? (I have no idea how this might be implemented.) my_method do |x,y,z| # ... my_var = 123 # my_var is created here #... export :my_var end # Now this scope knows about my_var! puts my_var # 123 This would be a partial solution to the block problem... since one reason people pass existing variables into the |...| list is so that they can retrieve the values after the block exit. The thing exported might or might not be named in the list. Actually, I can't remember the other reasons right now for passing existing vars in... If it were earlier, maybe I could. Comments and criticisms? Hal