refactor the block evaluation