refactor and a block