When taking a `&block` argument, you should then use `block.call` so you actually use the block you captured.  If you want to use yield (because you're not passing the block to another method as `&block`) then use `if block_given?` and remove the `&block`.  Capturing the block with `&block` is more expensive than yielding (http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html), so if you don't need to pass the block along, just use `block_given?` and `yield`.