updated decompose_blocksub