use yield instead of blk.call

faster