Sorry, missed this part : On 15/12/05, ajmayo / my-deja.com <ajmayo / my-deja.com> wrote: > It is also unclear, how, then, I pass down a block as an argument and > then in turn pass it again to a child routine. There are two ways to do this: the block variable way and the normal parameter way. If you want to pass it as a block (it has to be the last parameter) : def method other_parameters, &the_block use_the_block_as_a_regular_parameter_for_this_method(the_block) use_the_block_as_a_block_for_this_method(&the_block) end method param { |vars| block } If you want to pass it as a normal parameter (it doesn't have to be the last parameter) : def method other_parameters, the_parameter use_the_block_as_a_regular_parameter_for_this_method(the_parameter) use_the_block_as_a_block_for_this_method(&the_parameter) end my_proc = proc { |vars| block } method param, my_proc So, basically, & is the thing that makes a parameter the block (when you're defining the method and when you're calling it).