change from block.call to block.yield
include options as parameter