blockscan recursive type