passed to the block