I want to pass a block to method foo then call method bar from foo and
have bar yield to the block, I also want to be able to call bar
directly with a block,  how to do this neatly.

e.g. I want to be able to do

foo { |baz| do stuff with baz }
bar { |baz| do other stuff with baz }

but when foo gets a block it passes it to bar in the background.

Thanks,
James